@@ -172,14 +172,19 @@ def copy_latest_to_root(essay_id):
172172
173173
174174def main ():
175- if len (sys .argv ) != 4 :
176- print (f"Usage: { sys .argv [0 ]} <essay-id> <source-repo-url> <lineage>" ,
177- file = sys .stderr )
178- sys .exit (1 )
179-
180- essay_id = sys .argv [1 ]
181- repo_url = sys .argv [2 ]
182- lineage = sys .argv [3 ]
175+ import argparse
176+ parser = argparse .ArgumentParser (description = "Sync essay lineage" )
177+ parser .add_argument ("essay_id" , help = "Essay directory name" )
178+ parser .add_argument ("repo_url" , help = "Source repo URL" )
179+ parser .add_argument ("lineage" , help = "Knots lineage name" )
180+ parser .add_argument ("--force" , action = "store_true" ,
181+ help = "Force recompilation of all versions" )
182+ args = parser .parse_args ()
183+
184+ essay_id = args .essay_id
185+ repo_url = args .repo_url
186+ lineage = args .lineage
187+ force = args .force
183188
184189 print (f"Syncing { essay_id } from { lineage } " )
185190
@@ -198,15 +203,15 @@ def main():
198203 compiled = already_compiled (essay_id , version )
199204 registered = version_in_registry (essay_id , version )
200205
201- if compiled and registered :
206+ if compiled and registered and not force :
202207 continue
203208
204209 print (f"\n --- { version } ---" )
205210 with tempfile .TemporaryDirectory () as dest :
206211 if not extract_version (git_dir , tree_sha , lineage , version , dest ):
207212 print (f" Error extracting { version } " , file = sys .stderr )
208213 continue
209- if not compiled :
214+ if not compiled or force :
210215 if not compile_version (dest , essay_id , version ):
211216 continue
212217 if not registered :
0 commit comments