Add OutputPath.ReplaceExtension()

Add a helper method that returns a new OutputPath with the
extension replaced.

Test: paths_test.go
Change-Id: I7f93b3475031a19b53652022740488373a1b7d97
This commit is contained in:
Colin Cross 2019-02-11 14:14:16 -08:00
parent c7ed004dd3
commit 8854a5a805
2 changed files with 22 additions and 0 deletions

View file

@ -697,6 +697,16 @@ func (p OutputPath) Join(ctx PathContext, paths ...string) OutputPath {
return p.withRel(path)
}
// ReplaceExtension creates a new OutputPath with the extension replaced with ext.
func (p OutputPath) ReplaceExtension(ctx PathContext, ext string) OutputPath {
if strings.Contains(ext, "/") {
reportPathErrorf(ctx, "extension %q cannot contain /", ext)
}
ret := PathForOutput(ctx, pathtools.ReplaceExtension(p.path, ext))
ret.rel = p.rel
return ret
}
// PathForIntermediates returns an OutputPath representing the top-level
// intermediates directory.
func PathForIntermediates(ctx PathContext, paths ...string) OutputPath {

View file

@ -691,3 +691,15 @@ func TestPathForSource(t *testing.T) {
})
}
}
func ExampleOutputPath_ReplaceExtension() {
ctx := &configErrorWrapper{
config: TestConfig("out", nil),
}
p := PathForOutput(ctx, "system/framework/boot.art")
p2 := p.ReplaceExtension(ctx, "oat")
fmt.Println(p, p2)
// Output:
// out/system/framework/boot.art out/system/framework/boot.oat
}