diff options
author | Michael Muré <batolettre@gmail.com> | 2018-07-16 22:25:50 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-07-16 22:25:50 +0200 |
commit | ead4511250deb877e1867c2e38cbee9c27deb299 (patch) | |
tree | 09572e68634c7241eff7cb65bf94c02a6aac9a50 /commands/webui.go | |
parent | d659d74131996cea06e39f90114e21b36e61f6fc (diff) | |
download | git-bug-ead4511250deb877e1867c2e38cbee9c27deb299.tar.gz |
add the infrastructure for an embedded web UI + command
Diffstat (limited to 'commands/webui.go')
-rw-r--r-- | commands/webui.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/commands/webui.go b/commands/webui.go new file mode 100644 index 00000000..df18d3b9 --- /dev/null +++ b/commands/webui.go @@ -0,0 +1,37 @@ +package commands + +import ( + "fmt" + "github.com/MichaelMure/git-bug/repository" + "github.com/MichaelMure/git-bug/webui" + "github.com/gorilla/mux" + "github.com/phayes/freeport" + "github.com/skratchdot/open-golang/open" + "log" + "net/http" +) + +func runWebUI(repo repository.Repo, args []string) error { + port, err := freeport.GetFreePort() + if err != nil { + log.Fatal(err) + } + + addr := fmt.Sprintf("127.0.0.1:%d", port) + + router := mux.NewRouter() + router.PathPrefix("/").Handler(http.FileServer(webui.WebUIAssets)) + + open.Run(fmt.Sprintf("http://%s", addr)) + + log.Fatal(http.ListenAndServe(addr, router)) + + return nil +} + +var webUICmd = &Command{ + Description: "Launch the web UI", + Usage: "", + flagSet: nil, + RunMethod: runWebUI, +} |