Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ Flags:
--skip-existing Skip upload if release exists
-t, --token string GitHub Auth Token
--make-release-latest bool Mark the created GitHub release as 'latest' (default "true")
--pre-release Mark the release as a pre-release
--packages-with-index Host the package files in the GitHub Pages branch

Global Flags:
Expand Down
1 change: 1 addition & 0 deletions cr/cmd/upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,5 @@ func init() {
uploadCmd.Flags().Bool("push", false, "Push the chart package to the GitHub Pages branch (must not be set if --pr is set)")
uploadCmd.Flags().Bool("pr", false, "Create a pull request for the chart package against the GitHub Pages branch (must not be set if --push is set)")
uploadCmd.Flags().Bool("packages-with-index", false, "Host the package files in the GitHub Pages branch")
uploadCmd.Flags().Bool("pre-release", false, "Mark the release as a pre-release")
}
11 changes: 11 additions & 0 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ type Options struct {
ReleaseNotesFile string `mapstructure:"release-notes-file"`
GenerateReleaseNotes bool `mapstructure:"generate-release-notes"`
MakeReleaseLatest bool `mapstructure:"make-release-latest"`
PreRelease bool `mapstructure:"pre-release"`
PackagesWithIndex bool `mapstructure:"packages-with-index"`
}

Expand Down Expand Up @@ -108,6 +109,16 @@ func LoadConfiguration(cfgFile string, cmd *cobra.Command, requiredFlags []strin
return nil, errors.New("specify either --push or --pr, but not both")
}

if opts.PreRelease {
if cmd.Flags().Changed("make-release-latest") && opts.MakeReleaseLatest {
return nil, errors.New("specify either --pre-release or --make-release-latest, but not both")
}
if opts.MakeReleaseLatest {
fmt.Println("Pre-release is set, disabling make-release-latest")
opts.MakeReleaseLatest = false
}
}

elem := reflect.ValueOf(opts).Elem()
for _, requiredFlag := range requiredFlags {
fieldName := kebabCaseToTitleCamelCase(requiredFlag)
Expand Down
2 changes: 2 additions & 0 deletions pkg/github/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ type Release struct {
Commit string
GenerateReleaseNotes bool
MakeLatest string
PreRelease bool
}

type Asset struct {
Expand Down Expand Up @@ -111,6 +112,7 @@ func (c *Client) CreateRelease(_ context.Context, input *Release) error {
TargetCommitish: &input.Commit,
GenerateReleaseNotes: &input.GenerateReleaseNotes,
MakeLatest: &input.MakeLatest,
Prerelease: &input.PreRelease,
}

release, _, err := c.Repositories.CreateRelease(context.TODO(), c.owner, c.repo, req)
Expand Down
1 change: 1 addition & 0 deletions pkg/releaser/releaser.go
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ func (r *Releaser) CreateReleases() error {
Commit: r.config.Commit,
GenerateReleaseNotes: r.config.GenerateReleaseNotes,
MakeLatest: strconv.FormatBool(r.config.MakeReleaseLatest),
PreRelease: r.config.PreRelease,
}
provFile := fmt.Sprintf("%s.prov", p)
if _, err := os.Stat(provFile); err == nil {
Expand Down
25 changes: 25 additions & 0 deletions pkg/releaser/releaser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
version string
commit string
latest string
preRelease bool
Releaser *Releaser
error bool
}{
Expand All @@ -372,6 +373,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
version: "0.1.0",
commit: "",
latest: "true",
preRelease: false,
Releaser: &Releaser{
config: &config.Options{
PackagePath: "testdata/does-not-exist",
Expand All @@ -389,6 +391,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
version: "0.1.0",
commit: "",
latest: "true",
preRelease: false,
Releaser: &Releaser{
config: &config.Options{
PackagePath: "testdata/release-packages",
Expand All @@ -406,6 +409,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
version: "0.1.0",
commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
latest: "true",
preRelease: false,
Releaser: &Releaser{
config: &config.Options{
PackagePath: "testdata/release-packages",
Expand All @@ -423,6 +427,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
version: "0.1.0",
commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
latest: "true",
preRelease: false,
Releaser: &Releaser{
config: &config.Options{
PackagePath: "testdata/release-packages",
Expand All @@ -434,6 +439,25 @@ func TestReleaser_CreateReleases(t *testing.T) {
},
error: false,
},
{
name: "valid-package-with-pre-release",
packagePath: "testdata/release-packages",
chart: "test-chart",
version: "0.1.0",
commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
latest: "true",
preRelease: true,
Releaser: &Releaser{
config: &config.Options{
PackagePath: "testdata/release-packages",
Commit: "5e239bd19fbefb9eb0181ecf0c7ef73b8fe2753c",
PackagesWithIndex: false,
MakeReleaseLatest: true,
PreRelease: true,
},
},
error: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down Expand Up @@ -466,6 +490,7 @@ func TestReleaser_CreateReleases(t *testing.T) {
assert.Equal(t, assetPath, fakeGitHub.release.Assets[0].Path)
assert.Equal(t, tt.commit, fakeGitHub.release.Commit)
assert.Equal(t, tt.latest, fakeGitHub.release.MakeLatest)
assert.Equal(t, tt.preRelease, fakeGitHub.release.PreRelease)
assert.Equal(t, tt.Releaser.config.Commit, fakeGitHub.release.Commit)
if !tt.Releaser.config.PackagesWithIndex {
fakeGit.AssertNumberOfCalls(t, "AddWorktree", 0)
Expand Down