Skip to content

Instantly share code, notes, and snippets.

@asm-jaime
Created February 7, 2017 18:05
Show Gist options
  • Save asm-jaime/6c1469d3546a5813cb153cb946087dec to your computer and use it in GitHub Desktop.
Save asm-jaime/6c1469d3546a5813cb153cb946087dec to your computer and use it in GitHub Desktop.
gin server for development which custom settings. (start inside frontend project: go run gin.dev.server.go start 9090 ./build)
package main
import (
"fmt"
"os"
"github.com/gin-gonic/contrib/static"
"github.com/gin-gonic/gin"
)
type Server struct{}
type Config struct {
StaticFolder string
Port string
}
func (config *Config) SetDefault() {
config.Port = "3000"
config.StaticFolder = "./public"
}
// NewEngine return the new gin server
func (server *Server) NewEngine(config *Config) {
router := gin.Default()
// router
router.Use(gin.Logger())
router.Use(gin.Recovery())
// all frontend
fmt.Print("static folder:\n")
fmt.Print(config.StaticFolder)
fmt.Print("\n")
router.Use(static.Serve("/", static.LocalFile(config.StaticFolder, true)))
router.Run(":" + config.Port)
}
func startServer(args []string) {
// set config
config := Config{}
config.SetDefault()
if len(args) > 1 { // set port
config.Port = args[2]
}
if len(args) > 2 { // set static folder
config.StaticFolder = args[3]
}
// start server
server := Server{}
server.NewEngine(&config)
}
func main() {
args := os.Args
if (len(args) > 1) && args[1] == "start" {
startServer(args)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment