diff --git a/Makefile b/Makefile index 4facd8028..4aba3f805 100644 --- a/Makefile +++ b/Makefile @@ -54,4 +54,11 @@ shell: @ if [ "${${*}}" = "" ]; then \ echo "Environment variable $* not set"; \ exit 1; \ - fi \ No newline at end of file + fi + +exercises: + $(RUNNER) exercises +.PHONY: exercises + +exercises-sh: + $(RUNNER) --entrypoint "" exercises bash diff --git a/docker-compose.yml b/docker-compose.yml index 67ad77be5..67416a03e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -38,3 +38,9 @@ services: - AWS_DEFAULT_REGION entrypoint: - bash + exercises: + image: devopsacademyau/reviewer:latest + volumes: + - ${PWD}:/da + environment: + - GH_USER diff --git a/exercises/Dockerfile b/exercises/Dockerfile new file mode 100644 index 000000000..6425cf04c --- /dev/null +++ b/exercises/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.10-slim-bullseye +WORKDIR /app + +RUN apt-get update -y && apt-get install -y git +RUN git config --global user.email "dummy@devopsacademy.com" && \ + git config --global user.name "Dummy DA" +# ADD requirements.txt /app +COPY . /app + +# RUN pip3 install -r requirements.txt + +CMD [ "python", "./run.py"] \ No newline at end of file diff --git a/exercises/run.py b/exercises/run.py new file mode 100644 index 000000000..2ffabc5e7 --- /dev/null +++ b/exercises/run.py @@ -0,0 +1,74 @@ +import argparse +import os +import shutil +import sys +from pathlib import Path + +EXERCISES_FOLDER=Path("/app/") +DA_ROOT_PATH=Path("/da") +STUDENT_EXERCISES_FOLDER=Path("{}/students/{}".format(DA_ROOT_PATH, os.environ['GH_USER'])) + +def exercise(exercise): + if not exercise: + exercise = input("What exercise would you like to generate files for: ") + + exercise_folder = Path(EXERCISES_FOLDER, "{}".format(exercise)) + student_exercise_folder = Path(STUDENT_EXERCISES_FOLDER, "exercises/{}".format(exercise)) + + # print(exercise_folder) + # print(student_exercise_folder) + if not exercise_folder.exists(): + sys.exit("Exercise not found.") + + if student_exercise_folder.exists(): + print("Exercise folder already exists.") + refresh = input("Do you want to refresh all the exercise files anyway? (y/Y): ") + if refresh.lower() != 'y': + print("Aborted.") + sys.exit() + + if not student_exercise_folder.exists(): + print("Creating folder {}".format(student_exercise_folder)) + Path.mkdir(student_exercise_folder, parents=True) + + print("Copying all files from exercise {}".format(exercise)) + shutil.copytree(exercise_folder, student_exercise_folder, dirs_exist_ok=True) + + # run exercise after script setup + custom_config(exercise) + +def custom_config(exercise): + if exercise == "git04": + secret_file = "my_env.txt" + secret_file_path = Path(STUDENT_EXERCISES_FOLDER, "exercises/{}/{}".format(exercise, secret_file)) + if secret_file_path.exists(): + Path.unlink(secret_file_path) + print("Creating secret file {}".format(secret_file_path)) + with open(secret_file_path, 'w') as f: + f.write("SERVICE_NAME=account-management\nENVIRONMENT=prod\nPASSWORD=pass1234") + + os.system("cd {} && git add {} && git commit -am 'commit my secret'".format(DA_ROOT_PATH, secret_file_path)) + +def setup(): + # override folder path when running python script outside docker + if os.getenv('LOCAL_RUN', False): + global EXERCISES_FOLDER + global STUDENT_EXERCISES_FOLDER + global DA_ROOT_PATH + EXERCISES_FOLDER = Path(Path().resolve(), "exercises") + STUDENT_EXERCISES_FOLDER = Path(Path().resolve(), "students/{}".format(os.environ['GH_USER'])) + DA_ROOT_PATH = Path(Path().resolve()) + +def main(): + setup() + parser = argparse.ArgumentParser() + # parser.add_argument(dest='option', help="What option to run") + parser.add_argument('-e', dest='exercise', help="What exercise name to run", required=False) + args = parser.parse_args() + + # if args.option == "exercise": + exercise(args.exercise) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/students/caiocezart/exercises/git04/config.json b/students/caiocezart/exercises/git04/config.json deleted file mode 100644 index 874436614..000000000 --- a/students/caiocezart/exercises/git04/config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "v1.0.0" -} \ No newline at end of file diff --git a/students/caiocezart/exercises/git04/my_env.txt b/students/caiocezart/exercises/git04/my_env.txt deleted file mode 100644 index 185888270..000000000 --- a/students/caiocezart/exercises/git04/my_env.txt +++ /dev/null @@ -1,3 +0,0 @@ -SERVICE_NAME=account-management -ENVIRONMENT=prod -PASSWORD=pass1234 \ No newline at end of file