Skip to content

Instantly share code, notes, and snippets.

@christopher-wong
Created March 13, 2020 21:00
Show Gist options
  • Save christopher-wong/b690fd31080b5eb3f8ca17840ba42e5c to your computer and use it in GitHub Desktop.
Save christopher-wong/b690fd31080b5eb3f8ca17840ba42e5c to your computer and use it in GitHub Desktop.
bad times
func run(args []string, stdout io.Writer) error {
envflag.Parse()
zapper, _ := zap.NewProduction()
logger := zapper.Sugar()
// load configuration from config file and environment
cfg, err := config.Load()
if err != nil {
logger.Errorw(configInitErr,
"msg", err.Error(),
)
return errors.Wrap(err, configInitErr)
}
secretsClient, err := secrets.NewClient(cfg.AWSRegion)
if err != nil {
logger.Errorw(secretsClientCreateErr,
"msg", err.Error(),
)
return errors.Wrap(err, secretsClientCreateErr)
}
dbSecretString, err := secretsClient.Get(cfg.Secrets.AuroraSecretKey)
if err != nil {
logger.Errorw(secretsClientCreateErr,
"msg", err.Error(),
)
return errors.Wrap(err, secretsClientCreateErr)
}
var dbSecretMap map[string]string
json.NewDecoder(strings.NewReader(dbSecretString)).Decode(&dbSecretMap)
storageClient, err := storage.New(cfg, logger, dbSecretMap["username"], dbSecretMap["password"])
if err != nil {
logger.Errorw(storageClientCreateErr,
"msg", err.Error(),
)
return errors.Wrap(err, storageClientCreateErr)
}
serverCfg := &server.Config{
ListenAddress: fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port),
Dev: cfg.Server.DevMode,
Region: cfg.AWSRegion,
Version: cfg.Version,
}
s3Client, err := s3.NewClient(cfg.AWSRegion)
if err != nil {
logger.Errorw(
s3ClientCreateErr,
"msg", err.Error(),
)
return errors.Wrap(err, s3ClientCreateErr)
}
app, err := server.New(serverCfg, zapper, logger, s3Client, storageClient)
if err != nil {
logger.Errorw(configHTTPInitErr,
"msg", err.Error(),
)
return errors.Wrap(err, configHTTPInitErr)
}
var wg sync.WaitGroup
var serverErr error
wg.Add(1)
go func() {
defer wg.Done()
if serverErr = app.Run(); err != nil {
logger.Infow(httpStartErr,
"msg", err.Error(),
)
}
}()
wg.Wait()
return serverErr
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment