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  }