From fa4ac258d0c02fd9c1a5322c22f748b9050fcdf6 Mon Sep 17 00:00:00 2001 From: Cory Bennett Date: Sat, 2 Sep 2017 18:04:53 -0700 Subject: [PATCH] fix `jira ISSUE-123` command line parsing --- cmd/jira/main.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/cmd/jira/main.go b/cmd/jira/main.go index b151fa6..beef72f 100644 --- a/cmd/jira/main.go +++ b/cmd/jira/main.go @@ -320,15 +320,24 @@ func main() { } panic(jiracli.Exit{Code: 1}) }) - if len(os.Args) > 1 { - // if first arg matches ISSUE-123 pattern then we assume it is a 'view' operation - if ok, err := regexp.MatchString("^[A-Z]+-[0-9]+$", os.Args[1]); err != nil { - log.Errorf("Invalid Regex: %s", err) - } else if ok { - // insert "view" at i=1 (2nd position) - os.Args = append(os.Args[:1], append([]string{"view"}, os.Args[1:]...)...) + + // checking for default usage of `jira ISSUE-123` but need to allow + // for global options first like: `jira --user mothra ISSUE-123` + ctx, _ := app.ParseContext(os.Args[1:]) + if ctx != nil { + if ctx.SelectedCommand == nil { + next := ctx.Next() + if next != nil { + if ok, err := regexp.MatchString("^[A-Z]+-[0-9]+$", next.Value); err != nil { + log.Errorf("Invalid Regex: %s", err) + } else if ok { + // insert "view" at i=1 (2nd position) + os.Args = append(os.Args[:1], append([]string{"view"}, os.Args[1:]...)...) + } + } } } + if _, err := app.Parse(os.Args[1:]); err != nil { if _, ok := err.(*jiracli.Error); ok { log.Errorf("%s", err)