refactor(provider): create provider database entries at compile time

According to cargo-llvm-lines it reduces the number of lines
in the crate by 0.7%.
This commit is contained in:
link2xt
2023-09-04 18:38:56 +00:00
parent 49f143e0d5
commit dbe9d7e34e
3 changed files with 617 additions and 645 deletions

View File

@@ -44,7 +44,7 @@ def file2url(f):
def process_opt(data): def process_opt(data):
if not "opt" in data: if not "opt" in data:
return "Default::default()" return "ProviderOptions::new()"
opt = "ProviderOptions {\n" opt = "ProviderOptions {\n"
opt_data = data.get("opt", "") opt_data = data.get("opt", "")
for key in opt_data: for key in opt_data:
@@ -54,7 +54,7 @@ def process_opt(data):
if value in {"True", "False"}: if value in {"True", "False"}:
value = value.lower() value = value.lower()
opt += " " + key + ": " + value + ",\n" opt += " " + key + ": " + value + ",\n"
opt += " ..Default::default()\n" opt += " ..ProviderOptions::new()\n"
opt += " }" opt += " }"
return opt return opt
@@ -96,11 +96,11 @@ def process_data(data, file):
raise TypeError("domain used twice: " + domain) raise TypeError("domain used twice: " + domain)
domains_set.add(domain) domains_set.add(domain)
domains += ' ("' + domain + '", &*' + file2varname(file) + "),\n" domains += ' ("' + domain + '", &' + file2varname(file) + "),\n"
comment += domain + ", " comment += domain + ", "
ids = "" ids = ""
ids += ' ("' + file2id(file) + '", &*' + file2varname(file) + "),\n" ids += ' ("' + file2id(file) + '", &' + file2varname(file) + "),\n"
server = "" server = ""
has_imap = False has_imap = False
@@ -155,7 +155,7 @@ def process_data(data, file):
provider += ( provider += (
"static " "static "
+ file2varname(file) + file2varname(file)
+ ": Lazy<Provider> = Lazy::new(|| Provider {\n" + ": Provider = Provider {\n"
) )
provider += ' id: "' + file2id(file) + '",\n' provider += ' id: "' + file2id(file) + '",\n'
provider += " status: Status::" + status.capitalize() + ",\n" provider += " status: Status::" + status.capitalize() + ",\n"
@@ -166,7 +166,7 @@ def process_data(data, file):
provider += " opt: " + opt + ",\n" provider += " opt: " + opt + ",\n"
provider += " config_defaults: " + config_defaults + ",\n" provider += " config_defaults: " + config_defaults + ",\n"
provider += " oauth2_authorizer: " + oauth2 + ",\n" provider += " oauth2_authorizer: " + oauth2 + ",\n"
provider += "});\n\n" provider += "};\n\n"
else: else:
raise TypeError("SMTP and IMAP must be specified together or left out both") raise TypeError("SMTP and IMAP must be specified together or left out both")

View File

@@ -149,8 +149,8 @@ pub struct ProviderOptions {
pub delete_to_trash: bool, pub delete_to_trash: bool,
} }
impl Default for ProviderOptions { impl ProviderOptions {
fn default() -> Self { const fn new() -> Self {
Self { Self {
strict_tls: true, strict_tls: true,
max_smtp_rcpt_to: None, max_smtp_rcpt_to: None,

File diff suppressed because it is too large Load Diff