move all scripts to scripts/
This commit is contained in:
Executable
+43
@@ -0,0 +1,43 @@
|
||||
import subprocess
|
||||
import shutil
|
||||
import os
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-o", "--output", help="output directory for .html and .txt files")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
def runcmd(cmd):
|
||||
if os.name == "nt":
|
||||
return subprocess.check_output(cmd, shell=True)
|
||||
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
|
||||
return proc.communicate()
|
||||
|
||||
|
||||
local_path = Path("mail")
|
||||
|
||||
for mjml in [f for f in local_path.iterdir() if f.is_file() and "mjml" in f.suffix]:
|
||||
print(f"Compiling {mjml.name}")
|
||||
fname = mjml.with_suffix(".html")
|
||||
runcmd(f"npx mjml {str(mjml)} -o {str(fname)}")
|
||||
if fname.is_file():
|
||||
print("Done.")
|
||||
|
||||
html = [f for f in local_path.iterdir() if f.is_file() and "html" in f.suffix]
|
||||
|
||||
output = Path(args.output) # local_path.parent / "build" / "data"
|
||||
output.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for f in html:
|
||||
shutil.copy(str(f), str(output / f.name))
|
||||
print(f"Copied {f.name} to {str(output / f.name)}")
|
||||
txtfile = f.with_suffix(".txt")
|
||||
if txtfile.is_file():
|
||||
shutil.copy(str(txtfile), str(output / txtfile.name))
|
||||
print(f"Copied {txtfile.name} to {str(output / txtfile.name)}")
|
||||
else:
|
||||
print(
|
||||
f"Warning: {txtfile.name} does not exist. Text versions of emails should be supplied."
|
||||
)
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/python
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
external = ["false", "external", "no", "n"]
|
||||
|
||||
with open("embed.go", "w") as f:
|
||||
choice = ""
|
||||
try:
|
||||
choice = sys.argv[1]
|
||||
except IndexError:
|
||||
pass
|
||||
folder = Path("embed")
|
||||
if choice in external:
|
||||
embed = False
|
||||
shutil.copy(folder / "external.go", "embed.go")
|
||||
print("Embedding disabled. \"data\" must be placed alongside the executable.")
|
||||
else:
|
||||
shutil.copy(folder / "internal.go", "embed.go")
|
||||
print("Embedding enabled.")
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import json, argparse
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-i", "--input", help="input config base from jf-accounts")
|
||||
parser.add_argument("-o", "--output", help="output config base for jfa-go")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
with open(args.input, 'r') as f:
|
||||
config = json.load(f)
|
||||
|
||||
newconfig = {"sections": {}, "order": []}
|
||||
|
||||
for sect in config["sections"]:
|
||||
newconfig["order"].append(sect)
|
||||
newconfig["sections"][sect] = {}
|
||||
newconfig["sections"][sect]["order"] = []
|
||||
newconfig["sections"][sect]["meta"] = config["sections"][sect]["meta"]
|
||||
newconfig["sections"][sect]["settings"] = {}
|
||||
for setting in config["sections"][sect]["settings"]:
|
||||
newconfig["sections"][sect]["order"].append(setting)
|
||||
newconfig["sections"][sect]["settings"][setting] = config["sections"][sect]["settings"][setting]
|
||||
|
||||
with open(args.output, 'w') as f:
|
||||
f.write(json.dumps(newconfig, indent=4))
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
# Generates config file
|
||||
import configparser
|
||||
import json
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def generate_ini(base_file, ini_file):
|
||||
"""
|
||||
Generates .ini file from config-base file.
|
||||
"""
|
||||
with open(Path(base_file), "r") as f:
|
||||
config_base = json.load(f)
|
||||
|
||||
ini = configparser.RawConfigParser(allow_no_value=True)
|
||||
|
||||
for section in config_base["sections"]:
|
||||
ini.add_section(section)
|
||||
if "meta" in config_base["sections"][section]:
|
||||
ini.set(section, "; " + config_base["sections"][section]["meta"]["description"])
|
||||
for entry in config_base["sections"][section]["settings"]:
|
||||
if "description" in config_base["sections"][section]["settings"][entry]:
|
||||
ini.set(section, "; " + config_base["sections"][section]["settings"][entry]["description"])
|
||||
value = config_base["sections"][section]["settings"][entry]["value"]
|
||||
if isinstance(value, bool):
|
||||
value = str(value).lower()
|
||||
else:
|
||||
value = str(value)
|
||||
ini.set(section, entry, value)
|
||||
|
||||
with open(Path(ini_file), "w") as config_file:
|
||||
ini.write(config_file)
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("-i", "--input", help="input config base from jf-accounts")
|
||||
parser.add_argument("-o", "--output", help="output ini")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
print(generate_ini(base_file=args.input, ini_file=args.output))
|
||||
@@ -0,0 +1,27 @@
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
try:
|
||||
version = sys.argv[1].replace('v', '')
|
||||
except IndexError:
|
||||
version = "git"
|
||||
|
||||
if version == "auto":
|
||||
try:
|
||||
version = subprocess.check_output("git describe --exact-match HEAD".split()).decode("utf-8").rstrip().replace('v', '')
|
||||
except subprocess.CalledProcessError as e:
|
||||
if e.returncode == 128:
|
||||
version = "git"
|
||||
|
||||
commit = subprocess.check_output("git rev-parse --short HEAD".split()).decode("utf-8").rstrip()
|
||||
|
||||
file = f'package main; const VERSION = "{version}"; const COMMIT = "{commit}";'
|
||||
|
||||
try:
|
||||
writeto = sys.argv[2]
|
||||
except IndexError:
|
||||
writeto = "version.go"
|
||||
|
||||
with open(writeto, 'w') as f:
|
||||
f.write(file)
|
||||
|
||||
Reference in New Issue
Block a user