mirror of
https://github.com/mikefarah/yq.git
synced 2026-09-07 02:48:27 +08:00
Can load expressions from file #1120
This commit is contained in:
@@ -30,3 +30,5 @@ var splitFileExp = ""
|
||||
var completedSuccessfully = false
|
||||
|
||||
var forceExpression = ""
|
||||
|
||||
var expressionFile = ""
|
||||
|
||||
@@ -126,7 +126,10 @@ func evaluateAll(cmd *cobra.Command, args []string) (cmdError error) {
|
||||
|
||||
allAtOnceEvaluator := yqlib.NewAllAtOnceEvaluator()
|
||||
|
||||
expression, args := processArgs(pipingStdIn, args)
|
||||
expression, args, err := processArgs(pipingStdIn, args)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
yqlib.GetLogger().Debugf("processed args: %v", args)
|
||||
|
||||
switch len(args) {
|
||||
|
||||
@@ -143,7 +143,10 @@ func evaluateSequence(cmd *cobra.Command, args []string) (cmdError error) {
|
||||
}
|
||||
defer frontMatterHandler.CleanUp()
|
||||
}
|
||||
expression, args := processArgs(pipingStdIn, args)
|
||||
expression, args, err := processArgs(pipingStdIn, args)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch len(args) {
|
||||
case 0:
|
||||
|
||||
@@ -86,6 +86,8 @@ yq -i '.stuff = "foo"' myfile.yml # update myfile.yml inplace
|
||||
|
||||
rootCmd.PersistentFlags().StringVarP(&splitFileExp, "split-exp", "s", "", "print each result (or doc) into a file named (exp). [exp] argument must return a string. You can use $index in the expression as the result counter.")
|
||||
|
||||
rootCmd.PersistentFlags().StringVarP(&expressionFile, "from-file", "", "", "Load expression from specified file.")
|
||||
|
||||
rootCmd.AddCommand(
|
||||
createEvaluateSequenceCommand(),
|
||||
createEvaluateAllCommand(),
|
||||
|
||||
+11
-3
@@ -137,14 +137,22 @@ func processStdInArgs(pipingStdin bool, args []string) []string {
|
||||
return append(args, "-")
|
||||
}
|
||||
|
||||
func processArgs(pipingStdin bool, originalArgs []string) (string, []string) {
|
||||
func processArgs(pipingStdin bool, originalArgs []string) (string, []string, error) {
|
||||
expression := forceExpression
|
||||
if expressionFile != "" {
|
||||
expressionBytes, err := os.ReadFile(expressionFile)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
expression = string(expressionBytes)
|
||||
}
|
||||
|
||||
args := processStdInArgs(pipingStdin, originalArgs)
|
||||
yqlib.GetLogger().Debugf("processed args: %v", args)
|
||||
expression := forceExpression
|
||||
if expression == "" && len(args) > 0 && args[0] != "-" && !maybeFile(args[0]) {
|
||||
yqlib.GetLogger().Debug("assuming expression is '%v'", args[0])
|
||||
expression = args[0]
|
||||
args = args[1:]
|
||||
}
|
||||
return expression, args
|
||||
return expression, args, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user