diff --git a/Dockerfile b/Dockerfile index b8b3f40..bce9027 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN go mod download COPY dist ./dist COPY html.go html.go COPY main.go main.go -RUN go build -ldflags "-w -s" -o json-gen . +RUN go build -ldflags "-w -s -X main.Open=false" -o json-gen . # runtime FROM alpine:latest diff --git a/main.go b/main.go index 19a2b83..361a99b 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,8 @@ import ( "io" "io/fs" "net/http" + "os/exec" + "runtime" "sort" "strings" "sync" @@ -54,6 +56,24 @@ var defaultOptions = options{ Package: "model", } +var Open = "" + +func OpenBrowser(url string) { + var err error + + switch runtime.GOOS { + case "linux": + err = exec.Command("xdg-open", url).Start() + case "windows": + err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start() + case "darwin": + err = exec.Command("open", url).Start() + } + if err != nil { + fmt.Println(err) + } +} + func WithCharset(charset string) Option { return func(o *options) { o.Charset = charset @@ -540,14 +560,18 @@ func main() { c.String(http.StatusOK, string(res)) }) + // static 嵌入 r.GET("/", func(c *gin.Context) { indexHTML, _ := dist.ReadFile("dist/index.html") c.Writer.Write(indexHTML) }) - static, _ := fs.Sub(dist, "dist/static") r.StaticFS("/static", http.FS(static)) - r.Run(":8000") + + if len(Open) == 0 { + OpenBrowser("http://localhost:8333") + } + r.Run(":8333") } func Cors() gin.HandlerFunc {