github.com/lovung/GoCleanArchitecture@v0.0.0-20210302152432-50d91fd29f9f/cmd/services/core/flags.go (about)

     1  package main
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/urfave/cli/v2"
     7  )
     8  
     9  // APP env: should only put environment variable related to the service itself, eg: Application Name, version, running environment, ...
    10  var (
    11  	EnvFlag = &cli.StringFlag{
    12  		Name:    "env",
    13  		Usage:   "Application environment: development, staging, production",
    14  		EnvVars: []string{"ENV"},
    15  		Value:   "development",
    16  	}
    17  
    18  	AppNameFlag = &cli.StringFlag{
    19  		Name:    "app_name",
    20  		Usage:   "Application name",
    21  		EnvVars: []string{"APP_NAME"},
    22  		Value:   "GoCleanArchitecture core service",
    23  	}
    24  
    25  	AppVersionFlag = &cli.StringFlag{
    26  		Name:    "app_version",
    27  		Usage:   "Application version",
    28  		EnvVars: []string{"APP_VERSION"},
    29  		Value:   "v1",
    30  	}
    31  
    32  	HTTPPortFlag = &cli.StringFlag{
    33  		Name:    "http_port",
    34  		Usage:   "Port binding to application",
    35  		EnvVars: []string{"HTTP_PORT"},
    36  		Value:   "20000",
    37  	}
    38  
    39  	HTTPTimeoutFlag = &cli.DurationFlag{
    40  		Name:    "http_timeout",
    41  		Usage:   "Time out for HTTP request",
    42  		EnvVars: []string{"HTTP_TIMEOUT"},
    43  		Value:   time.Second,
    44  	}
    45  )
    46  
    47  // MYSQL env
    48  var (
    49  	MYSQLConnFlag = &cli.StringFlag{
    50  		Name:    "mysql_conn",
    51  		Usage:   `specify MySQL connection string. If non empty then other flags begin with "mysql_" will be ignore`,
    52  		EnvVars: []string{"JAWSDB_URL"}, // support for heroku deployment.
    53  		Value:   "",
    54  	}
    55  
    56  	MYSQLHostFlag = &cli.StringFlag{
    57  		Name:    "mysql_host",
    58  		Usage:   "specify MySQL host",
    59  		EnvVars: []string{"MYSQL_HOST"},
    60  		Value:   "localhost",
    61  	}
    62  
    63  	MySQLPortFlag = &cli.StringFlag{
    64  		Name:    "mysql_port",
    65  		Usage:   "MySQL port is using by application",
    66  		EnvVars: []string{"MYSQL_PORT"},
    67  		Value:   "10001",
    68  	}
    69  
    70  	MySQLUserFlag = &cli.StringFlag{
    71  		Name:    "mysql_user",
    72  		Usage:   "specify MySQL user",
    73  		EnvVars: []string{"MYSQL_USER"},
    74  		Value:   "admin",
    75  	}
    76  
    77  	MySQLPasswordFlag = &cli.StringFlag{
    78  		Name:    "mysql_password",
    79  		Usage:   "password used for MySQL user",
    80  		EnvVars: []string{"MYSQL_PASSWORD"},
    81  		Value:   "gocleanarchitecture12345",
    82  	}
    83  
    84  	MySQLDatabaseFlag = &cli.StringFlag{
    85  		Name:    "mysql_database",
    86  		Usage:   "MySQL database is using by application",
    87  		EnvVars: []string{"MYSQL_DATABASE"},
    88  		Value:   "gocleanarchitecture",
    89  	}
    90  
    91  	MySQLMaxOpenConnsFlag = &cli.IntFlag{
    92  		Name:    "mysql_max_open_conns",
    93  		Usage:   "sets the maximum number of open connections to the database",
    94  		EnvVars: []string{"MYSQL_MAX_OPEN_CONNS"},
    95  		Value:   10,
    96  	}
    97  
    98  	MySQLMaxIdleConnsFlag = &cli.IntFlag{
    99  		Name:    "mysql_max_idle_conns",
   100  		Usage:   "sets the maximum number of connections in the idle connection pool",
   101  		EnvVars: []string{"MYSQL_MAX_IDLE_CONNS"},
   102  		Value:   5,
   103  	}
   104  
   105  	MySQLConnMaxLifetimeFlag = &cli.IntFlag{
   106  		Name:    "mysql_conn_max_lifetime",
   107  		Usage:   "sets the maximum amount of time in minutes a connection may be reused",
   108  		EnvVars: []string{"MYSQL_CONN_MAX_LIFETIME"},
   109  		Value:   60,
   110  	}
   111  )
   112  
   113  // // Local storage
   114  // var (
   115  // 	LocalDataDirFlag = &cli.StringFlag{
   116  // 		Name:    "local_data_dir",
   117  // 		Usage:   "local data directory path",
   118  // 		EnvVars: []string{"LOCAL_DATA_DIR"},
   119  // 		Value:   "github.com/lovung/GoCleanArchitecture",
   120  // 	}
   121  // )
   122  
   123  // // Redis Config flag
   124  // var (
   125  // 	RedisConnFlag = &cli.StringFlag{
   126  // 		Name:    "redis_conn",
   127  // 		Usage:   `specify Redis connection string. If non empty then other flags begin with "redis_" will be ignore`,
   128  // 		EnvVars: []string{"REDISCLOUD_URL"}, // support for heroku deployment.
   129  // 		Value:   "",
   130  // 	}
   131  
   132  // 	RedisHostFlag = &cli.StringFlag{
   133  // 		Name:    "redis_host",
   134  // 		Usage:   "specify Redis host",
   135  // 		EnvVars: []string{"REDIS_HOST"},
   136  // 		Value:   "localhost",
   137  // 	}
   138  
   139  // 	RedisPortFlag = &cli.StringFlag{
   140  // 		Name:    "redis_port",
   141  // 		Usage:   "Redis port is using by application",
   142  // 		EnvVars: []string{"REDIS_PORT"},
   143  // 		Value:   "16379",
   144  // 	}
   145  
   146  // 	RedisUserFlag = &cli.StringFlag{
   147  // 		Name:    "redis_user",
   148  // 		Usage:   "specify Redis user",
   149  // 		EnvVars: []string{"REDIS_USER"},
   150  // 		Value:   "admin",
   151  // 	}
   152  
   153  // 	RedisPasswordFlag = &cli.StringFlag{
   154  // 		Name:    "redis_password",
   155  // 		Usage:   "password used for Redis user",
   156  // 		EnvVars: []string{"REDIS_PASSWORD"},
   157  // 		Value:   "moneyforward123",
   158  // 	}
   159  
   160  // 	RedisEnabledTLSFlag = &cli.BoolFlag{
   161  // 		Name:    "redis_enabled_tls",
   162  // 		Usage:   "enable tls for Redis tls connection",
   163  // 		EnvVars: []string{"REDIS_ENABLED_TLS"},
   164  // 		Value:   false,
   165  // 	}
   166  
   167  // 	RedisInsecureSkipVerifyFlag = &cli.BoolFlag{
   168  // 		Name:    "redis_insecure_skip_verify",
   169  // 		Usage:   "insecure_skip_verify used for Redis tls verify",
   170  // 		EnvVars: []string{"REDIS_INSECURE_SKIP_VERIFY"},
   171  // 		Value:   true,
   172  // 	}
   173  
   174  // 	RedisDatabaseFlag = &cli.IntFlag{
   175  // 		Name:    "redis_db",
   176  // 		Usage:   "Redis database is using by application",
   177  // 		EnvVars: []string{"REDIS_DB"},
   178  // 		Value:   0,
   179  // 	}
   180  
   181  // 	RedisPoolSizeFlag = &cli.IntFlag{
   182  // 		Name:    "redis_max_open_conns",
   183  // 		Usage:   "sets the maximum number of open connections to the database",
   184  // 		EnvVars: []string{"REDIS_POOL_SIZE"},
   185  // 		Value:   10,
   186  // 	}
   187  // )
   188  
   189  // Log and notifier env
   190  var (
   191  	LogLevelFlag = &cli.StringFlag{
   192  		Name:    "log_level",
   193  		Usage:   "Level to log message to standard loggger: panic, fatal, error, warn, warning, info, debug",
   194  		EnvVars: []string{"LOG_LEVEL"},
   195  		Value:   "info",
   196  	}
   197  )
   198  
   199  // For Authentication of JWT
   200  var (
   201  	JWTSecretFlag = &cli.StringFlag{
   202  		Name:    "jwt_secret",
   203  		Usage:   "it will be used to sign JWT",
   204  		EnvVars: []string{"JWT_SECRET"},
   205  		Value:   "dummy_for_local",
   206  	}
   207  )
   208  
   209  // For pprof middleware
   210  var (
   211  	EnabledProfilingFlag = &cli.BoolFlag{
   212  		Name:    "enabled_pprof",
   213  		Usage:   "enable pprof middleware",
   214  		EnvVars: []string{"ENABLED_PPROF"},
   215  		Value:   false,
   216  	}
   217  )