diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 87 |
1 files changed, 87 insertions, 0 deletions
@@ -0,0 +1,87 @@ +// TODO add Doc +// +package main + +import ( + "log" + "os" + + "github.com/Sirupsen/logrus" + "github.com/codegangsta/cli" + "github.com/iotbzh/xds-server/lib/xdsconfig" + "github.com/iotbzh/xds-server/lib/xdsserver" +) + +const ( + appName = "xds-server" + appDescription = "X(cross) Development System Server is a web server that allows to remotely cross build applications." + appVersion = "0.0.1" + appCopyright = "Apache-2.0" + appUsage = "X(cross) Development System Server" +) + +var appAuthors = []cli.Author{ + cli.Author{Name: "Sebastien Douheret", Email: "sebastien@iot.bzh"}, +} + +// AppVersionGitTag is the git tag id added to version string +// Should be set by compilation -ldflags "-X main.AppVersionGitTag=xxx" +var AppVersionGitTag = "unknown-dev" + +// Web server main routine +func webServer(ctx *cli.Context) error { + + // Init config + cfg, err := xdsconfig.Init(ctx) + if err != nil { + return cli.NewExitError(err, 2) + } + + // Create and start Web Server + svr := xdsserver.NewServer(cfg) + if err = svr.Serve(); err != nil { + log.Println(err) + return cli.NewExitError(err, 3) + } + + return cli.NewExitError("Program exited ", 4) +} + +// main +func main() { + + // Create a new instance of the logger + log := logrus.New() + + // Create a new App instance + app := cli.NewApp() + app.Name = appName + app.Description = appDescription + app.Usage = appUsage + app.Version = appVersion + " (" + AppVersionGitTag + ")" + app.Authors = appAuthors + app.Copyright = appCopyright + app.Metadata = make(map[string]interface{}) + app.Metadata["version"] = appVersion + app.Metadata["git-tag"] = AppVersionGitTag + app.Metadata["logger"] = log + + app.Flags = []cli.Flag{ + cli.StringFlag{ + Name: "config, c", + Usage: "JSON config file to use\n\t", + EnvVar: "APP_CONFIG", + }, + cli.StringFlag{ + Name: "log, l", + Value: "error", + Usage: "logging level (supported levels: panic, fatal, error, warn, info, debug)\n\t", + EnvVar: "LOG_LEVEL", + }, + } + + // only one action: Web Server + app.Action = webServer + + app.Run(os.Args) +} |