44package setting
55
66import (
7- "errors"
87 "fmt"
98)
109
1110// checkForRemovedSettings checks the entire configuration for removed keys and gathers them fataling if any is present
1211// Arbitrary permament removal is 3 releases
13- func checkForRemovedSettings (rootCfg ConfigProvider ) error {
12+ func checkForRemovedSettings (rootCfg ConfigProvider ) [] error {
1413 var errs []error
1514
1615 removedSettings := []struct {
1716 oldSection , oldKey , newSection , newKey , version string
1817 }{
1918 {"service" , "EMAIL_DOMAIN_WHITELIST" , "service" , "EMAIL_DOMAIN_ALLOWLIST" , "1.21" },
20- {"mailer" , "MAILER_TYPE" , "mailer" , "PROTOCOL" , "v1.19.0 " },
21- {"mailer" , "HOST" , "mailer" , "SMTP_ADDR" , "v1.19.0 " },
22- {"mailer" , "IS_TLS_ENABLED" , "mailer" , "PROTOCOL" , "v1.19.0 " },
23- {"mailer" , "DISABLE_HELO" , "mailer" , "ENABLE_HELO" , "v1.19.0 " },
24- {"mailer" , "SKIP_VERIFY" , "mailer" , "FORCE_TRUST_SERVER_CERT" , "v1.19.0 " },
25- {"mailer" , "USE_CERTIFICATE" , "mailer" , "USE_CLIENT_CERT" , "v1.19.0 " },
26- {"mailer" , "CERT_FILE" , "mailer" , "CLIENT_CERT_FILE" , "v1.19.0 " },
27- {"mailer" , "KEY_FILE" , "mailer" , "CLIENT_KEY_FILE" , "v1.19.0 " },
28- {"task" , "QUEUE_TYPE" , "queue.task" , "TYPE" , "v1.19.0 " },
29- {"task" , "QUEUE_CONN_STR" , "queue.task" , "CONN_STR" , "v1.19.0 " },
30- {"task" , "QUEUE_LENGTH" , "queue.task" , "LENGTH" , "v1.19.0 " },
31- {"server" , "ENABLE_LETSENCRYPT" , "server" , "ENABLE_ACME" , "v1.19.0 " },
32- {"server" , "LETSENCRYPT_ACCEPTTOS" , "server" , "ACME_ACCEPTTOS" , "v1.19.0 " },
33- {"server" , "LETSENCRYPT_DIRECTORY" , "server" , "ACME_DIRECTORY" , "v1.19.0 " },
34- {"server" , "LETSENCRYPT_EMAIL" , "server" , "ACME_EMAIL" , "v1.19.0 " },
19+ {"mailer" , "MAILER_TYPE" , "mailer" , "PROTOCOL" , "v1.19" },
20+ {"mailer" , "HOST" , "mailer" , "SMTP_ADDR" , "v1.19" },
21+ {"mailer" , "IS_TLS_ENABLED" , "mailer" , "PROTOCOL" , "v1.19" },
22+ {"mailer" , "DISABLE_HELO" , "mailer" , "ENABLE_HELO" , "v1.19" },
23+ {"mailer" , "SKIP_VERIFY" , "mailer" , "FORCE_TRUST_SERVER_CERT" , "v1.19" },
24+ {"mailer" , "USE_CERTIFICATE" , "mailer" , "USE_CLIENT_CERT" , "v1.19" },
25+ {"mailer" , "CERT_FILE" , "mailer" , "CLIENT_CERT_FILE" , "v1.19" },
26+ {"mailer" , "KEY_FILE" , "mailer" , "CLIENT_KEY_FILE" , "v1.19" },
27+ {"task" , "QUEUE_TYPE" , "queue.task" , "TYPE" , "v1.19" },
28+ {"task" , "QUEUE_CONN_STR" , "queue.task" , "CONN_STR" , "v1.19" },
29+ {"task" , "QUEUE_LENGTH" , "queue.task" , "LENGTH" , "v1.19" },
30+ {"server" , "ENABLE_LETSENCRYPT" , "server" , "ENABLE_ACME" , "v1.19" },
31+ {"server" , "LETSENCRYPT_ACCEPTTOS" , "server" , "ACME_ACCEPTTOS" , "v1.19" },
32+ {"server" , "LETSENCRYPT_DIRECTORY" , "server" , "ACME_DIRECTORY" , "v1.19" },
33+ {"server" , "LETSENCRYPT_EMAIL" , "server" , "ACME_EMAIL" , "v1.19" },
3534 {"git.reflog" , "ENABLED" , "git.config" , "core.logAllRefUpdates" , "1.21" },
3635 {"git.reflog" , "EXPIRATION" , "git.config" , "core.reflogExpire" , "1.21" },
37- {"repository" , "DISABLE_MIRRORS" , "mirror" , "ENABLED" , "v1.19.0 " },
38- {"server" , "LFS_CONTENT_PATH" , "lfs" , "PATH" , "v1.19.0 " },
36+ {"repository" , "DISABLE_MIRRORS" , "mirror" , "ENABLED" , "v1.19" },
37+ {"server" , "LFS_CONTENT_PATH" , "lfs" , "PATH" , "v1.19" },
3938 {"log" , "XORM" , "log" , "logger.xorm.MODE" , "1.21" },
4039 {"log" , "ENABLE_XORM_LOG" , "log" , "logger.xorm.MODE" , "1.21" },
4140 {"log" , "ROUTER" , "log" , "logger.router.MODE" , "1.21" },
@@ -45,19 +44,30 @@ func checkForRemovedSettings(rootCfg ConfigProvider) error {
4544 }
4645
4746 for _ , rs := range removedSettings {
48- errs = append (errs , removedSetting (rootCfg , rs .oldSection , rs .oldKey , rs .newSection , rs .newKey , rs .version ))
47+ if err := removedSetting (rootCfg , rs .oldSection , rs .oldKey , rs .newSection , rs .newKey , rs .version ); err != nil {
48+ errs = append (errs , err )
49+ }
4950 }
5051
51- if rootCfg . Section ( "mailer" ). Key ( "PROTOCOL" ). String () == "smtp+startls" {
52- errs = append (errs , fmt . Errorf ( "removed fallback `[mailer]` `PROTOCOL = smtp+startls` present. Use `[mailer]` `PROTOCOL = smtp+starttls`` instead" ) )
52+ if err := removedOption ( rootCfg , "mailer" , "PROTOCOL" , "smtp+startls" , "smtp+starttls" , "v1.19" ); err != nil {
53+ errs = append (errs , err )
5354 }
5455
55- return errors . Join ( errs ... )
56+ return errs
5657}
5758
59+ // removedOption checks if configuration has an oldValue under key in section and returns error for user if it does
60+ func removedOption (rootCfg ConfigProvider , section , key , oldValue , newValue , version string ) error {
61+ if rootCfg .Section (section ).Key (key ).String () == oldValue {
62+ return fmt .Errorf ("Config option `[%s].%s=%s` was removed in %s. Please use `[%s].%s=%s` instead" , section , key , oldValue , version , section , key , newValue )
63+ }
64+ return nil
65+ }
66+
67+ // removedSetting checks if oldKey exists in oldSection and returns an error for user if it does
5868func removedSetting (rootCfg ConfigProvider , oldSection , oldKey , newSection , newKey , version string ) error {
5969 if rootCfg .Section (oldSection ).HasKey (oldKey ) {
60- return fmt .Errorf ("Config option `[%s].%s` was removed in %s. Please use `[%s].%s`" , oldSection , oldKey , version , newSection , newKey )
70+ return fmt .Errorf ("Config option `[%s].%s` was removed in %s. Please use `[%s].%s` instead " , oldSection , oldKey , version , newSection , newKey )
6171 }
6272 return nil
6373}
0 commit comments