github.com/gofiber/fiber-cli@v0.0.3/cmd/upgrade.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/muesli/termenv"
     8  
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  var upgradeCmd = &cobra.Command{
    13  	Use:   "upgrade",
    14  	Short: "Upgrade Fiber cli if a newer version is available",
    15  	RunE:  upgradeRunE,
    16  }
    17  
    18  func upgradeRunE(cmd *cobra.Command, _ []string) error {
    19  	cliLatestVersion, err := latestVersion(true)
    20  	if err != nil {
    21  		return err
    22  	}
    23  
    24  	if version != cliLatestVersion {
    25  		upgrade(cmd, cliLatestVersion)
    26  	} else {
    27  		msg := fmt.Sprintf("Currently Fiber cli is the latest version %s.", cliLatestVersion)
    28  		cmd.Println(termenv.String(msg).
    29  			Foreground(termenv.ANSIBrightBlue))
    30  	}
    31  
    32  	return nil
    33  }
    34  
    35  func upgrade(cmd *cobra.Command, cliLatestVersion string) {
    36  	upgrader := execCommand("go", "get", "-u", "github.com/gofiber/fiber-cli/fiber")
    37  	upgrader.Env = append(upgrader.Env, os.Environ()...)
    38  	upgrader.Env = append(upgrader.Env, "GO111MODULE=off")
    39  	if err := runCmd(upgrader); err != nil {
    40  		cmd.Printf("fiber: failed to upgrade: %v", err)
    41  		return
    42  	}
    43  
    44  	success := fmt.Sprintf("Done! Fiber-cli is now at v%s!", cliLatestVersion)
    45  	cmd.Println(termenv.String(success).Foreground(termenv.ANSIBrightGreen))
    46  }