8
8
"log"
9
9
"net/http"
10
10
"sync"
11
+ "runtime"
12
+ "os/exec"
11
13
)
12
14
13
15
var es eventsource.EventSource
@@ -31,10 +33,18 @@ func main() {
31
33
http .Handle ("/" , http .FileServer (AssetFile ()))
32
34
33
35
log .Printf ("Starting webserver at %s:%d\n " , * host , * port )
36
+
37
+ url := fmt .Sprintf ("localhost:%d" , * port )
38
+ if (* host != "" ) {
39
+ url = fmt .Sprintf ("%s:%d" , * host , * port )
40
+ }
41
+ openbrowser (fmt .Sprintf ("%s" , url ))
42
+
34
43
err := http .ListenAndServe (fmt .Sprintf ("%s:%d" , * host , * port ), nil )
35
44
if err != nil {
36
45
log .Fatalln (err )
37
46
}
47
+
38
48
}
39
49
40
50
func clientEvent (w http.ResponseWriter , r * http.Request ) {
@@ -96,3 +106,24 @@ func unlock(w http.ResponseWriter, r *http.Request) {
96
106
97
107
log .Printf ("Removed lock for %s\n " , id )
98
108
}
109
+
110
+
111
+ func openbrowser (url string ) {
112
+ var err error
113
+
114
+ log .Printf ("Try to opening URL %s in browser\n " , url )
115
+ switch runtime .GOOS {
116
+ case "linux" :
117
+ err = exec .Command ("xdg-open" , url ).Run ()
118
+ case "windows" :
119
+ err = exec .Command ("rundll32" , "url.dll,FileProtocolHandler" , url ).Run ()
120
+ case "darwin" :
121
+ err = exec .Command ("open" , url ).Run ()
122
+ default :
123
+ err = fmt .Errorf ("unsupported platform" )
124
+ }
125
+
126
+ if err != nil {
127
+ log .Println (err )
128
+ }
129
+ }
0 commit comments