@@ -32,7 +32,11 @@ func NewTagCmd(v *viper.Viper) (*cobra.Command, error) {
3232 printStack (err )
3333 os .Exit (1 )
3434 }
35- if err := tagger .Tag (); err != nil {
35+ requestedVersion , previousVersion , err := tagger .Tag ()
36+ if requestedVersion != nil && previousVersion != nil {
37+ fmt .Fprintf (os .Stdout , "%s,%s" , requestedVersion .String (), previousVersion .String ())
38+ }
39+ if err != nil {
3640 if errors .Is (ErrNoNewVersion , err ) {
3741 os .Exit (EXIT_CODE_NO_NEW_VERSION )
3842 }
@@ -147,25 +151,25 @@ type Tagger struct {
147151 Version string `mapstructure:"version" validate:"required"`
148152}
149153
150- func (t * Tagger ) Tag () error {
154+ func (t * Tagger ) Tag () ( requestedVersion * semver. Version , previousVersion * semver. Version , err error ) {
151155 repo , err := git .PlainOpen ("." )
152156 if err != nil {
153- return errors .New (err )
157+ return nil , nil , errors .New (err )
154158 }
155159
156- requestedVersion , err : = semver .NewVersion (t .Version )
160+ requestedVersion , err = semver .NewVersion (t .Version )
157161 if err != nil {
158162 logger .Err (err ).Str ("requested-version" , string (t .Version )).Msg ("error when constructing semver from version config" )
159- return errors .New (err )
163+ return requestedVersion , nil , errors .New (err )
160164 }
161165
162- largestTag , err : = t .largestTagSemver (repo , requestedVersion .Major ())
166+ previousVersion , err = t .largestTagSemver (repo , requestedVersion .Major ())
163167 if err != nil {
164- return err
168+ return requestedVersion , previousVersion , err
165169 }
166- taggedVersion , err := semver .NewVersion (largestTag .String ())
170+ taggedVersion , err := semver .NewVersion (previousVersion .String ())
167171 if err != nil {
168- return errors .New (err )
172+ return requestedVersion , previousVersion , errors .New (err )
169173 }
170174 logger := logger .With ().
171175 Stringer ("tagged-version" , taggedVersion ).Logger ()
@@ -178,28 +182,28 @@ func (t *Tagger) Tag() error {
178182 if ! requestedVersion .GreaterThan (taggedVersion ) {
179183 logger .Info ().
180184 Msg ("VERSION is not greater than latest git tag, nothing to do." )
181- return ErrNoNewVersion
185+ return requestedVersion , previousVersion , ErrNoNewVersion
182186 }
183187
184188 worktree , err := repo .Worktree ()
185189 if err != nil {
186- return errors .New (err )
190+ return requestedVersion , previousVersion , errors .New (err )
187191 }
188192
189193 status , err := worktree .Status ()
190194 if err != nil {
191- return errors .New (err )
195+ return requestedVersion , previousVersion , errors .New (err )
192196 }
193197 if ! status .IsClean () {
194198 logger .Error ().Msg ("git is in a dirty state, can't tag." )
195199 fmt .Println (status .String ())
196- return errors .New ("dirty git state" )
200+ return requestedVersion , previousVersion , errors .New ("dirty git state" )
197201 }
198202
199203 if err := t .createTag (repo , fmt .Sprintf ("v%s" , requestedVersion .String ())); err != nil {
200- return err
204+ return requestedVersion , previousVersion , err
201205 }
202206 logger .Info ().Msg ("created new tag. Push to origin still required." )
203207
204- return nil
208+ return requestedVersion , previousVersion , nil
205209}
0 commit comments