2020-01-13 09:11:56 +00:00
package cmd
import (
2020-10-27 05:45:16 +00:00
"fmt"
2020-01-19 21:42:08 +00:00
"os"
2020-01-13 09:11:56 +00:00
"github.com/spf13/cobra"
logging "gopkg.in/op/go-logging.v1"
)
func New ( ) * cobra . Command {
var rootCmd = & cobra . Command {
Use : "yq" ,
Short : "yq is a lightweight and portable command-line YAML processor." ,
Long : ` yq is a lightweight and portable command-line YAML processor. It aims to be the jq or sed of yaml files. ` ,
RunE : func ( cmd * cobra . Command , args [ ] string ) error {
if version {
cmd . Print ( GetVersionDisplay ( ) )
return nil
}
2020-10-27 05:45:16 +00:00
if shellCompletion != "" {
switch shellCompletion {
case "bash" , "" :
return cmd . GenBashCompletion ( os . Stdout )
case "zsh" :
return cmd . GenZshCompletion ( os . Stdout )
case "fish" :
return cmd . GenFishCompletion ( os . Stdout , true )
case "powershell" :
return cmd . GenPowerShellCompletion ( os . Stdout )
default :
return fmt . Errorf ( "Unknown variant %v" , shellCompletion )
}
}
2020-11-06 03:37:01 +00:00
cmd . Println ( cmd . UsageString ( ) )
return nil
2020-10-27 05:45:16 +00:00
2020-01-13 09:11:56 +00:00
} ,
PersistentPreRun : func ( cmd * cobra . Command , args [ ] string ) {
2020-09-13 01:49:55 +00:00
cmd . SetOut ( cmd . OutOrStdout ( ) )
2020-01-13 09:11:56 +00:00
var format = logging . MustStringFormatter (
` % { color}% { time:15:04:05} % { shortfunc} [% { level:.4s}]% { color:reset} % { message} ` ,
)
var backend = logging . AddModuleLevel (
logging . NewBackendFormatter ( logging . NewLogBackend ( os . Stderr , "" , 0 ) , format ) )
if verbose {
backend . SetLevel ( logging . DEBUG , "" )
} else {
backend . SetLevel ( logging . ERROR , "" )
}
logging . SetBackend ( backend )
} ,
}
rootCmd . PersistentFlags ( ) . BoolVarP ( & verbose , "verbose" , "v" , false , "verbose mode" )
2020-11-03 23:48:43 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & outputToJSON , "tojson" , "j" , false , "output as json. Set indent to 0 to print json in one line." )
2020-11-06 03:37:01 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & nullInput , "null-input" , "n" , false , "Don't read input, simply evaluate the expression given. Useful for creating yaml docs from scratch." )
2020-02-03 05:52:12 +00:00
rootCmd . PersistentFlags ( ) . IntVarP ( & indent , "indent" , "I" , 2 , "sets indent level for output" )
2020-01-13 09:11:56 +00:00
rootCmd . Flags ( ) . BoolVarP ( & version , "version" , "V" , false , "Print version information and quit" )
2020-10-27 05:45:16 +00:00
rootCmd . Flags ( ) . StringVarP ( & shellCompletion , "shellCompletion" , "" , "" , "[bash/zsh/powershell/fish] prints shell completion script" )
rootCmd . PersistentFlags ( ) . BoolVarP ( & forceColor , "colors" , "C" , false , "force print with colors" )
rootCmd . PersistentFlags ( ) . BoolVarP ( & forceNoColor , "no-colors" , "M" , false , "force print with no colors" )
2020-11-06 03:37:01 +00:00
rootCmd . AddCommand ( createEvaluateSequenceCommand ( ) )
2020-01-13 09:11:56 +00:00
return rootCmd
}