From ead4511250deb877e1867c2e38cbee9c27deb299 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Mon, 16 Jul 2018 22:25:50 +0200 Subject: add the infrastructure for an embedded web UI + command --- commands/command.go | 1 + commands/webui.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 commands/webui.go (limited to 'commands') diff --git a/commands/command.go b/commands/command.go index 30298d3f..cb231dce 100644 --- a/commands/command.go +++ b/commands/command.go @@ -50,5 +50,6 @@ func init() { "new": newCmd, "pull": pullCmd, "push": pushCmd, + "webui": webUICmd, } } 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, +} -- cgit