presences/flag.go

111 lines
3.1 KiB
Go

package presences
import (
"github.com/spf13/pflag"
"github.com/spf13/viper"
)
const (
flagPortConfig = "Port"
flagPortDefault = 8080
flagPort = "port"
flagTLSCertConfig = "TLS.Cert"
flagTLSCertDefault = ""
flagTLSCert = "tls-cert"
flagTLSKeyConfig = "TLS.Key"
flagTLSKeyDefault = ""
flagTLSKey = "tls-key"
flagDBDatabaseConfig = "DB.Database"
flagDBDatabaseDefault = "presences"
flagDBDatabase = "db-database"
flagDBHostConfig = "DB.Host"
flagDBHostDefault = "presences-db"
flagDBHost = "db-host"
flagDBPasswordConfig = "DB.Password"
flagDBPasswordDefault = "presences"
flagDBPassword = "db-password"
flagDBPortConfig = "DB.Port"
flagDBPortDefault = 5432
flagDBPort = "db-port"
flagDBSSLModeConfig = "DB.SSLMode"
flagDBSSLModeDefault = "prefer"
flagDBSSLMode = "db-sslmode"
flagDBUsernameConfig = "DB.Username"
flagDBUsernameDefault = "presences"
flagDBUsername = "db-username"
/*
flagUICredentialsConfig = "UI.Credentials"
//flagUICredentialsDefault = make(map[string]string)
flagUICredentials = "ui-credentials"
*/
//TODO check if any necessary flags are missing
)
// BindClientFlags declares client-related flags and config options in the specified *pflag.FlagSet
func BindFlags(set *pflag.FlagSet) error {
// Credentials -> seulement par config
set.Int(flagPort, flagPortDefault, "User interface port")
if err := viper.BindPFlag(flagPortConfig, set.Lookup(flagPort)); err != nil {
return err
}
set.String(flagTLSKey, flagTLSKeyDefault, "User interface TLS private key (or path to file)")
if err := viper.BindPFlag(flagTLSKeyConfig, set.Lookup(flagTLSKey)); err != nil {
return err
}
set.String(flagTLSCert, flagTLSCertDefault, "User interface TLS certificate (or path to file)")
if err := viper.BindPFlag(flagTLSCertConfig, set.Lookup(flagTLSCert)); err != nil {
return err
}
set.String(flagDBDatabase, flagDBDatabaseDefault, "PostgreSQL database")
if err := viper.BindPFlag(flagDBDatabaseConfig, set.Lookup(flagDBDatabase)); err != nil {
return err
}
set.String(flagDBHost, flagDBHostDefault, "PostgreSQL host")
if err := viper.BindPFlag(flagDBHostConfig, set.Lookup(flagDBHost)); err != nil {
return err
}
set.String(flagDBPassword, flagDBPasswordDefault, "PostgreSQL password")
if err := viper.BindPFlag(flagDBPasswordConfig, set.Lookup(flagDBPassword)); err != nil {
return err
}
set.Int(flagDBPort, flagDBPortDefault, "PostgreSQL port")
if err := viper.BindPFlag(flagDBPortConfig, set.Lookup(flagDBPort)); err != nil {
return err
}
set.String(flagDBSSLMode, flagDBSSLModeDefault, "PostgreSQL ssl mode")
if err := viper.BindPFlag(flagDBSSLModeConfig, set.Lookup(flagDBSSLMode)); err != nil {
return err
}
set.String(flagDBUsername, flagDBUsernameDefault, "PostgreSQL username")
if err := viper.BindPFlag(flagDBUsernameConfig, set.Lookup(flagDBUsername)); err != nil {
return err
}
/*
set.StringToString(flagUICredentials, nil, "Sets of credentials for the UI console")
if err := viper.BindPFlag(flagUICredentialsConfig, set.Lookup(flagUICredentials)); err != nil {
return err
}
*/
return nil
}