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 )