Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions internal/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,12 @@ const (

// PostgreSQL datastore environment variable keys (used by get command)
const (
// EnvOsmanageBackendAddress is the environment variable for address to reach backendManage
EnvOsmanageBackendAddress string = "OSMANAGE_BACKEND_ADDRESS"

// EnvOsmanageBackendPasswordFile is the environment variable for the password file read to authenticate to backendManage
EnvOsmanageBackendPasswordFile string = "OSMANAGE_BACKEND_PASSWORD_FILE"

// EnvDatabaseHost is the environment variable for PostgreSQL host
EnvDatabaseHost string = "DATABASE_HOST"

Expand Down Expand Up @@ -187,6 +193,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
Expand Down
11 changes: 6 additions & 5 deletions internal/manage/actions/action/action.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"

"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"
Expand Down Expand Up @@ -42,14 +43,14 @@ 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", "", "address of the OpenSlides backendManage service (default: "+constants.DefaultBackendManageAddress+")")
passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (default: "+constants.DefaultPasswordFile+")")
payloadFile := cmd.Flags().StringP("file", "f", "", "JSON file with the payload, or - for stdin")

_ = cmd.MarkFlagRequired("address")
_ = cmd.MarkFlagRequired("password-file")

cmd.RunE = func(cmd *cobra.Command, args []string) error {
utils.KeepValueOrEnvOrDefault(address, constants.EnvOsmanageBackendAddress, constants.DefaultBackendManageAddress)
utils.KeepValueOrEnvOrDefault(passwordFile, constants.EnvOsmanageBackendPasswordFile, constants.DefaultPasswordFile)

logger.Info("=== ACTION ===")

actionName := args[0]
Expand Down
11 changes: 6 additions & 5 deletions internal/manage/actions/createuser/createuser.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"

"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"
Expand Down Expand Up @@ -42,14 +43,14 @@ 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", "", "address of the OpenSlides backendManage service (default: "+constants.DefaultBackendManageAddress+")")
passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (default: "+constants.DefaultPasswordFile+")")
userFile := cmd.Flags().StringP("file", "f", "", "JSON file with user data, or - for stdin")

_ = cmd.MarkFlagRequired("address")
_ = cmd.MarkFlagRequired("password-file")

cmd.RunE = func(cmd *cobra.Command, args []string) error {
utils.KeepValueOrEnvOrDefault(address, constants.EnvOsmanageBackendAddress, constants.DefaultBackendManageAddress)
utils.KeepValueOrEnvOrDefault(passwordFile, constants.EnvOsmanageBackendPasswordFile, constants.DefaultPasswordFile)

logger.Info("=== CREATE USER ===")

var input string
Expand Down
32 changes: 26 additions & 6 deletions internal/manage/actions/get/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"os"
"reflect"
"regexp"
"strconv"
Expand Down Expand Up @@ -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")
Expand Down
10 changes: 6 additions & 4 deletions internal/manage/actions/initialdata/initialdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -45,20 +46,21 @@ 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", "", "address of the OpenSlides backendManage service (default: "+constants.DefaultBackendManageAddress+")")
passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (default: "+constants.DefaultPasswordFile+")")
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")

cmd.RunE = func(cmd *cobra.Command, args []string) error {
if strings.TrimSpace(*superadminPasswordFile) == "" {
return fmt.Errorf("--superadmin-password-file cannot be empty")
}

utils.KeepValueOrEnvOrDefault(address, constants.EnvOsmanageBackendAddress, constants.DefaultBackendManageAddress)
utils.KeepValueOrEnvOrDefault(passwordFile, constants.EnvOsmanageBackendPasswordFile, constants.DefaultPasswordFile)

logger.Info("=== INITIAL DATA ===")

var data []byte
Expand Down
10 changes: 5 additions & 5 deletions internal/manage/actions/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,8 @@ 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)")

_ = cmd.MarkFlagRequired("address")
_ = cmd.MarkFlagRequired("password-file")
address := cmd.Flags().StringP("address", "a", "", "address of the OpenSlides backendManage service (default: "+constants.DefaultBackendManageAddress+")")
passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (default: "+constants.DefaultPasswordFile+")")

var progressInterval *time.Duration
if withProgressTracking {
Expand All @@ -125,6 +122,9 @@ func createMigrationCmd(name, description string, withProgressTracking bool) *co
}

cmd.RunE = func(cmd *cobra.Command, args []string) error {
utils.KeepValueOrEnvOrDefault(address, constants.EnvOsmanageBackendAddress, constants.DefaultBackendManageAddress)
utils.KeepValueOrEnvOrDefault(passwordFile, constants.EnvOsmanageBackendPasswordFile, constants.DefaultPasswordFile)

logger.Info("=== MIGRATIONS: %s ===", strings.ToUpper(name))

authPassword, err := utils.ReadPassword(*passwordFile)
Expand Down
11 changes: 6 additions & 5 deletions internal/manage/actions/set/set.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"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"
Expand Down Expand Up @@ -58,14 +59,14 @@ 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", "", "address of the OpenSlides backendManage service (default: "+constants.DefaultBackendManageAddress+")")
passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (default: "+constants.DefaultPasswordFile+")")
payloadFile := cmd.Flags().StringP("file", "f", "", "JSON file with the payload, or - for stdin")

_ = cmd.MarkFlagRequired("address")
_ = cmd.MarkFlagRequired("password-file")

cmd.RunE = func(cmd *cobra.Command, args []string) error {
utils.KeepValueOrEnvOrDefault(address, constants.EnvOsmanageBackendAddress, constants.DefaultBackendManageAddress)
utils.KeepValueOrEnvOrDefault(passwordFile, constants.EnvOsmanageBackendPasswordFile, constants.DefaultPasswordFile)

logger.Info("=== SET ACTION ===")

action := args[0]
Expand Down
10 changes: 6 additions & 4 deletions internal/manage/actions/setpassword/setpassword.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"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"
Expand All @@ -25,13 +26,11 @@ 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", "", "address of the OpenSlides backendManage service (default: "+constants.DefaultBackendManageAddress+")")
passwordFile := cmd.Flags().String("password-file", "", "file with password for authorization (default: "+constants.DefaultPasswordFile+")")
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")
_ = cmd.MarkFlagRequired("user_id")
_ = cmd.MarkFlagRequired("password")

Expand All @@ -43,6 +42,9 @@ func Cmd() *cobra.Command {
return fmt.Errorf("--user_id cannot be empty or less than 1")
}

utils.KeepValueOrEnvOrDefault(address, constants.EnvOsmanageBackendAddress, constants.DefaultBackendManageAddress)
utils.KeepValueOrEnvOrDefault(passwordFile, constants.EnvOsmanageBackendPasswordFile, constants.DefaultPasswordFile)

logger.Info("=== SET PASSWORD ===")
logger.Debug("Setting password for user ID: %d", *userID)

Expand Down
14 changes: 14 additions & 0 deletions internal/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,17 @@ func IsYAMLFile(filename string) bool {
ext := filepath.Ext(filename)
return ext == ".yaml" || ext == ".yml"
}

// KeepValueOrEnvOrDefault sets value to value OR envValue OR defaultValue
func KeepValueOrEnvOrDefault(value *string, envVarName string, defaultValue string) {
if *value != "" {
return
}

*value = os.Getenv(envVarName)
if *value != "" {
return
}

*value = defaultValue
}
Loading