Skip to content

Commit

Permalink
feat(commands): allow configuration via envvars
Browse files Browse the repository at this point in the history
  • Loading branch information
mrsimonemms committed Dec 12, 2022
1 parent b44563c commit 451a69e
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitpod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ tasks:
go install golang.org/x/tools/cmd/goimports@latest
go install ./...
env:
GOBBLR_DATABASE: gobblr
GOBBLR_PATH: ./examples/simple/data
command: |
# Copy .cobra.yaml to $HOME
cp .cobra.yaml $HOME/.cobra.yaml
Expand Down
19 changes: 19 additions & 0 deletions cmd/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"fmt"
"os"
"path"
"strings"

"github.com/mrsimonemms/gobblr/pkg/drivers"
"github.com/mrsimonemms/gobblr/pkg/gobblr"
Expand Down Expand Up @@ -66,12 +67,30 @@ var dbCmd = &cobra.Command{
},
}

const (
envvarPrefix = "GOBBLR"
)

func bindEnv(key string) {
envvarName := fmt.Sprintf("%s_%s", envvarPrefix, key)
envvarName = strings.Replace(envvarName, "-", "_", -1)
envvarName = strings.ToUpper(envvarName)

err := viper.BindEnv(key, envvarName)
cobra.CheckErr(err)
}

func init() {
rootCmd.AddCommand(dbCmd)

currentPath, err := os.Getwd()
cobra.CheckErr(err)

bindEnv("path")
bindEnv("retries")
bindEnv("run")
bindEnv("run-port")

viper.SetDefault("path", path.Join(currentPath, "data"))
viper.SetDefault("retries", 0)
viper.SetDefault("run", false)
Expand Down
3 changes: 3 additions & 0 deletions cmd/db_mongodb.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ var dbMongodbCmd = &cobra.Command{
func init() {
dbCmd.AddCommand(dbMongodbCmd)

bindEnv("connection-uri")
bindEnv("database")

viper.SetDefault("connection-uri", "mongodb://localhost:27017")
dbMongodbCmd.Flags().StringVarP(&dbMongodbOpts.ConnectionURI, "connection-uri", "u", viper.GetString("connection-uri"), "database connection uri")
dbMongodbCmd.Flags().StringVarP(&dbMongodbOpts.Database, "database", "d", viper.GetString("database"), "name of the database to use")
Expand Down
6 changes: 6 additions & 0 deletions cmd/db_sql_mysql.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ var dbSqlMysqlCmd = &cobra.Command{
func init() {
dbSqlCmd.AddCommand(dbSqlMysqlCmd)

bindEnv("database")
bindEnv("host")
bindEnv("password")
bindEnv("port")
bindEnv("username")

viper.SetDefault("host", "localhost")
viper.SetDefault("port", 3306)
viper.SetDefault("username", "root")
Expand Down
6 changes: 6 additions & 0 deletions cmd/db_sql_postgres.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ var dbSqlPostgresCmd = &cobra.Command{
func init() {
dbSqlCmd.AddCommand(dbSqlPostgresCmd)

bindEnv("database")
bindEnv("host")
bindEnv("password")
bindEnv("port")
bindEnv("username")

viper.SetDefault("host", "localhost")
viper.SetDefault("port", 5432)
viper.SetDefault("username", "postgres")
Expand Down
2 changes: 2 additions & 0 deletions cmd/db_sql_sqlite.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ var dbSqlSqliteCmd = &cobra.Command{
func init() {
dbSqlCmd.AddCommand(dbSqlSqliteCmd)

bindEnv("file")

viper.SetDefault("file", "sqlite.db")
dbSqlSqliteCmd.Flags().StringVarP(&dbSqlSqliteOpts.File, "file", "f", viper.GetString("file"), "SQLite database file")
}
6 changes: 6 additions & 0 deletions cmd/db_sql_sqlserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ var dbSqlSqlserverCmd = &cobra.Command{
func init() {
dbSqlCmd.AddCommand(dbSqlSqlserverCmd)

bindEnv("database")
bindEnv("host")
bindEnv("password")
bindEnv("port")
bindEnv("username")

viper.SetDefault("host", "localhost")
viper.SetDefault("port", 1433)
viper.SetDefault("username", "sa")
Expand Down

0 comments on commit 451a69e

Please sign in to comment.