mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 20:52:33 +02:00
53 lines
No EOL
1.5 KiB
Python
53 lines
No EOL
1.5 KiB
Python
import requests
|
|
import os
|
|
|
|
class Entry:
|
|
def __init__(self, name: str, type: str, **kwargs) -> None:
|
|
self.name = name
|
|
self.type = type
|
|
|
|
url = "https://api.github.com/repos/go-acme/lego/contents/providers/dns"
|
|
response = requests.get(url)
|
|
data: list[Entry] = [Entry(**i) for i in response.json()]
|
|
|
|
header = "//go:generate /usr/bin/python3 gen.py\n\npackage autocert\n\n"
|
|
names: list[str] = [
|
|
"ProviderLocal = \"local\"",
|
|
"ProviderPseudo = \"pseudo\"",
|
|
]
|
|
imports: list[str] = []
|
|
genMap: list[str] = [
|
|
"ProviderLocal: providerGenerator(NewDummyDefaultConfig, NewDummyDNSProviderConfig),",
|
|
"ProviderPseudo: providerGenerator(NewDummyDefaultConfig, NewDummyDNSProviderConfig),",
|
|
]
|
|
|
|
blacklists = [
|
|
"internal",
|
|
# deprecated
|
|
"azure",
|
|
"brandit",
|
|
"cloudxns",
|
|
"dnspod",
|
|
"mythicbeasts",
|
|
"yandexcloud"
|
|
]
|
|
|
|
for item in data:
|
|
if item.type != "dir" or item.name in blacklists:
|
|
continue
|
|
imports.append(f"import \"github.com/go-acme/lego/v4/providers/dns/{item.name}\"")
|
|
names.append(f"Provider{item.name} = \"{item.name}\"")
|
|
genMap.append(f"Provider{item.name}: providerGenerator({item.name}.NewDefaultConfig, {item.name}.NewDNSProviderConfig),")
|
|
|
|
with open("providers.go", "w") as f:
|
|
f.write(header)
|
|
f.write("\n".join(imports))
|
|
f.write("\n\n")
|
|
f.write("const (\n")
|
|
f.write("\n".join(names))
|
|
f.write("\n)\n\n")
|
|
f.write("var providers = map[string]ProviderGenerator{\n")
|
|
f.write("\n".join(genMap))
|
|
f.write("\n}\n\n")
|
|
|
|
os.execvp("go", ["go", "fmt", "providers.go"]) |