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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
from argparse import ArgumentParser, Namespace
def get_parsed_arguments() -> Namespace:
parser = ArgumentParser(prog='pyssg',
description='''Static Site Generator that parses
Markdown files into HTML files. For datetime
formats see:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes''')
parser.add_argument('-v', '--version',
action='store_true',
help='''print program version''')
parser.add_argument('-c', '--config',
# don't give a default here, as it would seem like
# --config was passed
# default='$XDG_CONFIG_HOME/pyssg/config.ini',
type=str,
help='''config file (path) to read from; if not passed,
'$XDG_CONFIG_HOME/pyssg/config.ini' is used''')
parser.add_argument('--copy-default-config',
action='store_true',
help='''copies the default config to path specified in
--config flag''')
parser.add_argument('-i', '--init',
action='store_true',
help='''initializes the directory structures and copies
over default templates''')
parser.add_argument('-b', '--build',
action='store_true',
help='''generates all HTML files by parsing MD files
present in source directory and copies over manually
written HTML files''')
parser.add_argument('-f', '--force',
action='store_true',
help='''force building all pages and not only the
updated ones''')
parser.add_argument('--debug',
action='store_true',
help='''change logging level from info to debug''')
# really not needed, too much bloat and case scenarios to check for,
# instead, just read from config file or default config file
"""
parser.add_argument('-s', '--src',
default='src',
type=str,
help='''src directory; handmade files, templates and
metadata directory; defaults to 'src' ''')
parser.add_argument('-d', '--dst',
default='dst',
type=str,
help='''dst directory; generated (and transfered html)
files; defaults to 'dst' ''')
parser.add_argument('-t', '--plt',
default='plt',
type=str,
help='''plt directory; all template files; defaults to
'plt' ''')
parser.add_argument('-u', '--url',
default='',
type=str,
help='''base url without trailing slash''')
parser.add_argument('--static-url',
default='',
type=str,
help='''base static url without trailing slash''')
parser.add_argument('--default-image-url',
default='',
type=str,
help='''default image url''')
parser.add_argument('--title',
default='Blog',
type=str,
help='''general title for the website; defaults to
'Blog' ''')
parser.add_argument('--date-format',
default='%a, %b %d, %Y @ %H:%M %Z',
type=str,
help='''date format used inside pages (for creation and
modification times, for example); defaults to '%%a, %%b
%%d, %%Y @ %%H:%%M %%Z' ('Tue, Mar 16, 2021 @ 02:46 UTC',
for example)''')
parser.add_argument('--list-date-format',
default='%b %d',
type=str,
help='''date format used for page entries in a list;
defaults to '%%b %%d' ('Mar 16', for example)''')
parser.add_argument('--list-sep-date-format',
default='%B %Y',
type=str,
help='''date format used for the separator between page
entries in a list; defaults to '%%B %%Y' ('March 2021',
for example)''')
"""
return parser.parse_args()
|