/* * Copyright (C) 2017-2018 "IoT.bzh" * Author Sebastien Douheret <sebastien@iot.bzh> * * 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. * * * xds-server: X(cross) Development System server. */ package main import ( "fmt" "os" "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xdsconfig" "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xdsserver" "github.com/Sirupsen/logrus" "github.com/codegangsta/cli" ) const ( appName = "xds-server" appDescription = "X(cross) Development System Server is a web server that allows to remotely cross build applications." appCopyright = "Copyright (C) 2017-2018 IoT.bzh - Apache-2.0" appUsage = "X(cross) Development System Server" ) var appAuthors = []cli.Author{ cli.Author{Name: "Sebastien Douheret", Email: "sebastien@iot.bzh"}, } // AppVersion is the version of this application var AppVersion = "?.?.?" // AppSubVersion is the git tag id added to version string // Should be set by compilation -ldflags "-X main.AppSubVersion=xxx" var AppSubVersion = "unknown-dev" // XDS Server application main routine func xdsApp(cliCtx *cli.Context) error { var err error // Create XDS server context ctxSvr := xdsserver.NewXdsServer(cliCtx) // Load config ctxSvr.Config, err = xdsconfig.Init(cliCtx, ctxSvr.Log) if err != nil { return cli.NewExitError(err, -2) } // Run XDS Server (main loop) errCode, err := ctxSvr.Run() return cli.NewExitError(err, errCode) } // 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 + " (" + AppSubVersion + ")" app.Authors = appAuthors app.Copyright = appCopyright app.Metadata = make(map[string]interface{}) app.Metadata["version"] = AppVersion app.Metadata["git-tag"] = AppSubVersion 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", }, cli.StringFlag{ Name: "logfile", Value: "stdout", Usage: "filename where logs will be redirected (default stdout)\n\t", EnvVar: "LOG_FILENAME", }, cli.BoolFlag{ Name: "no-folderconfig, nfc", Usage: fmt.Sprintf("Do not read folder config file (%s)\n\t", xdsconfig.FoldersConfigFilename), EnvVar: "NO_FOLDERCONFIG", }, } // only one action: Web Server app.Action = xdsApp app.Run(os.Args) }