From f82bfe390fc021df52edfaf1dc14bfe42d47195d Mon Sep 17 00:00:00 2001
From: poikilos <7557867+poikilos@users.noreply.github.com>
Date: Wed, 24 Nov 2021 13:57:34 -0500
Subject: [PATCH] Allow setting the base caches directory.
---
utilities/enissue.py | 57 +++++++++++++++++++++++++++++++++++---------
1 file changed, 46 insertions(+), 11 deletions(-)
diff --git a/utilities/enissue.py b/utilities/enissue.py
index 62e7159..ef9f69f 100755
--- a/utilities/enissue.py
+++ b/utilities/enissue.py
@@ -165,6 +165,11 @@ def usage():
print(" "*(left_w+len(spacer)+2) + "./" + me + s)
print("")
print("")
+ print("")
+ print("Options:")
+ print("--cache-base
Set the directory for cached files.")
+ print("--verbose Enable verbose mode.")
+ print("--debug Enable verbose mode (same as --debug).")
class Repo:
@@ -174,9 +179,6 @@ class Repo:
else:
profile = os.environ['HOME']
- caches_path = os.path.join(profile, ".cache", "enissue")
-
-
def __init__(
self,
remote_user = "poikilos",
@@ -191,6 +193,7 @@ class Repo:
c_issue_name_fmt = "{issue_no}.json",
default_query = {'state':'open'},
hide_events = ['renamed', 'assigned'],
+ caches_path=None,
):
'''
Keyword arguments:
@@ -218,16 +221,25 @@ class Repo:
search_results_key -- If the URL described by
search_issues_url_fmt returns a dict, specify the key in
the dict that is a list of issues.
+ caches_path -- Store cached json files here: Specifically, in an
+ "issues" directory or other directory under the user and
+ repo directory. For example, if caches_path is None and uses
+ the default ~/.cache/enissue, the numbered json files
+ (and numbered folders containing timeline.json or other
+ connected data) for issues will appear in
+ "~/.cache/enissue/poikilos/EnlivenMinetest/issues". To set
+ it later, use the setCachesPath method.
'''
- self.search_results_key = search_results_key
- self.page = None
+ if caches_path is None:
+ caches_path = os.path.join(Repo.profile, ".cache",
+ "enissue")
self.remote_user = remote_user
self.repo_name = repo_name
+ self.setCachesPath(caches_path)
+
+ self.search_results_key = search_results_key
+ self.page = None
self.repository_id = repository_id
- self.c_remote_user_path = os.path.join(Repo.caches_path,
- self.remote_user)
- self.c_repo_path = os.path.join(self.c_remote_user_path,
- self.repo_name)
self.c_issue_name_fmt = c_issue_name_fmt
self.api_repo_url_fmt = api_repo_url_fmt
self.api_issue_url_fmt = api_issue_url_fmt
@@ -251,6 +263,19 @@ class Repo:
self.hide_events = hide_events
self.issues = None
+ def setCachesPath(self, caches_path):
+ '''
+ This directory will contain //
+ which will contain issues/ and potentially other directories
+ that mimic the API web URL structure (See _get_issues code for
+ subdirectories and files).
+ '''
+ self.caches_path = caches_path
+ self.c_remote_user_path = os.path.join(self.caches_path,
+ self.remote_user)
+ self.c_repo_path = os.path.join(self.c_remote_user_path,
+ self.repo_name)
+
def _get_issues(self, options, query=None, issue_no=None,
search_terms=[]):
'''
@@ -424,7 +449,7 @@ class Repo:
results = [result]
for issue in results:
issue_n = issue.get("number")
- debug("issue_n: {}".format(issue_n))
+ # debug("issue_n: {}".format(issue_n))
if issue_n is not None:
if (max_issue is None) or (issue_n > max_issue):
max_issue = issue_n
@@ -482,7 +507,7 @@ class Repo:
def getCachedJsonDict(self, url, refresh=False):
'''
This gets the cached page using the cache location
- cache directory specified in Repo.caches_path and further
+ cache directory specified in self.caches_path and further
narrowed down to self.c_repo_path then narrowed down using the
URL. For example, https://api.github.com/repos/poikilos/EnlivenMinetest/issues?q=page:1
@@ -942,6 +967,7 @@ def main():
options = {}
search_terms = []
SEARCH_COMMANDS = ['find', 'AND']
+ caches_path = None
for i in range(1, len(sys.argv)):
arg = sys.argv[i]
isValue = False
@@ -991,6 +1017,9 @@ def main():
elif arg == "--help":
usage()
exit(0)
+ elif arg == "--cache-base":
+ pass
+ # options['caches_path'] = None
elif arg.startswith("--"):
usage()
error("Error: The argument \"{}\" is not valid"
@@ -999,6 +1028,8 @@ def main():
elif prev_arg in SEARCH_COMMANDS:
search_terms.append(arg)
isValue = True
+ elif prev_arg == "--cache-base":
+ caches_path = arg
elif arg == "find":
# print("* adding criteria: {}".format(arg))
mode = "list"
@@ -1057,6 +1088,10 @@ def main():
sys.exit(1)
print("")
+ if caches_path is not None:
+ repo.setCachesPath(caches_path)
+ debug("The cache is now at {}"
+ "".format(repo.c_repo_path))
# print("Loading...")
# TODO: get labels another way, and make this conditional: