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." ,
2021-07-09 04:58:09 +00:00
Long : ` yq is a portable command - line YAML processor ( https : //github.com/mikefarah/yq/)
See https : //mikefarah.gitbook.io/yq/ for detailed documentation and examples.`,
2020-01-13 09:11:56 +00:00
RunE : func ( cmd * cobra . Command , args [ ] string ) error {
if version {
cmd . Print ( GetVersionDisplay ( ) )
return nil
}
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" )
2021-07-25 08:08:33 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & outputToJSON , "tojson" , "j" , false , "(deprecated) output as json. Set indent to 0 to print json in one line." )
2021-08-20 03:35:57 +00:00
err := rootCmd . PersistentFlags ( ) . MarkDeprecated ( "tojson" , "please use -o=json instead" )
2021-07-25 08:08:33 +00:00
if err != nil {
panic ( err )
}
2021-08-20 05:46:33 +00:00
rootCmd . PersistentFlags ( ) . StringVarP ( & outputFormat , "output-format" , "o" , "yaml" , "[yaml|y|json|j|props|p] output format type." )
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-11-13 02:35:59 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & noDocSeparators , "no-doc" , "N" , false , "Don't print document separators (---)" )
2020-11-06 03:37:01 +00:00
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-11-29 09:25:47 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & writeInplace , "inplace" , "i" , false , "update the yaml file inplace of first yaml file given." )
2020-12-21 23:40:20 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & unwrapScalar , "unwrapScalar" , "" , true , "unwrap scalar, print the value with no quotes, colors or comments" )
2020-12-28 00:40:41 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & prettyPrint , "prettyPrint" , "P" , false , "pretty print, shorthand for '... style = \"\"'" )
2020-11-30 05:35:21 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & exitStatus , "exit-status" , "e" , false , "set exit status if there are no matches or null or false is returned" )
2020-10-27 05:45:16 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & forceColor , "colors" , "C" , false , "force print with colors" )
rootCmd . PersistentFlags ( ) . BoolVarP ( & forceNoColor , "no-colors" , "M" , false , "force print with no colors" )
2021-07-18 03:44:56 +00:00
rootCmd . PersistentFlags ( ) . StringVarP ( & frontMatter , "front-matter" , "f" , "" , "(extract|process) first input as yaml front-matter. Extract will pull out the yaml content, process will run the expression against the yaml content, leaving the remaining data intact" )
2021-10-15 00:46:28 +00:00
rootCmd . PersistentFlags ( ) . BoolVarP ( & leadingContentPreProcessing , "header-preprocess" , "" , true , "Slurp any header comments and separators before processing expression. This is a workaround for go-yaml to persist header content properly." )
2020-11-16 01:09:57 +00:00
rootCmd . AddCommand (
createEvaluateSequenceCommand ( ) ,
createEvaluateAllCommand ( ) ,
completionCmd ,
)
2020-01-13 09:11:56 +00:00
return rootCmd
}