55from concurrent .futures import as_completed
66import concurrent .futures
77import threading
8+ import argparse
89import urllib3
910import datetime
1011import 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