def clone(): grading_directory = get_grading_directory(ensure_exists=False) if path.exists(grading_directory): print(f"{grading_directory} already exists. Please delete it or resume grading.") else: mkdir(grading_directory) student_list = fetch_student_list() write_student_list(grading_directory, student_list) clone_repos(grading_directory, student_list)
def assemble(options, args): grading_directory = get_grading_directory() assignment_name = get_assignment_short_name() grades = {} teams = get_teams_list(grading_directory) for team in teams: print(f"Sending grades to team {team}...") commit_and_merge(grading_directory, team, assignment_name) grades[team] = read_grade(grading_directory, team, assignment_name) write_grades_file(grading_directory, grades)
def grade(options, args): grading_directory = get_grading_directory() partial_grading_text = generate_partial_grading_file() assignment_name = get_assignment_short_name() subdirectories = get_assignment_subdirectories() deadline = get_assignment_deadline() teams = get_teams_list(grading_directory) for team in teams: print(f"Grading team {team}...") repo_path = f"{grading_directory}/{team}" create_branch(repo_path, deadline, generate_grading_name(assignment_name)).checkout() grading_text = partial_grading_text.replace("__TEAM_NUMBER__", team) grading_text += get_commit_info(repo_path) grading_text += get_useless_files(repo_path) grading_text += get_make_output(repo_path, subdirectories) grade_file_path = f"{repo_path}/{generate_grading_file_name(assignment_name)}" with open(grade_file_path, 'w') as f: f.write(grading_text)