summaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go87
1 files changed, 87 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..6561785
--- /dev/null
+++ b/main.go
@@ -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)
+}