github.com/Finschia/finschia-sdk@v0.48.1/version/command.go (about)

     1  package version
     2  
     3  import (
     4  	"encoding/json"
     5  	"strings"
     6  
     7  	"github.com/Finschia/ostracon/libs/cli"
     8  	"github.com/spf13/cobra"
     9  	yaml "gopkg.in/yaml.v2"
    10  )
    11  
    12  const flagLong = "long"
    13  
    14  // NewVersionCommand returns a CLI command to interactively print the application binary version information.
    15  func NewVersionCommand() *cobra.Command {
    16  	cmd := &cobra.Command{
    17  		Use:   "version",
    18  		Short: "Print the application binary version information",
    19  		RunE: func(cmd *cobra.Command, _ []string) error {
    20  			verInfo := NewInfo()
    21  
    22  			if long, _ := cmd.Flags().GetBool(flagLong); !long {
    23  				cmd.Println(verInfo.Version)
    24  				return nil
    25  			}
    26  
    27  			var (
    28  				bz  []byte
    29  				err error
    30  			)
    31  
    32  			output, _ := cmd.Flags().GetString(cli.OutputFlag)
    33  			switch strings.ToLower(output) {
    34  			case "json":
    35  				bz, err = json.Marshal(verInfo)
    36  
    37  			default:
    38  				bz, err = yaml.Marshal(&verInfo)
    39  			}
    40  
    41  			if err != nil {
    42  				return err
    43  			}
    44  
    45  			cmd.Println(string(bz))
    46  			return nil
    47  		},
    48  	}
    49  
    50  	cmd.Flags().Bool(flagLong, false, "Print long version information")
    51  	cmd.Flags().StringP(cli.OutputFlag, "o", "text", "Output format (text|json)")
    52  
    53  	return cmd
    54  }