11package cmd
22
33import (
4- "bytes"
5- "fmt"
6- "log"
7- "os/exec"
8- "path/filepath"
9- "strings"
10-
114 "github.com/meinto/glow"
125 "github.com/meinto/glow/pkg/cli/cmd/util"
13- "github.com/meinto/glow/semver"
146 "github.com/spf13/cobra"
157)
168
@@ -37,25 +29,14 @@ var releaseCmd = &cobra.Command{
3729 Short : "create a release branch" ,
3830 Args : cobra .MinimumNArgs (1 ),
3931 Run : func (cmd * cobra.Command , args []string ) {
40- version := args [0 ]
41-
4232 g , err := util .GetGitClient ()
4333 util .CheckForError (err , "GetGitClient" )
4434
45- var s semver.Service
46- if util .IsSemanticVersion (args [0 ]) {
47- pathToRepo , err := g .GitRepoPath ()
48- util .CheckForError (err , "semver GitRepoPath" )
49- s = semver .NewSemverService (
50- pathToRepo ,
51- "/bin/bash" ,
52- releaseCmdOptions .VersionFile ,
53- releaseCmdOptions .VersionFileType ,
54- )
55- v , err := s .GetNextVersion (args [0 ])
56- util .CheckForError (err , "semver GetNextVersion" )
57- version = v
58- }
35+ version , s := util .ProcessVersion (
36+ args [0 ],
37+ releaseCmdOptions .VersionFile ,
38+ releaseCmdOptions .VersionFileType ,
39+ )
5940
6041 release , err := glow .NewRelease (version )
6142 util .CheckForError (err , "NewRelease" )
@@ -74,74 +55,13 @@ var releaseCmd = &cobra.Command{
7455 PostRun : func (cmd * cobra.Command , args []string ) {
7556 version := args [0 ]
7657
77- g , err := util .GetGitClient ()
78- util .CheckForError (err , "GetGitClient" )
79-
80- if util .IsSemanticVersion (args [0 ]) {
81- pathToRepo , err := g .GitRepoPath ()
82- util .CheckForError (err , "semver GitRepoPath" )
83- s := semver .NewSemverService (
84- pathToRepo ,
85- "/bin/bash" ,
86- releaseCmdOptions .VersionFile ,
87- releaseCmdOptions .VersionFileType ,
88- )
89- v , err := s .GetCurrentVersion ()
90- util .CheckForError (err , "semver GetNextVersion" )
91- version = v
92- }
93-
94- if releaseCmdOptions .PostReleaseScript != "" {
95- postRelease (version )
96- }
97- if len (releaseCmdOptions .PostReleaseCommand ) > 0 {
98- for _ , command := range releaseCmdOptions .PostReleaseCommand {
99- execute (version , command )
100- }
101- }
102-
103- if releaseCmdOptions .Push {
104- err = g .AddAll ()
105- util .CheckForError (err , "AddAll" )
106-
107- err = g .Commit ("[glow] Add post release changes" )
108- util .CheckForError (err , "Commit" )
109-
110- err = g .Push (true )
111- util .CheckForError (err , "Push" )
112- }
58+ util .PostRunWithVersion (
59+ version ,
60+ releaseCmdOptions .VersionFile ,
61+ releaseCmdOptions .VersionFileType ,
62+ releaseCmdOptions .PostReleaseScript ,
63+ releaseCmdOptions .PostReleaseCommand ,
64+ releaseCmdOptions .Push ,
65+ )
11366 },
11467}
115-
116- func postRelease (version string ) {
117- pathToFile , err := filepath .Abs (releaseCmdOptions .PostReleaseScript )
118- if err != nil {
119- log .Println ("cannot find post-release script" , err )
120- }
121- cmd := exec .Command (pathToFile , version )
122- var out bytes.Buffer
123- cmd .Stdout = & out
124- err = cmd .Run ()
125- if err != nil {
126- log .Println ("error while executing post-release script" , err )
127- }
128- log .Println ("post release:" )
129- log .Println (out .String ())
130- }
131-
132- func execute (version , command string ) {
133- cmdString := string (command )
134- if strings .Contains (command , "%s" ) {
135- cmdString = fmt .Sprintf (command , version )
136- }
137- cmd := exec .Command ("/bin/bash" , "-c" , cmdString )
138- var stdout , stderr bytes.Buffer
139- cmd .Stderr = & stderr
140- cmd .Stdout = & stdout
141- err := cmd .Run ()
142- if err != nil {
143- log .Println ("error while executing post-release script" , err .Error (), stderr .String ())
144- }
145- log .Println ("post release:" )
146- log .Println (stdout .String ())
147- }
0 commit comments