github.com/azunymous/cdx@v0.0.0-20201122180449-fbb46cc4d252/vcs/gogit/promote.go (about) 1 package gogit 2 3 import ( 4 "errors" 5 "github.com/sirupsen/logrus" 6 ) 7 8 func (r *Repo) Promote(module, stage string) error { 9 tagsForModule, err := r.TagsForHead(module, stage) 10 if err != nil { 11 return err 12 } 13 if len(tagsForModule) > 0 { 14 r.log.Printf("Already tagged with %s, continuing", tagsForModule[0]) 15 return nil 16 } 17 18 tagsForHead, err := r.TagsForHead(module) 19 if err != nil { 20 return err 21 } 22 23 if len(tagsForHead) == 0 { 24 return errors.New("un-versioned commit") 25 } 26 27 if len(tagsForHead) > 1 { 28 logrus.Warnln("Multiple version tags on same commit for " + module) 29 } 30 31 current := tagsForHead[len(tagsForHead)-1] 32 promoted := current + "+" + stage 33 r.log.Printf("Promoting version %s -> %s", current, promoted) 34 // 35 revision, err := r.gitRepo.ResolveRevision("HEAD") 36 if err != nil { 37 return err 38 } 39 40 _, err = r.gitRepo.CreateTag(promoted, *revision, nil) 41 return err 42 }