github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/releases.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 6 "github.com/drycc/controller-sdk-go/releases" 7 ) 8 9 // ReleasesList lists an app's releases. 10 func (d *DryccCmd) ReleasesList(appID string, results int) error { 11 s, appID, err := load(d.ConfigFile, appID) 12 13 if err != nil { 14 return err 15 } 16 17 if results == defaultLimit { 18 results = s.Limit 19 } 20 21 releases, count, err := releases.List(s.Client, appID, results) 22 if d.checkAPICompatibility(s.Client, err) != nil { 23 return err 24 } 25 if count == 0 { 26 d.Println(fmt.Sprintf("No releases found in %s app.", appID)) 27 } else { 28 table := d.getDefaultFormatTable([]string{"UUID", "OWNER", "VERSION", "CREATED", "SUMMARY"}) 29 for _, r := range releases { 30 summary := r.Summary 31 if len(summary) > 64 { 32 summary = fmt.Sprintf("%s[...]", summary[:64]) 33 } 34 table.Append([]string{r.UUID, r.Owner, fmt.Sprintf("v%d", r.Version), r.Created, summary}) 35 } 36 table.Render() 37 } 38 return nil 39 } 40 41 // ReleasesInfo prints info about a specific release. 42 func (d *DryccCmd) ReleasesInfo(appID string, version int) error { 43 s, appID, err := load(d.ConfigFile, appID) 44 45 if err != nil { 46 return err 47 } 48 49 r, err := releases.Get(s.Client, appID, version) 50 if d.checkAPICompatibility(s.Client, err) != nil { 51 return err 52 } 53 table := d.getDefaultFormatTable([]string{}) 54 table.Append([]string{"App:", r.App}) 55 table.Append([]string{"UUID:", r.UUID}) 56 table.Append([]string{"Owner:", r.Owner}) 57 table.Append([]string{"Build:", r.Build}) 58 table.Append([]string{"Config:", r.Config}) 59 table.Append([]string{"Created:", r.Created}) 60 table.Append([]string{"Updated:", r.Updated}) 61 table.Append([]string{"Summary:", r.Summary}) 62 table.Append([]string{"Version:", fmt.Sprintf("v%v", r.Version)}) 63 table.Render() 64 return nil 65 } 66 67 // ReleasesRollback rolls an app back to a previous release. 68 func (d *DryccCmd) ReleasesRollback(appID string, version int) error { 69 s, appID, err := load(d.ConfigFile, appID) 70 71 if err != nil { 72 return err 73 } 74 75 if version == -1 { 76 d.Print("Rolling back one release... ") 77 } else { 78 d.Printf("Rolling back to v%d... ", version) 79 } 80 81 quit := progress(d.WOut) 82 newVersion, err := releases.Rollback(s.Client, appID, version) 83 quit <- true 84 <-quit 85 if d.checkAPICompatibility(s.Client, err) != nil { 86 return err 87 } 88 89 d.Printf("done, v%d\n", newVersion) 90 91 return nil 92 }