// Copyright 2013 bee authors // // Licensed under the Apache License, Version 2.0 (the "License"): you may // not use this file except in compliance with the License. You may obtain // a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. package apiapp import ( "net/http" beeLogger "github.com/beego/bee/v2/logger" "os" "github.com/beego/bee/v2/cmd/commands" "github.com/beego/bee/v2/cmd/commands/version" "github.com/beego/bee/v2/utils" ) var CmdServer = &commands.Command{ // CustomFlags: true, UsageLine: "server [port]", Short: "serving static content over HTTP on port", Long: ` The command 'server' creates a Beego API application. `, PreRun: func(cmd *commands.Command, args []string) { version.ShowShortVersionBanner() }, Run: createAPI, } var ( a utils.DocValue p utils.DocValue f utils.DocValue ) func init() { CmdServer.Flag.Var(&a, "a", "Listen address") CmdServer.Flag.Var(&p, "p", "Listen port") CmdServer.Flag.Var(&f, "f", "Static files fold") commands.AvailableCommands = append(commands.AvailableCommands, CmdServer) } func createAPI(cmd *commands.Command, args []string) int { if len(args) > 0 { err := cmd.Flag.Parse(args[1:]) if err != nil { beeLogger.Log.Error(err.Error()) } } if a == "" { a = "127.0.0.1" } if p == "" { p = "8080" } if f == "" { cwd, _ := os.Getwd() f = utils.DocValue(cwd) } beeLogger.Log.Infof("Start server on http://%s:%s, static file %s", a, p, f) err := http.ListenAndServe(string(a)+":"+string(p), http.FileServer(http.Dir(f))) if err != nil { beeLogger.Log.Error(err.Error()) } return 0 }