1414import argparse
1515import json
1616import shlex
17- import subprocess
1817import sys
1918import time
2019from typing import Any
2120
2221import boto3
2322
23+ from codeclash .utils .git_utils import get_current_git_branch , has_unpushed_commits , is_git_repo_dirty
2424from codeclash .utils .log import get_logger
2525
2626logger = get_logger ("launch" , emoji = "🚀" )
2727
2828
29- def get_current_git_branch () -> str :
30- """Get the current git branch name."""
31- try :
32- result = subprocess .run (
33- ["git" , "rev-parse" , "--abbrev-ref" , "HEAD" ], capture_output = True , text = True , check = True
34- )
35- return result .stdout .strip ()
36- except subprocess .CalledProcessError as e :
37- logger .error (f"Failed to get git branch: { e } " )
38- raise
29+ def check_git_status_and_confirm () -> None :
30+ if not is_git_repo_dirty () and not has_unpushed_commits ():
31+ return
32+
33+ if input ("Git repository dirty/unpushed, continue anyway? (y/N): " ).strip ().lower () not in ("y" , "yes" ):
34+ sys .exit (1 )
3935
4036
4137class AWSBatchJobLauncher :
42- def __init__ (self , job_definition_name : str = "codeclash-yolo-test " , job_queue : str = "codeclash-test -queue" ):
38+ def __init__ (self , job_definition_name : str = "codeclash-default-job " , job_queue : str = "codeclash-queue" ):
4339 self .batch_client = boto3 .client ("batch" )
4440 self .logs_client = boto3 .client ("logs" )
4541 self .job_definition_name = job_definition_name
@@ -154,11 +150,9 @@ def main():
154150 )
155151 parser .add_argument ("--job-name" , help = "Custom job name (auto-generated if not specified)" )
156152 parser .add_argument (
157- "--job-definition" , default = "codeclash-yolo-test" , help = "Job definition name (default: codeclash-yolo-test)"
158- )
159- parser .add_argument (
160- "--job-queue" , default = "codeclash-test-queue" , help = "Job queue name (default: codeclash-test-queue)"
153+ "--job-definition" , default = "codeclash-default-job" , help = "Job definition name (default: codeclash-default-job)"
161154 )
155+ parser .add_argument ("--job-queue" , default = "codeclash-queue" , help = "Job queue name (default: codeclash-queue)" )
162156 parser .add_argument ("--wait" , action = "store_true" , help = "Wait for the job to complete before exiting" )
163157 parser .add_argument ("--show-logs" , action = "store_true" , help = "Show job logs after completion (implies --wait)" )
164158
@@ -171,6 +165,8 @@ def main():
171165
172166 args = parser .parse_args (aws_args )
173167
168+ check_git_status_and_confirm ()
169+
174170 launcher = AWSBatchJobLauncher (job_definition_name = args .job_definition , job_queue = args .job_queue )
175171
176172 # Submit the job
0 commit comments