dictyBase/modware-user

View on GitHub
main.go

Summary

Maintainability
D
1 day
Test Coverage
package main

import (
    "os"

    "github.com/dictyBase/modware-user/commands"
    "github.com/dictyBase/modware-user/validate"

    "github.com/urfave/cli"
)

func main() {
    app := cli.NewApp()
    app.Name = "modware-user"
    app.Usage = "starts the modware-user microservice with HTTP and grpc backends"
    app.Version = "1.0.0"
    app.Flags = []cli.Flag{
        cli.StringFlag{
            Name:  "log-format",
            Usage: "format of the logging out, either of json or text.",
            Value: "json",
        },
        cli.StringFlag{
            Name:  "log-level",
            Usage: "log level for the application",
            Value: "error",
        },
    }
    app.Commands = []cli.Command{
        {
            Name:   "load-users",
            Usage:  "load dictybase users(colleagues) into the backend",
            Action: commands.LoadUser,
            Before: validate.ValidateLoad,
            Flags: []cli.Flag{
                cli.StringFlag{
                    Name:  "remote-path, rp",
                    Usage: "full path(relative to the bucket) of s3 object which will be download",
                    Value: "import/users.tar.gz",
                },
                cli.StringFlag{
                    Name:   "s3-server",
                    Usage:  "S3 server endpoint",
                    Value:  "minio",
                    EnvVar: "MINIO_SERVICE_HOST",
                },
                cli.StringFlag{
                    Name:   "s3-server-port",
                    Usage:  "S3 server port",
                    EnvVar: "MINIO_SERVICE_PORT",
                },
                cli.StringFlag{
                    Name:  "s3-bucket",
                    Usage: "S3 bucket where the import data is kept",
                    Value: "dictybase",
                },
                cli.StringFlag{
                    Name:   "access-key, akey",
                    EnvVar: "S3_ACCESS_KEY",
                    Usage:  "access key for S3 server, required based on command run",
                },
                cli.StringFlag{
                    Name:   "secret-key, skey",
                    EnvVar: "S3_SECRET_KEY",
                    Usage:  "secret key for S3 server, required based on command run",
                },
                cli.StringFlag{
                    Name:   "user-grpc-host",
                    EnvVar: "USER_API_SERVICE_HOST",
                    Usage:  "grpc host address for user service",
                    Value:  "user-api",
                },
                cli.StringFlag{
                    Name:   "user-grpc-port",
                    EnvVar: "USER_API_SERVICE_PORT",
                    Usage:  "grpc port for user service",
                },
                cli.StringFlag{
                    Name:  "data-file",
                    Value: "users.csv",
                    Usage: "file containing user data that is present in the bucket",
                },
            },
        },
        {
            Name:   "start-user-reply",
            Usage:  "start the reply messaging(nats) backend for user microservice",
            Action: commands.RunUserReply,
            Before: validate.ValidateReplyArgs,
            Flags: []cli.Flag{
                cli.StringFlag{
                    Name:   "user-grpc-host",
                    EnvVar: "USER_API_SERVICE_HOST",
                    Usage:  "grpc host address for user service",
                },
                cli.StringFlag{
                    Name:   "user-grpc-port",
                    EnvVar: "USER_API_SERVICE_PORT",
                    Usage:  "grpc port for user service",
                },
                cli.StringFlag{
                    Name:   "messaging-host",
                    EnvVar: "NATS_SERVICE_HOST",
                    Usage:  "host address for messaging server",
                    Value:  "nats",
                },
                cli.StringFlag{
                    Name:   "messaging-port",
                    EnvVar: "NATS_SERVICE_PORT",
                    Usage:  "port for messaging server",
                },
            },
        },
        {
            Name:   "start-role-server",
            Usage:  "starts the modware-role microservice with HTTP and grpc backends",
            Action: commands.RunRoleServer,
            Before: validate.ValidateArgs,
            Flags: []cli.Flag{
                cli.StringFlag{
                    Name:   "user-api-http-host",
                    EnvVar: "USER_API_HTTP_HOST",
                    Usage:  "public hostname serving the http api, by default the default port will be appended to http://localhost",
                },
                cli.StringFlag{
                    Name:   "dictyuser-pass",
                    EnvVar: "DICTYUSER_PASSWORD",
                    Usage:  "dictyuser database password",
                },
                cli.StringFlag{
                    Name:   "dictyuser-db",
                    EnvVar: "DICTYUSER_DB",
                    Usage:  "dictyuser database name",
                },
                cli.StringFlag{
                    Name:   "dictyuser-user",
                    EnvVar: "DICTYUSER_USER",
                    Usage:  "dictyuser database user",
                },
                cli.StringFlag{
                    Name:   "dictyuser-host",
                    Value:  "dictycontent-backend",
                    EnvVar: "DICTYCONTENT_BACKEND_SERVICE_HOST",
                    Usage:  "dictyuser database host",
                },
                cli.StringFlag{
                    Name:   "dictyuser-port",
                    EnvVar: "DICTYCONTENT_BACKEND_SERVICE_PORT",
                    Usage:  "dictyuser database port",
                },
                cli.StringFlag{
                    Name:  "port",
                    Usage: "tcp port at which the role server will be available",
                    Value: "9597",
                },
            },
        },
        {
            Name:   "start-permission-server",
            Usage:  "starts the modware-permission microservice with HTTP and grpc backends",
            Action: commands.RunPermissionServer,
            Before: validate.ValidateArgs,
            Flags: []cli.Flag{
                cli.StringFlag{
                    Name:   "user-api-http-host",
                    EnvVar: "USER_API_HTTP_HOST",
                    Usage:  "public hostname serving the http api, by default the default port will be appended to http://localhost",
                },
                cli.StringFlag{
                    Name:   "dictyuser-pass",
                    EnvVar: "DICTYUSER_PASSWORD",
                    Usage:  "dictyuser database password",
                },
                cli.StringFlag{
                    Name:   "dictyuser-db",
                    EnvVar: "DICTYUSER_DB",
                    Usage:  "dictyuser database name",
                },
                cli.StringFlag{
                    Name:   "dictyuser-user",
                    EnvVar: "DICTYUSER_USER",
                    Usage:  "dictyuser database user",
                },
                cli.StringFlag{
                    Name:   "dictyuser-host",
                    Value:  "dictycontent-backend",
                    EnvVar: "DICTYCONTENT_BACKEND_SERVICE_HOST",
                    Usage:  "dictyuser database host",
                },
                cli.StringFlag{
                    Name:   "dictyuser-port",
                    EnvVar: "DICTYCONTENT_BACKEND_SERVICE_PORT",
                    Usage:  "dictyuser database port",
                },
                cli.StringFlag{
                    Name:  "port",
                    Usage: "tcp port at which the user server will be available",
                    Value: "9596",
                },
            },
        },
        {
            Name:   "start-user-server",
            Usage:  "starts the modware-user microservice with HTTP and grpc backends",
            Action: commands.RunUserServer,
            Before: validate.ValidateArgs,
            Flags: []cli.Flag{
                cli.StringFlag{
                    Name:   "user-api-http-host",
                    EnvVar: "USER_API_HTTP_HOST",
                    Usage:  "public hostname serving the http api, by default the default port will be appended to http://localhost",
                },
                cli.StringFlag{
                    Name:   "dictyuser-pass",
                    EnvVar: "DICTYUSER_PASSWORD",
                    Usage:  "dictyuser database password",
                },
                cli.StringFlag{
                    Name:   "dictyuser-db",
                    EnvVar: "DICTYUSER_DB",
                    Usage:  "dictyuser database name",
                },
                cli.StringFlag{
                    Name:   "dictyuser-user",
                    EnvVar: "DICTYUSER_USER",
                    Usage:  "dictyuser database user",
                },
                cli.StringFlag{
                    Name:   "dictyuser-host",
                    Value:  "dictycontent-backend",
                    EnvVar: "DICTYCONTENT_BACKEND_SERVICE_HOST",
                    Usage:  "dictyuser database host",
                },
                cli.StringFlag{
                    Name:   "dictyuser-port",
                    EnvVar: "DICTYCONTENT_BACKEND_SERVICE_PORT",
                    Usage:  "dictyuser database port",
                },
                cli.StringFlag{
                    Name:  "port",
                    Usage: "tcp port at which the user server will be available",
                    Value: "9596",
                },
            },
        },
    }
    app.Run(os.Args)
}