diff options
author | 2021-12-07 13:31:39 +0100 | |
---|---|---|
committer | 2021-12-07 13:31:39 +0100 | |
commit | 0884f89431cd26bcc9674b3b7ab628b090f5881e (patch) | |
tree | cdd3b3f77f780a8b59d075dbcc3d4d013811e405 /internal/config/keys.go | |
parent | Update dependencies (#333) (diff) | |
download | gotosocial-0884f89431cd26bcc9674b3b7ab628b090f5881e.tar.xz |
Implement Cobra CLI tooling, Viper config tooling (#336)
* start pulling out + replacing urfave and config
* replace many many instances of config
* move more stuff => viper
* properly remove urfave
* move some flags to root command
* add testrig commands to root
* alias config file keys
* start adding cli parsing tests
* reorder viper init
* remove config path alias
* fmt
* change config file keys to non-nested
* we're more or less in business now
* tidy up the common func
* go fmt
* get tests passing again
* add note about the cliparsing tests
* reorganize
* update docs with changes
* structure cmd dir better
* rename + move some files around
* fix dangling comma
Diffstat (limited to 'internal/config/keys.go')
-rw-r--r-- | internal/config/keys.go | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/internal/config/keys.go b/internal/config/keys.go new file mode 100644 index 000000000..80ca36381 --- /dev/null +++ b/internal/config/keys.go @@ -0,0 +1,175 @@ +/* + GoToSocial + Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +package config + +// KeyNames is a struct that just contains the names of configuration keys. +type KeyNames struct { + // root + LogLevel string + ConfigPath string + + // general + ApplicationName string + Host string + AccountDomain string + Protocol string + BindAddress string + Port string + TrustedProxies string + SoftwareVersion string + + // database + DbType string + DbAddress string + DbPort string + DbUser string + DbPassword string + DbDatabase string + DbTLSMode string + DbTLSCACert string + + // template + WebTemplateBaseDir string + WebAssetBaseDir string + + // accounts + AccountsRegistrationOpen string + AccountsApprovalRequired string + AccountsReasonRequired string + + // media + MediaImageMaxSize string + MediaVideoMaxSize string + MediaDescriptionMinChars string + MediaDescriptionMaxChars string + + // storage + StorageBackend string + StorageBasePath string + StorageServeProtocol string + StorageServeHost string + StorageServeBasePath string + + // statuses + StatusesMaxChars string + StatusesCWMaxChars string + StatusesPollMaxOptions string + StatusesPollOptionMaxChars string + StatusesMediaMaxFiles string + + // letsencrypt + LetsEncryptEnabled string + LetsEncryptCertDir string + LetsEncryptEmailAddress string + LetsEncryptPort string + + // oidc + OIDCEnabled string + OIDCIdpName string + OIDCSkipVerification string + OIDCIssuer string + OIDCClientID string + OIDCClientSecret string + OIDCScopes string + + // smtp + SMTPHost string + SMTPPort string + SMTPUsername string + SMTPPassword string + SMTPFrom string + + // admin + AdminAccountUsername string + AdminAccountEmail string + AdminAccountPassword string + AdminTransPath string +} + +// Keys contains the names of the various keys used for initializing and storing flag variables, +// and retrieving values from the viper config store. +var Keys = KeyNames{ + LogLevel: "log-level", + ApplicationName: "application-name", + ConfigPath: "config-path", + Host: "host", + AccountDomain: "account-domain", + Protocol: "protocol", + BindAddress: "bind-address", + Port: "port", + TrustedProxies: "trusted-proxies", + SoftwareVersion: "software-version", + + DbType: "db-type", + DbAddress: "db-address", + DbPort: "db-port", + DbUser: "db-user", + DbPassword: "db-password", + DbDatabase: "db-database", + DbTLSMode: "db-tls-mode", + DbTLSCACert: "db-tls-ca-cert", + + WebTemplateBaseDir: "web-template-base-dir", + WebAssetBaseDir: "web-asset-base-dir", + + AccountsRegistrationOpen: "accounts-registration-open", + AccountsApprovalRequired: "accounts-approval-required", + AccountsReasonRequired: "accounts-reason-required", + + MediaImageMaxSize: "media-image-max-size", + MediaVideoMaxSize: "media-video-max-size", + MediaDescriptionMinChars: "media-description-min-chars", + MediaDescriptionMaxChars: "media-description-max-chars", + + StorageBackend: "storage-backend", + StorageBasePath: "storage-base-path", + StorageServeProtocol: "storage-serve-protocol", + StorageServeHost: "storage-serve-host", + StorageServeBasePath: "storage-serve-base-path", + + StatusesMaxChars: "statuses-max-chars", + StatusesCWMaxChars: "statuses-cw-max-chars", + StatusesPollMaxOptions: "statuses-poll-max-options", + StatusesPollOptionMaxChars: "statuses-poll-option-max-chars", + StatusesMediaMaxFiles: "statuses-media-max-files", + + LetsEncryptEnabled: "letsencrypt-enabled", + LetsEncryptPort: "letsencrypt-port", + LetsEncryptCertDir: "letsencrypt-cert-dir", + LetsEncryptEmailAddress: "letsencrypt-email-address", + + OIDCEnabled: "oidc-enabled", + OIDCIdpName: "oidc-idp-name", + OIDCSkipVerification: "oidc-skip-verification", + OIDCIssuer: "oidc-issuer", + OIDCClientID: "oidc-client-id", + OIDCClientSecret: "oidc-client-secret", + OIDCScopes: "oidc-scopes", + + SMTPHost: "smtp-host", + SMTPPort: "smtp-port", + SMTPUsername: "smtp-username", + SMTPPassword: "smtp-password", + SMTPFrom: "smtp-from", + + AdminAccountUsername: "username", + AdminAccountEmail: "email", + AdminAccountPassword: "password", + AdminTransPath: "path", +} |