From 01266420d6876f9d5cd3e6801643315506565a0c Mon Sep 17 00:00:00 2001 From: Chrstopher Hunter <8398225+crhntr@users.noreply.github.com> Date: Wed, 24 Jul 2024 15:13:46 -0700 Subject: [PATCH] feat(bake): generate better file names fixes: #437 --- internal/commands/bake.go | 22 ++++++------- internal/commands/bake_test.go | 56 ++++++++++++++++++++++++++-------- 2 files changed, 52 insertions(+), 26 deletions(-) diff --git a/internal/commands/bake.go b/internal/commands/bake.go index 00de823b..71ffb5d6 100644 --- a/internal/commands/bake.go +++ b/internal/commands/bake.go @@ -348,27 +348,23 @@ func (b *Bake) loadFlags(args []string) error { } if shouldReadVersionFile(b, args) { - fileInfo, err := b.fs.Stat("version") - // TODO: test this - if fileInfo != nil && err == nil { - var file File - file, err = b.fs.Open(fileInfo.Name()) - if err != nil && file == nil { - return err - } + file, err := b.fs.Open("version") + if err == nil { defer closeAndIgnoreError(file) - - versionBuf := make([]byte, fileInfo.Size()) - _, _ = file.Read(versionBuf) + versionBuf, _ := io.ReadAll(file) b.Options.Version = strings.TrimSpace(string(versionBuf)) } } if shouldGenerateTileFileName(b, args) { - b.Options.OutputFile = "tile.pivotal" + prefix := "tile" + if b.Options.TileName != "" { + prefix = b.Options.TileName + } if b.Options.Version != "" { - b.Options.OutputFile = "tile-" + b.Options.Version + ".pivotal" + prefix += "-" + b.Options.Version } + b.Options.OutputFile = prefix + ".pivotal" } if shouldNotUseDefaultKilnfileFlag(args) { diff --git a/internal/commands/bake_test.go b/internal/commands/bake_test.go index 32036a98..1bf2f6d8 100644 --- a/internal/commands/bake_test.go +++ b/internal/commands/bake_test.go @@ -10,6 +10,9 @@ import ( "testing" "time" + "github.com/go-git/go-billy/v5" + "github.com/go-git/go-billy/v5/memfs" + "github.com/pivotal-cf/kiln/pkg/cargo" "github.com/pivotal-cf/kiln/pkg/bake" @@ -51,7 +54,8 @@ var _ = Describe("Bake", func() { fakeTileWriter *fakes.TileWriter fakeChecksummer *fakes.Checksummer - fakeFilesystem *fakes.FileSystem + fakeFilesystem billy.Filesystem + fakeHomeDirFunc func() (string, error) otherReleasesDirectory string @@ -97,15 +101,14 @@ var _ = Describe("Bake", func() { fakeJobsService = &fakes.MetadataTemplatesParser{} fakePropertiesService = &fakes.MetadataTemplatesParser{} fakeRuntimeConfigsService = &fakes.MetadataTemplatesParser{} - fakeFilesystem = &fakes.FileSystem{} - fakeVersionInfo := &fakes.FileInfo{} - fileVersion := "some-version" - fakeVersionInfo.SizeReturns(int64(len(fileVersion))) - fakeVersionInfo.NameReturns("version") - fakeFilesystem.StatReturns(fakeVersionInfo, nil) - result1 := &fakes.File{} - result1.ReadReturns(0, nil) - fakeFilesystem.OpenReturns(result1, nil) + + { + fakeFilesystem = memfs.New() + file, _ := fakeFilesystem.Create("version") + _, _ = file.Write([]byte("1.2.3")) + _ = file.Close() + } + fakeHomeDirFunc = func() (string, error) { return "/home/", nil } @@ -399,13 +402,40 @@ var _ = Describe("Bake", func() { }) FContext("when the output flag is not set", func() { - When("the tile-name flag is not provided", func() { + When("no version is provided", func() { It("uses the tile as the filename prefix", func() { - err := bake.Execute([]string{}) + _ = fakeFilesystem.Remove("version") + err := bake.Execute([]string{ + "--metadata", "some-metadata", + }) + Expect(err).To(Not(HaveOccurred())) + Expect(fakeTileWriter.WriteCallCount()).To(Equal(1)) + _, input := fakeTileWriter.WriteArgsForCall(0) + Expect(input.OutputFile).To(Equal(filepath.Join("tile.pivotal"))) + }) + }) + When("the version flag is provided", func() { + It("uses the tile as the filename prefix", func() { + err := bake.Execute([]string{ + "--metadata", "some-metadata", + "--version", "some-version", + }) + Expect(err).To(Not(HaveOccurred())) + Expect(fakeTileWriter.WriteCallCount()).To(Equal(1)) + _, input := fakeTileWriter.WriteArgsForCall(0) + Expect(input.OutputFile).To(Equal(filepath.Join("tile-some-version.pivotal"))) + }) + }) + When("the tile name is provided", func() { + It("uses the tile as the filename prefix", func() { + err := bake.Execute([]string{ + "--metadata", "some-metadata", + "--tile-name", "p-rune", + }) Expect(err).To(Not(HaveOccurred())) Expect(fakeTileWriter.WriteCallCount()).To(Equal(1)) _, input := fakeTileWriter.WriteArgsForCall(0) - Expect(input.OutputFile).To(Equal(filepath.Join("tile-v1.2.3.pivotal"))) + Expect(input.OutputFile).To(Equal(filepath.Join("p-rune-1.2.3.pivotal"))) }) }) })