From a5d360344f2b27b4bad52ccfced01938b72af116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mislav=20Marohni=C4=87?= Date: Thu, 24 Jan 2019 14:33:20 +0100 Subject: [PATCH] [api] Add `--raw-field` that has no special treatment for "@" --- commands/api.go | 43 +++++++++++++++++++++++++++---------------- features/api.feature | 4 ++-- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/commands/api.go b/commands/api.go index 0f1d2f74..5b4eb4d2 100644 --- a/commands/api.go +++ b/commands/api.go @@ -19,6 +19,7 @@ var cmdApi = &Command{ ## Options: -X, --method -F, --field + -f, --raw-field -t, --flat --cache `, @@ -46,22 +47,13 @@ func apiCommand(cmd *Command, args *Args) { for _, val := range args.Flag.AllValues("--field") { parts := strings.SplitN(val, "=", 2) if len(parts) >= 2 { - value := parts[1] - if strings.HasPrefix(value, "@") { - file := strings.TrimPrefix(value, "@") - var content []byte - var err error - if file == "-" { - content, err = ioutil.ReadAll(os.Stdin) - } else { - content, err = ioutil.ReadFile(file) - } - if err != nil { - utils.Check(err) - } - value = string(content) - } - params[parts[0]] = value + params[parts[0]] = valueOrFileContents(parts[1]) + } + } + for _, val := range args.Flag.AllValues("--raw-field") { + parts := strings.SplitN(val, "=", 2) + if len(parts) >= 2 { + params[parts[0]] = parts[1] } } @@ -100,3 +92,22 @@ func apiCommand(cmd *Command, args *Args) { args.NoForward() } + +func valueOrFileContents(value string) string { + if strings.HasPrefix(value, "@") { + file := strings.TrimPrefix(value, "@") + var content []byte + var err error + if file == "-" { + content, err = ioutil.ReadAll(os.Stdin) + } else { + content, err = ioutil.ReadFile(file) + } + if err != nil { + utils.Check(err) + } + return string(content) + } else { + return value + } +} diff --git a/features/api.feature b/features/api.feature index f2ad8480..83356e9b 100644 --- a/features/api.feature +++ b/features/api.feature @@ -50,10 +50,10 @@ Feature: hub api :params => params.size } """ - When I successfully run `hub api -t -F name=Ed -F a=b=c hello/world` + When I successfully run `hub api -t -f name=@hubot -F a=b=c hello/world` Then the output should contain exactly: """ - .name Ed + .name @hubot .value b=c .params 2\n """ -- GitLab