github.com/thlcodes/genfig@v0.3.2-alpha/example/config/plugin_update_from_env.go (about) 1 // Code generated by genfig plugin 'update_from_env'; DO NOT EDIT. 2 3 package config 4 5 import ( 6 "encoding/json" 7 "fmt" 8 "os" 9 "strconv" 10 "strings" 11 ) 12 13 var ( 14 _ = os.LookupEnv 15 _ = fmt.Sprintf 16 _ = json.Marshal 17 ) 18 19 func (c *Config) UpdateFromEnv() []error { 20 var val string 21 _ = val 22 var exists bool 23 _ = exists 24 var envs []string 25 _ = envs 26 var errors = []error{} 27 28 envs = []string{"apis.google.uri", "APIS_GOOGLE_URI"} 29 for _, env := range envs { 30 if val, exists = os.LookupEnv(env); exists { 31 break 32 } 33 } 34 if exists { 35 c.Apis.Google.Uri = val 36 } 37 38 envs = []string{"db.pass", "DB_PASS"} 39 for _, env := range envs { 40 if val, exists = os.LookupEnv(env); exists { 41 break 42 } 43 } 44 if exists { 45 c.Db.Pass = val 46 } 47 48 envs = []string{"db.uri", "DB_URI"} 49 for _, env := range envs { 50 if val, exists = os.LookupEnv(env); exists { 51 break 52 } 53 } 54 if exists { 55 c.Db.Uri = val 56 } 57 58 envs = []string{"db.user", "DB_USER"} 59 for _, env := range envs { 60 if val, exists = os.LookupEnv(env); exists { 61 break 62 } 63 } 64 if exists { 65 c.Db.User = val 66 } 67 68 envs = []string{"emptyarray", "EMPTYARRAY"} 69 for _, env := range envs { 70 if val, exists = os.LookupEnv(env); exists { 71 break 72 } 73 } 74 if exists { 75 if err := parseInterfaceSlice(val, &c.EmptyArray); err != nil { 76 errors = append(errors, fmt.Errorf("Genfig: could not parse []interface {} from CONFIG_EMPTYARRAY ('%s')\n", val)) 77 } 78 } 79 80 envs = []string{"list", "LIST"} 81 for _, env := range envs { 82 if val, exists = os.LookupEnv(env); exists { 83 break 84 } 85 } 86 if exists { 87 if err := parseMapSlice(val, &c.List); err != nil { 88 errors = append(errors, fmt.Errorf("Genfig: could not parse []map[string]interface {} from CONFIG_LIST ('%s')\n", val)) 89 } 90 } 91 92 envs = []string{"longdesc.de", "LONGDESC_DE"} 93 for _, env := range envs { 94 if val, exists = os.LookupEnv(env); exists { 95 break 96 } 97 } 98 if exists { 99 c.LongDesc.De = val 100 } 101 102 envs = []string{"longdesc.en", "LONGDESC_EN"} 103 for _, env := range envs { 104 if val, exists = os.LookupEnv(env); exists { 105 break 106 } 107 } 108 if exists { 109 c.LongDesc.En = val 110 } 111 112 envs = []string{"project", "PROJECT"} 113 for _, env := range envs { 114 if val, exists = os.LookupEnv(env); exists { 115 break 116 } 117 } 118 if exists { 119 c.Project = val 120 } 121 122 envs = []string{"randomizer.threshold", "RANDOMIZER_THRESHOLD"} 123 for _, env := range envs { 124 if val, exists = os.LookupEnv(env); exists { 125 break 126 } 127 } 128 if exists { 129 if err := parseFloat64(val, &c.Randomizer.Threshold); err != nil { 130 errors = append(errors, fmt.Errorf("Genfig: could not parse float64 from CONFIG_RANDOMIZER_THRESHOLD ('%s')\n", val)) 131 } 132 } 133 134 envs = []string{"secrets", "SECRETS"} 135 for _, env := range envs { 136 if val, exists = os.LookupEnv(env); exists { 137 break 138 } 139 } 140 if exists { 141 if err := parseStringSlice(val, &c.Secrets); err != nil { 142 errors = append(errors, fmt.Errorf("Genfig: could not parse []string from CONFIG_SECRETS ('%s')\n", val)) 143 } 144 } 145 146 envs = []string{"server.host", "SERVER_HOST"} 147 for _, env := range envs { 148 if val, exists = os.LookupEnv(env); exists { 149 break 150 } 151 } 152 if exists { 153 c.Server.Host = val 154 } 155 156 envs = []string{"server.port", "SERVER_PORT"} 157 for _, env := range envs { 158 if val, exists = os.LookupEnv(env); exists { 159 break 160 } 161 } 162 if exists { 163 if err := parseInt64(val, &c.Server.Port); err != nil { 164 errors = append(errors, fmt.Errorf("Genfig: could not parse int64 from CONFIG_SERVER_PORT ('%s')\n", val)) 165 } 166 } 167 168 envs = []string{"version", "VERSION"} 169 for _, env := range envs { 170 if val, exists = os.LookupEnv(env); exists { 171 break 172 } 173 } 174 if exists { 175 c.Version = val 176 } 177 178 envs = []string{"wip", "WIP"} 179 for _, env := range envs { 180 if val, exists = os.LookupEnv(env); exists { 181 break 182 } 183 } 184 if exists { 185 if err := parseBool(val, &c.Wip); err != nil { 186 errors = append(errors, fmt.Errorf("Genfig: could not parse bool from CONFIG_WIP ('%s')\n", val)) 187 } 188 } 189 190 if len(errors) == 0 { 191 return nil 192 } else { 193 return errors 194 } 195 } 196 197 // these are wrappers, so that they can 198 // a) be referenced easily be the code generator and 199 // b) be replaces easily by you (or me) 200 func parseInt64(s string, i *int64) (err error) { 201 if got, err := strconv.ParseInt(s, 10, 0); err == nil { 202 *i = got 203 } 204 return 205 } 206 207 func parseFloat64(s string, f *float64) (err error) { 208 if got, err := strconv.ParseFloat(s, 0); err == nil { 209 *f = got 210 } 211 return 212 } 213 214 func parseBool(s string, b *bool) (err error) { 215 if got, err := strconv.ParseBool(s); err == nil { 216 *b = got 217 } 218 return 219 } 220 221 func parseStringSlice(s string, a *[]string) (err error) { 222 add := false 223 if strings.HasPrefix(s, "+") { 224 add = true 225 s = s[1:] 226 } 227 tmp := []string{} 228 if err = json.Unmarshal([]byte(s), &tmp); err != nil { 229 return 230 } 231 if add { 232 *a = append(*a, tmp...) 233 } else { 234 *a = tmp 235 } 236 return 237 } 238 239 func parseInt64Slice(s string, a *[]int64) (err error) { 240 add := false 241 if strings.HasPrefix(s, "+") { 242 add = true 243 s = s[1:] 244 } 245 tmp := []int64{} 246 if err = json.Unmarshal([]byte(s), &tmp); err != nil { 247 return 248 } 249 if add { 250 *a = append(*a, tmp...) 251 } else { 252 *a = tmp 253 } 254 return 255 } 256 257 func parseFloat64Slice(s string, a *[]float64) (err error) { 258 add := false 259 if strings.HasPrefix(s, "+") { 260 add = true 261 s = s[1:] 262 } 263 tmp := []float64{} 264 if err = json.Unmarshal([]byte(s), &tmp); err != nil { 265 return 266 } 267 if add { 268 *a = append(*a, tmp...) 269 } else { 270 *a = tmp 271 } 272 return 273 } 274 275 func parseInterfaceSlice(s string, a *[]interface{}) (err error) { 276 add := false 277 if strings.HasPrefix(s, "+") { 278 add = true 279 s = s[1:] 280 } 281 tmp := []interface{}{} 282 if err = json.Unmarshal([]byte(s), &tmp); err != nil { 283 return 284 } 285 if add { 286 *a = append(*a, tmp...) 287 } else { 288 *a = tmp 289 } 290 return 291 } 292 293 func parseMapSlice(s string, a *[]map[string]interface{}) (err error) { 294 add := false 295 if strings.HasPrefix(s, "+") { 296 add = true 297 s = s[1:] 298 } 299 tmp := []map[string]interface{}{} 300 if err = json.Unmarshal([]byte(s), &tmp); err != nil { 301 return 302 } 303 if add { 304 *a = append(*a, tmp...) 305 } else { 306 *a = tmp 307 } 308 return 309 }