From a2f25f042eb53e4014f933e51f156642f0e9beac Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Wed, 18 Oct 2023 16:09:13 +0200 Subject: [PATCH] feat: add flag to create local tag only (#14) --- app/app.go | 8 ++++++-- app/commands/tag.go | 9 +++++++-- app/config.go | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/app.go b/app/app.go index 8ff60cc..b3aed38 100644 --- a/app/app.go +++ b/app/app.go @@ -152,19 +152,23 @@ func (g GitSV) Commit(header, body, footer string) error { } // Tag create a git tag. -func (g GitSV) Tag(version semver.Version, annotate bool) (string, error) { +func (g GitSV) Tag(version semver.Version, annotate, local bool) (string, error) { tag := fmt.Sprintf(*g.Config.Tag.Pattern, version.Major(), version.Minor(), version.Patch()) tagMsg := fmt.Sprintf("Version %d.%d.%d", version.Major(), version.Minor(), version.Patch()) tagCommand := exec.Command("git", "tag", tag) if annotate { - tagCommand = exec.Command("git", "tag", "-a", tag, "-m", tagMsg) + tagCommand.Args = append(tagCommand.Args, "-a", "-m", tagMsg) } if out, err := tagCommand.CombinedOutput(); err != nil { return tag, combinedOutputErr(err, out) } + if local { + return tag, nil + } + pushCommand := exec.Command("git", "push", "origin", tag) if out, err := pushCommand.CombinedOutput(); err != nil { return tag, combinedOutputErr(err, out) diff --git a/app/commands/tag.go b/app/commands/tag.go index c6fba46..fa1e03e 100644 --- a/app/commands/tag.go +++ b/app/commands/tag.go @@ -14,9 +14,14 @@ func TagFlags(settings *app.TagSettings) []cli.Flag { &cli.BoolFlag{ Name: "annotate", Aliases: []string{"a"}, - Usage: "ignore size parameter, get changelog for every tag", + Usage: "make an annotated tag object", Destination: &settings.Annotate, }, + &cli.BoolFlag{ + Name: "local", + Usage: "create local tag only", + Destination: &settings.Local, + }, } } @@ -41,7 +46,7 @@ func TagHandler(g app.GitSV, settings *app.TagSettings) cli.ActionFunc { return nil } - tagname, err := g.Tag(*nextVer, settings.Annotate) + tagname, err := g.Tag(*nextVer, settings.Annotate, settings.Local) if err != nil { return fmt.Errorf("error generating tag version: %s: %w", nextVer.String(), err) } diff --git a/app/config.go b/app/config.go index 2484cc1..b819896 100644 --- a/app/config.go +++ b/app/config.go @@ -51,6 +51,7 @@ type CommitLogSettings struct { type TagSettings struct { Annotate bool + Local bool } // Config cli yaml config.