diff --git a/internal/constants/constants.go b/internal/constants/constants.go index fcd9821..11526be 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -187,6 +187,16 @@ const ( DefaultOrganizationFields string = "id,name" ) +// Connect flags defaults +const ( + // DefaultBackendManageAddress is the default address for reaching backendManage + DefaultBackendManageAddress = "localhost:9002" + + // DefaultPasswordFile is the default file read when authenticating to backendManage + // TODO : const + "/" + const + DefaultPasswordFile = "secrets/internal_auth_password" +) + // Migration command defaults and configuration const ( // DefaultMigrationProgressInterval is the default interval for checking migration progress diff --git a/internal/manage/actions/action/action.go b/internal/manage/actions/action/action.go index a7dcc9b..d01c226 100644 --- a/internal/manage/actions/action/action.go +++ b/internal/manage/actions/action/action.go @@ -3,7 +3,9 @@ package action import ( "encoding/json" "fmt" + "os" + "github.com/OpenSlides/openslides-cli/internal/constants" "github.com/OpenSlides/openslides-cli/internal/logger" "github.com/OpenSlides/openslides-cli/internal/manage/client" "github.com/OpenSlides/openslides-cli/internal/utils" @@ -42,12 +44,16 @@ func Cmd() *cobra.Command { Args: cobra.RangeArgs(1, 2), } - address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (required)") - passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (required)") + address := cmd.Flags().StringP("address", "a", constants.DefaultBackendManageAddress, "address of the OpenSlides backendManage service (required)") + passwordFile := cmd.Flags().String("password-file", constants.DefaultPasswordFile, "file with password for authorization (required)") payloadFile := cmd.Flags().StringP("file", "f", "", "JSON file with the payload, or - for stdin") - _ = cmd.MarkFlagRequired("address") - _ = cmd.MarkFlagRequired("password-file") + if addressEnv := os.Getenv("OSMANAGE_BACKEND_ADDRESS"); addressEnv != "" { + address = &addressEnv + } + if passwordFileEnv := os.Getenv("OSMANAGE_BACKEND_PASSWORD_FILE"); passwordFileEnv != "" { + passwordFile = &passwordFileEnv + } cmd.RunE = func(cmd *cobra.Command, args []string) error { logger.Info("=== ACTION ===") diff --git a/internal/manage/actions/createuser/createuser.go b/internal/manage/actions/createuser/createuser.go index c2668c8..691980d 100644 --- a/internal/manage/actions/createuser/createuser.go +++ b/internal/manage/actions/createuser/createuser.go @@ -3,7 +3,9 @@ package createuser import ( "encoding/json" "fmt" + "os" + "github.com/OpenSlides/openslides-cli/internal/constants" "github.com/OpenSlides/openslides-cli/internal/logger" "github.com/OpenSlides/openslides-cli/internal/manage/client" "github.com/OpenSlides/openslides-cli/internal/utils" @@ -42,12 +44,16 @@ func Cmd() *cobra.Command { Args: cobra.RangeArgs(0, 1), } - address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (required)") - passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (required)") + address := cmd.Flags().StringP("address", "a", constants.DefaultBackendManageAddress, "address of the OpenSlides backendManage service (required)") + passwordFile := cmd.Flags().String("password-file", constants.DefaultPasswordFile, "file with password for authorization (required)") userFile := cmd.Flags().StringP("file", "f", "", "JSON file with user data, or - for stdin") - _ = cmd.MarkFlagRequired("address") - _ = cmd.MarkFlagRequired("password-file") + if addressEnv := os.Getenv("OSMANAGE_BACKEND_ADDRESS"); addressEnv != "" { + address = &addressEnv + } + if passwordFileEnv := os.Getenv("OSMANAGE_BACKEND_PASSWORD_FILE"); passwordFileEnv != "" { + passwordFile = &passwordFileEnv + } cmd.RunE = func(cmd *cobra.Command, args []string) error { logger.Info("=== CREATE USER ===") diff --git a/internal/manage/actions/get/get.go b/internal/manage/actions/get/get.go index 5918dbd..1e49914 100644 --- a/internal/manage/actions/get/get.go +++ b/internal/manage/actions/get/get.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "os" "reflect" "regexp" "strconv" @@ -94,12 +95,31 @@ func Cmd() *cobra.Command { postgresDatabase := cmd.Flags().String("postgres-database", "", "PostgreSQL database (required)") postgresPasswordFile := cmd.Flags().String("postgres-password-file", "", "PostgreSQL password file (required)") - // Mark PostgreSQL flags as required - _ = cmd.MarkFlagRequired("postgres-host") - _ = cmd.MarkFlagRequired("postgres-port") - _ = cmd.MarkFlagRequired("postgres-user") - _ = cmd.MarkFlagRequired("postgres-database") - _ = cmd.MarkFlagRequired("postgres-password-file") + if postgresHostEnv := os.Getenv("OSMANAGE_POSTGRES_HOST"); postgresHostEnv != "" { + postgresHost = &postgresHostEnv + } else { + _ = cmd.MarkFlagRequired("postgres-host") + } + if postgresPortEnv := os.Getenv("OSMANAGE_POSTGRES_PORT"); postgresPortEnv != "" { + postgresPort = &postgresPortEnv + } else { + _ = cmd.MarkFlagRequired("postgres-port") + } + if postgresUserEnv := os.Getenv("OSMANAGE_POSTGRES_USER"); postgresUserEnv != "" { + postgresUser = &postgresUserEnv + } else { + _ = cmd.MarkFlagRequired("postgres-user") + } + if postgresDatabaseEnv := os.Getenv("OSMANAGE_POSTGRES_DATABASE"); postgresDatabaseEnv != "" { + postgresDatabase = &postgresDatabaseEnv + } else { + _ = cmd.MarkFlagRequired("postgres-database") + } + if postgresPasswordFileEnv := os.Getenv("OSMANAGE_POSTGRES_PASSWORD_FILE"); postgresPasswordFileEnv != "" { + postgresPasswordFile = &postgresPasswordFileEnv + } else { + _ = cmd.MarkFlagRequired("postgres-password-file") + } // Query flags fields := cmd.Flags().StringSlice("fields", nil, "only include the provided fields in output") diff --git a/internal/manage/actions/initialdata/initialdata.go b/internal/manage/actions/initialdata/initialdata.go index 62e2cab..9f6ec91 100644 --- a/internal/manage/actions/initialdata/initialdata.go +++ b/internal/manage/actions/initialdata/initialdata.go @@ -7,6 +7,7 @@ import ( "os" "strings" + "github.com/OpenSlides/openslides-cli/internal/constants" "github.com/OpenSlides/openslides-cli/internal/logger" "github.com/OpenSlides/openslides-cli/internal/manage/client" "github.com/OpenSlides/openslides-cli/internal/utils" @@ -45,14 +46,17 @@ func Cmd() *cobra.Command { Args: cobra.NoArgs, } - address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (required)") - passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (required)") + address := cmd.Flags().StringP("address", "a", constants.DefaultBackendManageAddress, "address of the OpenSlides backendManage service (required)") + passwordFile := cmd.Flags().String("password-file", constants.DefaultPasswordFile, "file with password for authorization (required)") superadminPasswordFile := cmd.Flags().String("superadmin-password-file", "", "file with superadmin password (required)") dataFile := cmd.Flags().StringP("file", "f", "", "JSON file with initial data, or - for stdin") - _ = cmd.MarkFlagRequired("address") - _ = cmd.MarkFlagRequired("password-file") - _ = cmd.MarkFlagRequired("superadmin-password-file") + if addressEnv := os.Getenv("OSMANAGE_BACKEND_ADDRESS"); addressEnv != "" { + address = &addressEnv + } + if passwordFileEnv := os.Getenv("OSMANAGE_BACKEND_PASSWORD_FILE"); passwordFileEnv != "" { + passwordFile = &passwordFileEnv + } cmd.RunE = func(cmd *cobra.Command, args []string) error { if strings.TrimSpace(*superadminPasswordFile) == "" { diff --git a/internal/manage/actions/migrations/migrations.go b/internal/manage/actions/migrations/migrations.go index d4773ef..e2b180a 100644 --- a/internal/manage/actions/migrations/migrations.go +++ b/internal/manage/actions/migrations/migrations.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "os" "strings" "time" @@ -112,11 +113,15 @@ func createMigrationCmd(name, description string, withProgressTracking bool) *co Args: cobra.NoArgs, } - address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (required)") - passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (required)") + address := cmd.Flags().StringP("address", "a", constants.DefaultBackendManageAddress, "address of the OpenSlides backendManage service (required)") + passwordFile := cmd.Flags().String("password-file", constants.DefaultPasswordFile, "file with password for authorization (required)") - _ = cmd.MarkFlagRequired("address") - _ = cmd.MarkFlagRequired("password-file") + if addressEnv := os.Getenv("OSMANAGE_BACKEND_ADDRESS"); addressEnv != "" { + address = &addressEnv + } + if passwordFileEnv := os.Getenv("OSMANAGE_BACKEND_PASSWORD_FILE"); passwordFileEnv != "" { + passwordFile = &passwordFileEnv + } var progressInterval *time.Duration if withProgressTracking { diff --git a/internal/manage/actions/set/set.go b/internal/manage/actions/set/set.go index fde5945..eb15a37 100644 --- a/internal/manage/actions/set/set.go +++ b/internal/manage/actions/set/set.go @@ -3,9 +3,11 @@ package set import ( "encoding/json" "fmt" + "os" "sort" "strings" + "github.com/OpenSlides/openslides-cli/internal/constants" "github.com/OpenSlides/openslides-cli/internal/logger" "github.com/OpenSlides/openslides-cli/internal/manage/client" "github.com/OpenSlides/openslides-cli/internal/utils" @@ -58,12 +60,16 @@ func Cmd() *cobra.Command { Args: cobra.RangeArgs(1, 2), } - address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (required)") - passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (required)") + address := cmd.Flags().StringP("address", "a", constants.DefaultBackendManageAddress, "address of the OpenSlides backendManage service (required)") + passwordFile := cmd.Flags().String("password-file", constants.DefaultPasswordFile, "file with password for authorization (required)") payloadFile := cmd.Flags().StringP("file", "f", "", "JSON file with the payload, or - for stdin") - _ = cmd.MarkFlagRequired("address") - _ = cmd.MarkFlagRequired("password-file") + if addressEnv := os.Getenv("OSMANAGE_BACKEND_ADDRESS"); addressEnv != "" { + address = &addressEnv + } + if passwordFileEnv := os.Getenv("OSMANAGE_BACKEND_PASSWORD_FILE"); passwordFileEnv != "" { + passwordFile = &passwordFileEnv + } cmd.RunE = func(cmd *cobra.Command, args []string) error { logger.Info("=== SET ACTION ===") diff --git a/internal/manage/actions/setpassword/setpassword.go b/internal/manage/actions/setpassword/setpassword.go index 848d97c..31fb76f 100644 --- a/internal/manage/actions/setpassword/setpassword.go +++ b/internal/manage/actions/setpassword/setpassword.go @@ -3,8 +3,10 @@ package setpassword import ( "encoding/json" "fmt" + "os" "strings" + "github.com/OpenSlides/openslides-cli/internal/constants" "github.com/OpenSlides/openslides-cli/internal/logger" "github.com/OpenSlides/openslides-cli/internal/manage/client" "github.com/OpenSlides/openslides-cli/internal/utils" @@ -25,13 +27,18 @@ func Cmd() *cobra.Command { Args: cobra.NoArgs, } - address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (required)") - passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (required)") + address := cmd.Flags().StringP("address", "a", constants.DefaultBackendManageAddress, "address of the OpenSlides backendManage service (required)") + passwordFile := cmd.Flags().String("password-file", constants.DefaultPasswordFile, "file with password for authorization (required)") password := cmd.Flags().StringP("password", "p", "", "new password of the user (required)") userID := cmd.Flags().Int64P("user_id", "u", 0, "ID of the user account (required)") - _ = cmd.MarkFlagRequired("address") - _ = cmd.MarkFlagRequired("password-file") + if addressEnv := os.Getenv("OSMANAGE_BACKEND_ADDRESS"); addressEnv != "" { + address = &addressEnv + } + if passwordFileEnv := os.Getenv("OSMANAGE_BACKEND_PASSWORD_FILE"); passwordFileEnv != "" { + passwordFile = &passwordFileEnv + } + _ = cmd.MarkFlagRequired("user_id") _ = cmd.MarkFlagRequired("password")