From 31c2e72c8ec4a1eb1eda4b0b1b452b7fadcc4f3a Mon Sep 17 00:00:00 2001 From: hirosassa Date: Sun, 27 Jun 2021 12:58:22 +0900 Subject: [PATCH] use flag for create new docs --- README.md | 12 +-- cli/googleworkspace.go | 101 ++++--------------- providers/googleworkspace/googleworkspace.go | 10 +- 3 files changed, 30 insertions(+), 93 deletions(-) diff --git a/README.md b/README.md index 4a50789..a09c9e7 100644 --- a/README.md +++ b/README.md @@ -393,17 +393,17 @@ $ biko googleworkspace [product] [flag(s)] $ biko gw [product] [flag(s)] ``` -| Product | What | Command | Flags(Optional) | -| :----: |:----:|:----:|:----:| +| Product | What | Command | Flags(Optional) | +| :----: | :----: | :----: | :----: | | drive | Search on Google Drive | `drive`, `dr` | `--query, -q` | | document | Search on Google Docs | `document`, `dc` | `--query, -q` | -| document | Create a new Google Docs | `document new`, `dc n` | - | +| document | Create a new Google Docs | `document`, `dc` | `--new, -n` | | spreadsheets | Search on Google Sheets | `spreadsheets`, `ss` | `--query, -q` | -| spreadsheets | Create a new Google Sheets | `spreadsheets new`, `ss n` | - | +| spreadsheets | Create a new Google Sheets | `spreadsheets`, `ss` | `--new, -n` | | presentation | Search on Google Slides | `presentation`, `pr` | `--query, -q` | -| presentation | Create a new Google Slides | `presentation new`, `pr new` | - | +| presentation | Create a new Google Slides | `presentation`, `pr` | `--new, -n` | | forms | Search on Google Forms | `forms`, `fm` | `--query, -q` | -| forms | Create a new Google Forms | `forms new`, `fm n` | - | +| forms | Create a new Google Forms | `forms`, `fm` | `--new, -n` | ### Pagerduty diff --git a/cli/googleworkspace.go b/cli/googleworkspace.go index 7086e40..4cc55f1 100644 --- a/cli/googleworkspace.go +++ b/cli/googleworkspace.go @@ -37,8 +37,9 @@ func newGoogleWorkspaceCmd() cli.Command { Subcommands: []cli.Command{ newDriveCmd(), newDocumentCmd(), - newSpreadsheetCmd(), + newSpreadsheetsCmd(), newPresentationCmd(), + newFormsCmd(), }, } } @@ -75,6 +76,10 @@ func newDocumentCmd() cli.Command { Name: "query, q", Usage: "Query a page", }, + cli.BoolFlag{ + Name: "new, n", + Usage: "Create a new document (this flag prioritize over query flag)", + }, }, Action: func(c *cli.Context) error { g, err := googleworkspace.GetProvider() @@ -83,14 +88,11 @@ func newDocumentCmd() cli.Command { } return browser.Open(c, g) }, - Subcommands: []cli.Command{ - newNewDocumentCmd(), - }, } } -func newSpreadsheetCmd() cli.Command { +func newSpreadsheetsCmd() cli.Command { return cli.Command{ Name: "spreadsheets", Aliases: []string{"ss"}, @@ -100,6 +102,10 @@ func newSpreadsheetCmd() cli.Command { Name: "query, q", Usage: "Query a page", }, + cli.BoolFlag{ + Name: "new, n", + Usage: "Create a new spreadsheet (this flag prioritize over query flag)", + }, }, Action: func(c *cli.Context) error { g, err := googleworkspace.GetProvider() @@ -108,9 +114,6 @@ func newSpreadsheetCmd() cli.Command { } return browser.Open(c, g) }, - Subcommands: []cli.Command{ - newNewSpreadsheetCmd(), - }, } } @@ -125,6 +128,10 @@ func newPresentationCmd() cli.Command { Name: "query, q", Usage: "Query a page", }, + cli.BoolFlag{ + Name: "new, n", + Usage: "Create a new presentation (this flag prioritize over query flag)", + }, }, Action: func(c *cli.Context) error { g, err := googleworkspace.GetProvider() @@ -133,9 +140,6 @@ func newPresentationCmd() cli.Command { } return browser.Open(c, g) }, - Subcommands: []cli.Command{ - newNewPresentationCmd(), - }, } } @@ -150,6 +154,10 @@ func newFormsCmd() cli.Command { Name: "query, q", Usage: "Query a page", }, + cli.BoolFlag{ + Name: "new, n", + Usage: "Create a new form (this flag prioritize over query flag)", + }, }, Action: func(c *cli.Context) error { g, err := googleworkspace.GetProvider() @@ -158,77 +166,6 @@ func newFormsCmd() cli.Command { } return browser.Open(c, g) }, - Subcommands: []cli.Command{ - newNewFormsCmd(), - }, - } - -} - -func newNewDocumentCmd() cli.Command { - return cli.Command{ - Name: "new", - Aliases: []string{"n"}, - Usage: "Create a new document", - Flags: []cli.Flag{}, - Action: func(c *cli.Context) error { - g, err := googleworkspace.GetProvider() - if err != nil { - return err - } - return browser.Open(c, g) - }, - } - -} - -func newNewSpreadsheetCmd() cli.Command { - return cli.Command{ - Name: "new", - Aliases: []string{"n"}, - Usage: "Create a new spreadsheet", - Flags: []cli.Flag{}, - Action: func(c *cli.Context) error { - g, err := googleworkspace.GetProvider() - if err != nil { - return err - } - return browser.Open(c, g) - }, - } - -} - -func newNewPresentationCmd() cli.Command { - return cli.Command{ - Name: "new", - Aliases: []string{"n"}, - Usage: "Create a new presentation", - Flags: []cli.Flag{}, - Action: func(c *cli.Context) error { - g, err := googleworkspace.GetProvider() - if err != nil { - return err - } - return browser.Open(c, g) - }, - } - -} - -func newNewFormsCmd() cli.Command { - return cli.Command{ - Name: "new", - Aliases: []string{"n"}, - Usage: "Create a new form", - Flags: []cli.Flag{}, - Action: func(c *cli.Context) error { - g, err := googleworkspace.GetProvider() - if err != nil { - return err - } - return browser.Open(c, g) - }, } } diff --git a/providers/googleworkspace/googleworkspace.go b/providers/googleworkspace/googleworkspace.go index 537b928..1567c5f 100644 --- a/providers/googleworkspace/googleworkspace.go +++ b/providers/googleworkspace/googleworkspace.go @@ -17,7 +17,6 @@ package googleworkspace import ( "net/url" "path" - "strings" "github.com/KeisukeYamashita/biko/alias" "github.com/urfave/cli" @@ -59,12 +58,13 @@ func (p *Provider) Init(c *cli.Context) error { // GetTargetURL ... func (p *Provider) GetTargetURL() (string, error) { - product := p.Ctx.Command.Name - if product == "new" { + newFlag := p.GetCtxString("new") + if newFlag == "true" { // HACK: need to fix GetCtxString return p.getNewCmdURL(), nil } var baseURL string + product := p.Ctx.Command.Name switch product { case drive: baseURL = "https://drive.google.com" @@ -135,8 +135,8 @@ func (p *Provider) join(additionPath string) { } func (p *Provider) getNewCmdURL() string { - parentCmd := strings.Split(p.Ctx.Command.FullName(), " ")[0] - switch parentCmd { + product := p.Ctx.Command.Name + switch product { case document: return "https://document.new" case spreadsheets: