-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathautogen.py
54 lines (45 loc) · 1.72 KB
/
autogen.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python
import argparse
import logging
import os
import random
import sys
parser = argparse.ArgumentParser(usage="%(prog)s [options] args...")
parser.add_argument("-v", action="append_const", const=1, dest="verbosity", default=[],
help="Be more verbose. Can be specified multiple times to increase verbosity further")
parser.add_argument("--smtp-server", required=True)
parser.add_argument("--root-url", required=True)
parser.add_argument("--server-email", required=True)
parser.add_argument("--target", required=True)
_ROOT_DIR = os.path.abspath(os.path.dirname(__file__))
def main(args):
with open(os.path.join(_ROOT_DIR, "vars.yml"), "w") as outfile:
with open(os.path.join(_ROOT_DIR, "vars.yml.in")) as infile:
outfile.write(infile.read().format(secret_key=_gen_secret_key(), **vars(args)))
with open(os.path.join(_ROOT_DIR, "inventory"), "w") as outfile:
outfile.write("[target]\n")
outfile.write(args.target)
return 0
def _gen_secret_key():
return "".join(chr(random.randrange(256)) for i in range(50)).encode("base64").strip()
################################## Boilerplate ################################
def _configure_logging(args):
verbosity_level = len(args.verbosity)
if verbosity_level == 0:
level = "WARNING"
elif verbosity_level == 1:
level = "INFO"
else:
level = "DEBUG"
logging.basicConfig(
stream=sys.stderr,
level=level,
format="%(asctime)s -- %(message)s"
)
#### For use with entry_points/console_scripts
def main_entry_point():
args = parser.parse_args()
_configure_logging(args)
sys.exit(main(args))
if __name__ == "__main__":
main_entry_point()