aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-05-27 21:47:26 +0200
committerMichael Muré <batolettre@gmail.com>2019-05-27 21:47:26 +0200
commit8bfc65df6c4db01e74e5793fb4da402078b37648 (patch)
treebf9ca09db5b46a90b5c270191b40f0ae4dbb42d5
parentd564e37b317a2d59a9694d80b03b40e5d36f741f (diff)
downloadgit-bug-8bfc65df6c4db01e74e5793fb4da402078b37648.tar.gz
commands: add flags/config to control the automatic opening in the default browser
-rw-r--r--commands/webui.go55
-rw-r--r--doc/man/git-bug-webui.114
-rw-r--r--doc/md/git-bug.md2
-rw-r--r--doc/md/git-bug_ls-id.md4
-rw-r--r--doc/md/git-bug_webui.md8
-rw-r--r--misc/bash_completion/git-bug33
-rw-r--r--misc/zsh_completion/git-bug2
7 files changed, 96 insertions, 22 deletions
diff --git a/commands/webui.go b/commands/webui.go
index f86616d5..d6b6a661 100644
--- a/commands/webui.go
+++ b/commands/webui.go
@@ -13,28 +13,35 @@ import (
"time"
"github.com/99designs/gqlgen/handler"
- "github.com/MichaelMure/git-bug/graphql"
- "github.com/MichaelMure/git-bug/repository"
- "github.com/MichaelMure/git-bug/util/git"
- "github.com/MichaelMure/git-bug/webui"
"github.com/gorilla/mux"
"github.com/phayes/freeport"
"github.com/skratchdot/open-golang/open"
"github.com/spf13/cobra"
+
+ "github.com/MichaelMure/git-bug/graphql"
+ "github.com/MichaelMure/git-bug/repository"
+ "github.com/MichaelMure/git-bug/util/git"
+ "github.com/MichaelMure/git-bug/webui"
+)
+
+var (
+ webUIPort int
+ webUIOpen bool
+ webUINoOpen bool
)
-var port int
+const webUIOpenConfigKey = "git-bug.webui.open"
func runWebUI(cmd *cobra.Command, args []string) error {
- if port == 0 {
+ if webUIPort == 0 {
var err error
- port, err = freeport.GetFreePort()
+ webUIPort, err = freeport.GetFreePort()
if err != nil {
return err
}
}
- addr := fmt.Sprintf("127.0.0.1:%d", port)
+ addr := fmt.Sprintf("127.0.0.1:%d", webUIPort)
webUiAddr := fmt.Sprintf("http://%s", addr)
router := mux.NewRouter()
@@ -93,9 +100,21 @@ func runWebUI(cmd *cobra.Command, args []string) error {
fmt.Printf("Graphql Playground: http://%s/playground\n", addr)
fmt.Println("Press Ctrl+c to quit")
- err = open.Run(webUiAddr)
- if err != nil {
- fmt.Println(err)
+ configOpen, err := repo.ReadConfigBool(webUIOpenConfigKey)
+ if err == repository.ErrNoConfigEntry {
+ // default to true
+ configOpen = true
+ } else if err != nil {
+ return err
+ }
+
+ shouldOpen := (configOpen && !webUINoOpen) || webUIOpen
+
+ if shouldOpen {
+ err = open.Run(webUiAddr)
+ if err != nil {
+ fmt.Println(err)
+ }
}
err = srv.ListenAndServe()
@@ -223,8 +242,13 @@ func (gufh *gitUploadFileHandler) ServeHTTP(rw http.ResponseWriter, r *http.Requ
}
var webUICmd = &cobra.Command{
- Use: "webui",
- Short: "Launch the web UI.",
+ Use: "webui",
+ Short: "Launch the web UI.",
+ Long: `Launch the web UI.
+
+Available git config:
+ git-bug.webui.open [bool]: control the automatic opening of the web UI in the default browser
+`,
PreRunE: loadRepo,
RunE: runWebUI,
}
@@ -234,5 +258,8 @@ func init() {
webUICmd.Flags().SortFlags = false
- webUICmd.Flags().IntVarP(&port, "port", "p", 0, "Port to listen to")
+ webUICmd.Flags().BoolVar(&webUIOpen, "open", false, "Automatically open the web UI in the default browser")
+ webUICmd.Flags().BoolVar(&webUINoOpen, "no-open", false, "Prevent the automatic opening of the web UI in the default browser")
+ webUICmd.Flags().IntVarP(&webUIPort, "port", "p", 0, "Port to listen to (default is random)")
+
}
diff --git a/doc/man/git-bug-webui.1 b/doc/man/git-bug-webui.1
index 3b72ec0b..9bcb65fd 100644
--- a/doc/man/git-bug-webui.1
+++ b/doc/man/git-bug-webui.1
@@ -17,11 +17,23 @@ git\-bug\-webui \- Launch the web UI.
.PP
Launch the web UI.
+.PP
+Available git config:
+ git\-bug.webui.open [bool]: control the automatic opening of the web UI in the default browser
+
.SH OPTIONS
.PP
+\fB\-\-open\fP[=false]
+ Automatically open the web UI in the default browser
+
+.PP
+\fB\-\-no\-open\fP[=false]
+ Prevent the automatic opening of the web UI in the default browser
+
+.PP
\fB\-p\fP, \fB\-\-port\fP=0
- Port to listen to
+ Port to listen to (default is random)
.PP
\fB\-h\fP, \fB\-\-help\fP[=false]
diff --git a/doc/md/git-bug.md b/doc/md/git-bug.md
index b47bd5c2..5f57f838 100644
--- a/doc/md/git-bug.md
+++ b/doc/md/git-bug.md
@@ -31,7 +31,7 @@ git-bug [flags]
* [git-bug deselect](git-bug_deselect.md) - Clear the implicitly selected bug.
* [git-bug label](git-bug_label.md) - Display, add or remove labels to/from a bug.
* [git-bug ls](git-bug_ls.md) - List bugs.
-* [git-bug ls-id](git-bug_ls-id.md) - List Bug Id
+* [git-bug ls-id](git-bug_ls-id.md) - List bug identifiers.
* [git-bug ls-label](git-bug_ls-label.md) - List valid labels.
* [git-bug pull](git-bug_pull.md) - Pull bugs update from a git remote.
* [git-bug push](git-bug_push.md) - Push bugs update to a git remote.
diff --git a/doc/md/git-bug_ls-id.md b/doc/md/git-bug_ls-id.md
index 2e99f134..0117474c 100644
--- a/doc/md/git-bug_ls-id.md
+++ b/doc/md/git-bug_ls-id.md
@@ -1,10 +1,10 @@
## git-bug ls-id
-List Bug Id
+List bug identifiers.
### Synopsis
-List Bug Id
+List bug identifiers.
```
git-bug ls-id [<prefix>] [flags]
diff --git a/doc/md/git-bug_webui.md b/doc/md/git-bug_webui.md
index cc3a85de..f3ab724a 100644
--- a/doc/md/git-bug_webui.md
+++ b/doc/md/git-bug_webui.md
@@ -6,6 +6,10 @@ Launch the web UI.
Launch the web UI.
+Available git config:
+ git-bug.webui.open [bool]: control the automatic opening of the web UI in the default browser
+
+
```
git-bug webui [flags]
```
@@ -13,7 +17,9 @@ git-bug webui [flags]
### Options
```
- -p, --port int Port to listen to
+ --open Automatically open the web UI in the default browser
+ --no-open Prevent the automatic opening of the web UI in the default browser
+ -p, --port int Port to listen to (default is random)
-h, --help help for webui
```
diff --git a/misc/bash_completion/git-bug b/misc/bash_completion/git-bug
index 682df96d..51e30da0 100644
--- a/misc/bash_completion/git-bug
+++ b/misc/bash_completion/git-bug
@@ -107,7 +107,13 @@ __git-bug_handle_reply()
fi
if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
- declare -F __custom_func >/dev/null && __custom_func
+ if declare -F __git-bug_custom_func >/dev/null; then
+ # try command name qualified custom func
+ __git-bug_custom_func
+ else
+ # otherwise fall back to unqualified for compatibility
+ declare -F __custom_func >/dev/null && __custom_func
+ fi
fi
# available in bash-completion >= 2, not always present on macOS
@@ -171,7 +177,8 @@ __git-bug_handle_flag()
fi
# skip the argument to a two word flag
- if __git-bug_contains_word "${words[c]}" "${two_word_flags[@]}"; then
+ if [[ ${words[c]} != *"="* ]] && __git-bug_contains_word "${words[c]}" "${two_word_flags[@]}"; then
+ __git-bug_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument"
c=$((c+1))
# if we are looking for a flags value, don't show commands
if [[ $c -eq $cword ]]; then
@@ -263,12 +270,15 @@ _git-bug_add()
flags_completion=()
flags+=("--title=")
+ two_word_flags+=("--title")
two_word_flags+=("-t")
local_nonpersistent_flags+=("--title=")
flags+=("--message=")
+ two_word_flags+=("--message")
two_word_flags+=("-m")
local_nonpersistent_flags+=("--message=")
flags+=("--file=")
+ two_word_flags+=("--file")
two_word_flags+=("-F")
local_nonpersistent_flags+=("--file=")
@@ -398,9 +408,11 @@ _git-bug_comment_add()
flags_completion=()
flags+=("--file=")
+ two_word_flags+=("--file")
two_word_flags+=("-F")
local_nonpersistent_flags+=("--file=")
flags+=("--message=")
+ two_word_flags+=("--message")
two_word_flags+=("-m")
local_nonpersistent_flags+=("--message=")
@@ -527,30 +539,39 @@ _git-bug_ls()
flags_completion=()
flags+=("--status=")
+ two_word_flags+=("--status")
two_word_flags+=("-s")
local_nonpersistent_flags+=("--status=")
flags+=("--author=")
+ two_word_flags+=("--author")
two_word_flags+=("-a")
local_nonpersistent_flags+=("--author=")
flags+=("--participant=")
+ two_word_flags+=("--participant")
two_word_flags+=("-p")
local_nonpersistent_flags+=("--participant=")
flags+=("--actor=")
+ two_word_flags+=("--actor")
two_word_flags+=("-A")
local_nonpersistent_flags+=("--actor=")
flags+=("--label=")
+ two_word_flags+=("--label")
two_word_flags+=("-l")
local_nonpersistent_flags+=("--label=")
flags+=("--title=")
+ two_word_flags+=("--title")
two_word_flags+=("-t")
local_nonpersistent_flags+=("--title=")
flags+=("--no=")
+ two_word_flags+=("--no")
two_word_flags+=("-n")
local_nonpersistent_flags+=("--no=")
flags+=("--by=")
+ two_word_flags+=("--by")
two_word_flags+=("-b")
local_nonpersistent_flags+=("--by=")
flags+=("--direction=")
+ two_word_flags+=("--direction")
two_word_flags+=("-d")
local_nonpersistent_flags+=("--direction=")
@@ -674,6 +695,7 @@ _git-bug_show()
flags_completion=()
flags+=("--field=")
+ two_word_flags+=("--field")
two_word_flags+=("-f")
local_nonpersistent_flags+=("--field=")
@@ -779,6 +801,7 @@ _git-bug_title_edit()
flags_completion=()
flags+=("--title=")
+ two_word_flags+=("--title")
two_word_flags+=("-t")
local_nonpersistent_flags+=("--title=")
@@ -886,6 +909,7 @@ _git-bug_user()
flags_completion=()
flags+=("--field=")
+ two_word_flags+=("--field")
two_word_flags+=("-f")
local_nonpersistent_flags+=("--field=")
@@ -937,7 +961,12 @@ _git-bug_webui()
flags_with_completion=()
flags_completion=()
+ flags+=("--open")
+ local_nonpersistent_flags+=("--open")
+ flags+=("--no-open")
+ local_nonpersistent_flags+=("--no-open")
flags+=("--port=")
+ two_word_flags+=("--port")
two_word_flags+=("-p")
local_nonpersistent_flags+=("--port=")
diff --git a/misc/zsh_completion/git-bug b/misc/zsh_completion/git-bug
index c2ed9872..52c242df 100644
--- a/misc/zsh_completion/git-bug
+++ b/misc/zsh_completion/git-bug
@@ -8,7 +8,7 @@ case $state in
level1)
case $words[1] in
git-bug)
- _arguments '1: :(add bridge commands comment deselect label ls ls-id ls-label pull push select show status termui title user version webui)'
+ _arguments '1: :(add bridge commands comment deselect export label ls ls-id ls-label pull push select show status termui title user version webui)'
;;
*)
_arguments '*: :_files'