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  }