Skip to content

Commit 6f6d4b9

Browse files
authored
Changelog builder improvements (#36)
1 parent f381361 commit 6f6d4b9

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

cmd/build.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package cmd
66

77
import (
88
"fmt"
9+
"log"
910

1011
"github.com/elastic/elastic-agent-changelog-tool/internal/changelog"
1112
"github.com/spf13/afero"
@@ -26,7 +27,12 @@ func BuildCmd(fs afero.Fs) *cobra.Command {
2627
src := viper.GetString("fragment_location")
2728
dest := viper.GetString("changelog_destination")
2829

29-
b := changelog.NewBuilder(fs, filename, "8.2.1", src, dest)
30+
version, err := cmd.Flags().GetString("version")
31+
if err != nil {
32+
return fmt.Errorf("error parsing flag 'version': %w", err)
33+
}
34+
35+
b := changelog.NewBuilder(fs, filename, version, src, dest)
3036

3137
if err := b.Build(); err != nil {
3238
return fmt.Errorf("cannot build changelog: %w", err)
@@ -36,5 +42,12 @@ func BuildCmd(fs afero.Fs) *cobra.Command {
3642
},
3743
}
3844

45+
buildCmd.Flags().String("version", "", "The version of the consolidated changelog being created")
46+
err := buildCmd.MarkFlagRequired("version")
47+
if err != nil {
48+
// NOTE: the only case this error appear is when the flag is not defined
49+
log.Fatal(err)
50+
}
51+
3952
return buildCmd
4053
}

cmd/build_test.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,26 @@ package cmd_test
66

77
import (
88
"bytes"
9+
"errors"
910
"fmt"
11+
"io/ioutil"
12+
"path"
1013
"testing"
1114
"time"
1215

1316
"github.com/elastic/elastic-agent-changelog-tool/cmd"
1417
"github.com/elastic/elastic-agent-changelog-tool/internal/changelog"
1518
"github.com/elastic/elastic-agent-changelog-tool/internal/changelog/fragment"
19+
"github.com/elastic/elastic-agent-changelog-tool/internal/settings"
1620
"github.com/spf13/afero"
1721
"github.com/spf13/viper"
1822
"github.com/stretchr/testify/require"
1923
"gopkg.in/yaml.v3"
2024
)
2125

22-
func TestBuildCmd_default(t *testing.T) {
26+
func TestBuildCmd(t *testing.T) {
27+
settings.Init()
28+
2329
testFs := afero.NewMemMapFs()
2430
c := fragment.NewCreator(testFs, viper.GetString("fragment_location"))
2531
err := c.Create("foo")
@@ -31,21 +37,37 @@ func TestBuildCmd_default(t *testing.T) {
3137

3238
cmd := cmd.BuildCmd(testFs)
3339

40+
expectedVersion := "0.0.0"
41+
cmd.SetArgs([]string{
42+
fmt.Sprintf("--version=%s", expectedVersion),
43+
})
44+
3445
b := new(bytes.Buffer)
3546
cmd.SetOut(b)
3647

3748
err = cmd.Execute()
3849
require.Nil(t, err)
3950

40-
content, err := afero.ReadFile(testFs, viper.GetString("changelog_destination"))
51+
changelogFile := path.Join(viper.GetString("changelog_destination"), viper.GetString("changelog_filename"))
52+
content, err := afero.ReadFile(testFs, changelogFile)
4153
require.Nil(t, err)
4254

4355
ch := changelog.Changelog{}
4456
err = yaml.Unmarshal(content, &ch)
4557
require.Nil(t, err)
4658

47-
fmt.Println(ch)
48-
49-
require.Equal(t, "8.2.1", ch.Version)
59+
require.Equal(t, expectedVersion, ch.Version)
5060
require.Len(t, ch.Entries, 2)
5161
}
62+
63+
func TestBuildCmd_missingFlag(t *testing.T) {
64+
testFs := afero.NewMemMapFs()
65+
cmd := cmd.BuildCmd(testFs)
66+
67+
cmd.SetOut(ioutil.Discard)
68+
cmd.SetErr(ioutil.Discard)
69+
70+
err := cmd.Execute()
71+
expectedErr := errors.New("required flag(s) \"version\" not set")
72+
require.Error(t, expectedErr, err)
73+
}

internal/changelog/builder.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,7 @@ func (b Builder) Build() error {
7777
return fmt.Errorf("cannot marshall changelog: %w", err)
7878
}
7979

80-
return afero.WriteFile(b.fs, path.Join(b.dest, b.filename), data, changelogFilePerm)
80+
outFile := path.Join(b.dest, b.filename)
81+
log.Printf("saving changelog in %s\n", outFile)
82+
return afero.WriteFile(b.fs, outFile, data, changelogFilePerm)
8183
}

0 commit comments

Comments
 (0)