コード例 #1
0
ファイル: list.py プロジェクト: ipfarher/krem
def list_tasks():
    tasks_path = kremtree.find_common_dir(c.PROJECT_TASKS_DIR)
    if tasks_path is not None:
        tasks_path = os.path.abspath(tasks_path)
        tasks_list = kremtree.list_dir(tasks_path)
        tasks_list.sort()

        print("\nAvailable tasks:\n")
        print("[nr]\tname\n")

        idx = 0
        for task in tasks_list:
            missingFiles = []
            printstring = "[" + str(idx) + "]\t" + str(task)
            # List scripts in task, to quickly see if something is missing
            task_path = os.path.join(tasks_path, task)

            if not os.path.isfile(os.path.join(task_path,
                                               c.TEMPLATE_TASK_FILE)):
                missingFiles.append(c.TEMPLATE_TASK_FILE)
            if not os.path.isfile(os.path.join(task_path,
                                               c.INIT_PACKAGE_FILE)):
                missingFiles.append(c.INIT_PACKAGE_FILE)

            if len(missingFiles) > 0:
                printstring = printstring + '\t' + "missing files: " + str(
                    missingFiles)

            print(printstring)
            idx = idx + 1
        print("")
コード例 #2
0
def run_job(target):
    ret = 0
    err = False
    jobs_path = kremtree.find_common_dir(c.PROJECT_JOBS_DIR)

    idx = 0
    job_num = check_if_job_number(target)

    if not job_num < 0:
        jobs = kremtree.list_dir(jobs_path)
        jobs.sort()
        if not job_num + 1 > len(jobs):
            for job in jobs:
                if idx == job_num:
                    print("\nRunning job: " + str(job) + "\n")
                    target = job
                    break
                idx = idx + 1

        else:
            print("Invalid job number: " + str(job_num))
            err = True

    if not err:
        #this will add project path to sys path so jobs can acces library, config, etc
        current_env = os.environ.copy()
        current_env['PYTHONPATH'] += os.pathsep + os.path.join(
            os.path.dirname("."))
        target_path = os.path.join(jobs_path, target, c.TEMPLATE_JOB_SCRIPT)
        try:
            ret = subprocess.call(['python', target_path], env=current_env)
        except Exception as e:
            print("Invalid job: " + str(target))

    return ret
コード例 #3
0
ファイル: list.py プロジェクト: ipfarher/krem
def list_jobs():
    jobs_path = os.path.abspath(kremtree.find_common_dir(c.PROJECT_JOBS_DIR))
    job_list = kremtree.list_dir(jobs_path)
    job_list.sort()

    print("\nAvailable jobs: \n")
    print("[nr]\tname\n")
    idx = 0
    for job in job_list:
        print("[" + str(idx) + "]\t" + str(job))
        idx = idx + 1
    print('\n')
コード例 #4
0
def run_job(target):
    ret = 0        

    jobs_path = kremtree.find_common_dir(c.PROJECT_JOBS_DIR)
    
    if not os.path.isdir(os.path.join(kremtree.find_krem_root("./"), c.PROJECT_OUTPUT_DIR)):        
        templatePath = os.path.join(c.TEMPLATES_PATH, c.TEMPLATE_PROJECT)
        shutil.copytree(os.path.join(templatePath, c.PROJECT_OUTPUT_DIR), os.path.join(kremtree.find_krem_root("./"), c.PROJECT_OUTPUT_DIR))
    
    idx = 0
    job_num = check_if_job_number(target)
    
    if job_num >= 0:
        jobs = kremtree.list_dir(jobs_path)
        jobs.sort()
        if not job_num + 1 > len(jobs):
            for job in jobs:
                if idx == job_num:
                    print("\nRunning job: " + str(job) +"\n")
                    target = job
                    break
                idx = idx + 1                
        else:
            print("Invalid job number: " + str(job_num))   
            ret = 1         

    if ret == 0:
        target_path = os.path.join(jobs_path, target, c.TEMPLATE_JOB_SCRIPT)
        if not os.path.exists(target_path):
            print("Invalid job: " + str(target)) 
            ret = 1


    if ret == 0:
        #this will add project path to sys path so jobs can acces library, config, etc
        current_env = os.environ.copy()
        current_env['PYTHONPATH'] += os.pathsep + os.path.join(os.path.dirname("."))

        if os.stat(target_path).st_size == 0:
            print("[ERROR]: Target job-script is empty.")
            exit(1)

        try:
            ret = subprocess.call(['python', target_path], env=current_env)
        except Exception:
            print("Invalid job: " + str(target))
            ret = 1        

    return ret