summaryrefslogtreecommitdiff
path: root/script/install.py
diff options
context:
space:
mode:
Diffstat (limited to 'script/install.py')
-rw-r--r--script/install.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/script/install.py b/script/install.py
new file mode 100644
index 0000000..e08f8c5
--- /dev/null
+++ b/script/install.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+
+import re
+import sys
+from pathlib import Path
+
+
+def install_service_unit(prefix):
+ project_path = Path(__file__).parents[1]
+
+ if prefix == "usr":
+ install_path = Path("/etc/systemd/system")
+ elif prefix == "usr/local":
+ install_path = Path("/usr/local/lib/systemd/system")
+ else:
+ raise Exception("first arg <prefix> must be one of `usr` or `usr/local`")
+
+ def substitute(match):
+ if match[1] == "PROJECT_PATH":
+ return str(project_path)
+ else:
+ raise KeyError(match[1])
+
+ service_text_in = open(
+ project_path / "script" / "jwebmail.service.in", mode="r"
+ ).read()
+ service_text = re.sub("@(\w+)@", substitute, service_text_in, flags=re.ASCII)
+
+ install_path.mkdir(0o755, True, True)
+
+ open(install_path / "jwebmail.service", mode="w").write(service_text)
+
+
+if __name__ == "__main__":
+ install_service_unit(sys.argv[1] if len(sys.argv) == 2 else '')