1*1fa6dee9SAndroid Build Coastguard Worker// Copyright 2014 Google Inc. All rights reserved. 2*1fa6dee9SAndroid Build Coastguard Worker// 3*1fa6dee9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*1fa6dee9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*1fa6dee9SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*1fa6dee9SAndroid Build Coastguard Worker// 7*1fa6dee9SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*1fa6dee9SAndroid Build Coastguard Worker// 9*1fa6dee9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*1fa6dee9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*1fa6dee9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*1fa6dee9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*1fa6dee9SAndroid Build Coastguard Worker// limitations under the License. 14*1fa6dee9SAndroid Build Coastguard Worker 15*1fa6dee9SAndroid Build Coastguard Workerpackage pathtools 16*1fa6dee9SAndroid Build Coastguard Worker 17*1fa6dee9SAndroid Build Coastguard Workerimport ( 18*1fa6dee9SAndroid Build Coastguard Worker "path/filepath" 19*1fa6dee9SAndroid Build Coastguard Worker "strings" 20*1fa6dee9SAndroid Build Coastguard Worker) 21*1fa6dee9SAndroid Build Coastguard Worker 22*1fa6dee9SAndroid Build Coastguard Worker// PrefixPaths returns a list of paths consisting of prefix joined with each 23*1fa6dee9SAndroid Build Coastguard Worker// element of paths. The resulting paths are "clean" in the filepath.Clean 24*1fa6dee9SAndroid Build Coastguard Worker// sense. 25*1fa6dee9SAndroid Build Coastguard Workerfunc PrefixPaths(paths []string, prefix string) []string { 26*1fa6dee9SAndroid Build Coastguard Worker result := make([]string, len(paths)) 27*1fa6dee9SAndroid Build Coastguard Worker for i, path := range paths { 28*1fa6dee9SAndroid Build Coastguard Worker result[i] = filepath.Join(prefix, path) 29*1fa6dee9SAndroid Build Coastguard Worker } 30*1fa6dee9SAndroid Build Coastguard Worker return result 31*1fa6dee9SAndroid Build Coastguard Worker} 32*1fa6dee9SAndroid Build Coastguard Worker 33*1fa6dee9SAndroid Build Coastguard Workerfunc ReplaceExtensions(paths []string, extension string) []string { 34*1fa6dee9SAndroid Build Coastguard Worker result := make([]string, len(paths)) 35*1fa6dee9SAndroid Build Coastguard Worker for i, path := range paths { 36*1fa6dee9SAndroid Build Coastguard Worker result[i] = ReplaceExtension(path, extension) 37*1fa6dee9SAndroid Build Coastguard Worker } 38*1fa6dee9SAndroid Build Coastguard Worker return result 39*1fa6dee9SAndroid Build Coastguard Worker} 40*1fa6dee9SAndroid Build Coastguard Worker 41*1fa6dee9SAndroid Build Coastguard Worker// ReplaceExtension changes the file extension. If the file does not have an 42*1fa6dee9SAndroid Build Coastguard Worker// extension, the new extension is appended. 43*1fa6dee9SAndroid Build Coastguard Workerfunc ReplaceExtension(path string, extension string) string { 44*1fa6dee9SAndroid Build Coastguard Worker oldExt := filepath.Ext(path) 45*1fa6dee9SAndroid Build Coastguard Worker if oldExt != "" { 46*1fa6dee9SAndroid Build Coastguard Worker path = strings.TrimSuffix(path, oldExt) 47*1fa6dee9SAndroid Build Coastguard Worker } 48*1fa6dee9SAndroid Build Coastguard Worker return path + "." + extension 49*1fa6dee9SAndroid Build Coastguard Worker} 50