xref: /aosp_15_r20/build/blueprint/pathtools/lists.go (revision 1fa6dee971e1612fa5cc0aa5ca2d35a22e2c34a3)
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