diff --git a/utilities/enissue.py b/utilities/enissue.py
index d6f5c3e..9f1a2cb 100755
--- a/utilities/enissue.py
+++ b/utilities/enissue.py
@@ -8,6 +8,10 @@ This script caches issues (To
~/.cache/enissue/poikilos/EnlivenMinetest/issues
by default).
+Known issues:
+- Get attachments from GitHub
+- Get inline files from GitHub (such as pasted images)
+
Options:")
--cache-base
Set the directory for cached files.
--verbose Enable verbose mode.
@@ -16,6 +20,10 @@ Options:")
Write database entries for the issue, timeline events, and reactions
to each timeline event (overwrite ANY existing data if same id!).
Only "PostgresQL" is implemented for db-type.
+ The destination will be overwritten! Backup first:
+ - PostgreSQL (su then):
+ pg_dump dbname > outfile
+--test Run unit tests then exit (0) if passed.
'''
from __future__ import print_function
import sys
@@ -129,10 +137,18 @@ apis["GitHub"] = github_defaults
apis["Gitea"] = gitea_defaults
+def tests():
+ for name, options in apis.items():
+ assert(options.get('default_query') is not None)
+ assert(isinstance(options.get('default_query'), dict))
+ assert(options['default_query'].get('state') is not None)
+
+
def debug(msg):
if verbose:
error("[debug] " + msg)
+
def decode_safe(b):
try:
s = b.decode()
@@ -894,7 +910,7 @@ class Repo:
else:
neat_labels.append(label_s)
labels_s = ", ".join(neat_labels)
- print(line_fmt.format("labels:", labels_s))
+ # moved further down: print(line_fmt.format("labels:", labels_s))
print("")
if markdown is not None:
print('"""')
@@ -1076,6 +1092,7 @@ class Repo:
closed_by = issue_data.get('closed_by')
closed_at = issue_data.get('closed_at')
+ print(line_fmt.format("labels:", labels_s))
if (closed_by is not None) or (closed_at is not None):
# INFO: closed_by may be present even if reopened
# (determine this by getting 'state').
@@ -1083,6 +1100,8 @@ class Repo:
# timeline (see this_tmln_json_url).
print()
state = issue_data.get('state')
+ if state is None:
+ state = options['default_query'].get('state')
closet_at_str = ""
if closed_at is not None:
closet_at_str = " {}".format(closed_at)
@@ -1221,6 +1240,8 @@ def main():
caches_path = None
logic = {} # CLI-only values
save_key = None
+ save_option = None
+ test_only = False
collect_options = ['--repo-url'] # Repo init data
collect_logic = ['--copy-meta-to', '--db-type', '--db-user',
'--db-password', '--cache-base']
@@ -1266,6 +1287,10 @@ def main():
else:
if arg == "--closed":
state = 'closed'
+ elif arg == "--test":
+ tests()
+ error("All tests passed.")
+ sys.exit(0)
elif arg == "--refresh":
options['refresh'] = True
elif arg == "--verbose":
@@ -1335,7 +1360,7 @@ def main():
"".format(save_option))
caches_path = logic.get('cache-base')
valid_modes = ["issue"]
- print("command metadata: {}".format(logic))
+ debug("command metadata: {}".format(logic))
for k, v in modes.items():
valid_modes.append(k)