2020-01-13 09:11:56 +00:00
package cmd
import (
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
}
cmd . Println ( cmd . UsageString ( ) )
return nil
} ,
PersistentPreRun : func ( cmd * cobra . Command , args [ ] string ) {
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-02-03 05:52:12 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & outputToJSON , "tojson" , "j" , false , "output as json. By default it prints a json document in one line, use the prettyPrint flag to print a formatted doc." )
2020-02-03 05:37:53 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & prettyPrint , "prettyPrint" , "P" , false , "pretty print" )
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-02-28 04:57:44 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & colorsEnabled , "colors" , "C" , false , "print with colors" )
2020-01-13 09:11:56 +00:00
rootCmd . AddCommand (
createReadCmd ( ) ,
2020-02-03 02:59:16 +00:00
createCompareCmd ( ) ,
2020-01-30 05:34:43 +00:00
createValidateCmd ( ) ,
2020-01-13 09:11:56 +00:00
createWriteCmd ( ) ,
createPrefixCmd ( ) ,
createDeleteCmd ( ) ,
createNewCmd ( ) ,
createMergeCmd ( ) ,
2020-06-11 08:27:01 +00:00
createBashCompletionCmd ( rootCmd ) ,
2020-01-13 09:11:56 +00:00
)
return rootCmd
}