Skip to content

Commit 28df59c

Browse files
committed
Refactor CLI argument handling, add flag to check the latest version
1 parent bbb11ef commit 28df59c

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

update.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from concurrent.futures import as_completed
66
import concurrent.futures
77
import threading
8+
import argparse
89
import urllib3
910
import datetime
1011
import requests
@@ -107,11 +108,14 @@ def perform_update(flashpoint, current, target, file_endpoint, reporter):
107108
with open('config.json', 'r') as f:
108109
config = json.load(f)
109110

110-
if len(sys.argv) != 4:
111-
print('Usage: update.py <flashpoint-path> <current-version> <target-version>')
112-
sys.exit(0)
111+
parser = argparse.ArgumentParser(description="Updater for BlueMaxima's Flashpoint.")
112+
parser.add_argument('path', metavar='flashpoint-path')
113+
group = parser.add_mutually_exclusive_group(required=True)
114+
group.add_argument('--update', '-u', nargs=2, metavar=('current', 'target'))
115+
group.add_argument('--check', '-c', action='store_true')
116+
args = parser.parse_args()
113117

114-
flashpoint = index.win_path(sys.argv[1])
118+
flashpoint = index.win_path(args.path)
115119
if not os.path.isdir(flashpoint):
116120
print('Error: Flashpoint path not found.')
117121
sys.exit(0)
@@ -122,6 +126,19 @@ def perform_update(flashpoint, current, target, file_endpoint, reporter):
122126
print('Could not retrieve index metadata: %s' % str(e))
123127
sys.exit(0)
124128

129+
if args.check:
130+
anchor = server.get_anchor()
131+
version = None
132+
if anchor:
133+
try:
134+
hash = index.hash(os.path.join(args.path, anchor['file']), 'sha1')
135+
version = server.autodetect_anchor(hash)
136+
except FileNotFoundError:
137+
pass
138+
print('Current version: %s' % (version or 'Unavailable'))
139+
print('Latest version: %s' % server.get_latest())
140+
sys.exit(0)
141+
125142
def worker(reporter, root_path, server, current, target):
126143
if target not in server.available_indexes():
127144
print('Could not find index: %s' % target)
@@ -140,8 +157,9 @@ def worker(reporter, root_path, server, current, target):
140157
return
141158
perform_update(root_path, current, target, remote_root, reporter)
142159

160+
current, target = args.update
143161
reporter = ProgressReporter()
144-
threading.Thread(target=worker, args=(reporter, flashpoint, server, sys.argv[2], sys.argv[3])).start()
162+
threading.Thread(target=worker, args=(reporter, flashpoint, server, current, target)).start()
145163
for task in reporter.tasks():
146164
print(task.title)
147165
for step in tqdm(reporter.steps(), total=task.length, unit=task.unit or 'it', ascii=True):

0 commit comments

Comments
 (0)