From ae7a1744b3b9f82e6b383733a6d333e4bb6900ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Tue, 12 Sep 2023 16:46:06 +0200 Subject: [PATCH] Rename enonce and exercice to assignment and exercise --- ...rciceChecker => Dockerfile_ExerciseChecker | 10 +- ExerciceChecker/.idea/jetbrainsConfiguration | 1 - ExerciceChecker/src/shared | 1 - ExerciceChecker/src/sharedByClients | 1 - .../.idea/.gitignore | 0 .../.idea/ExerciseChecker.iml | 0 .../.idea/codeStyles | 0 .../.idea/inspectionProfiles | 0 .../.idea/modules.xml | 2 +- .../.idea/sqldialects.xml | 0 .../.idea/vcs.xml | 0 .../assets/docker-compose-override.yml | 0 .../package-lock.json | 180 +++++++++--------- .../package.json | 4 +- .../src/app.ts | 66 +++---- .../src/config/Config.ts | 16 +- .../src/managers/DojoBackendManager.ts | 14 +- .../src/managers/HttpManager.ts | 2 +- .../src/types/Style.ts | 0 .../tsconfig.json | 0 20 files changed, 144 insertions(+), 153 deletions(-) rename Dockerfile_ExerciceChecker => Dockerfile_ExerciseChecker (75%) delete mode 160000 ExerciceChecker/.idea/jetbrainsConfiguration delete mode 160000 ExerciceChecker/src/shared delete mode 160000 ExerciceChecker/src/sharedByClients rename {ExerciceChecker => ExerciseChecker}/.idea/.gitignore (100%) rename ExerciceChecker/.idea/ExerciceChecker.iml => ExerciseChecker/.idea/ExerciseChecker.iml (100%) rename {ExerciceChecker => ExerciseChecker}/.idea/codeStyles (100%) rename {ExerciceChecker => ExerciseChecker}/.idea/inspectionProfiles (100%) rename {ExerciceChecker => ExerciseChecker}/.idea/modules.xml (55%) rename {ExerciceChecker => ExerciseChecker}/.idea/sqldialects.xml (100%) rename {ExerciceChecker => ExerciseChecker}/.idea/vcs.xml (100%) rename {ExerciceChecker => ExerciseChecker}/assets/docker-compose-override.yml (100%) rename {ExerciceChecker => ExerciseChecker}/package-lock.json (96%) rename {ExerciceChecker => ExerciseChecker}/package.json (94%) rename {ExerciceChecker => ExerciseChecker}/src/app.ts (68%) rename {ExerciceChecker => ExerciseChecker}/src/config/Config.ts (64%) rename {ExerciceChecker => ExerciseChecker}/src/managers/DojoBackendManager.ts (59%) rename {ExerciceChecker => ExerciseChecker}/src/managers/HttpManager.ts (93%) rename {ExerciceChecker => ExerciseChecker}/src/types/Style.ts (100%) rename {ExerciceChecker => ExerciseChecker}/tsconfig.json (100%) diff --git a/Dockerfile_ExerciceChecker b/Dockerfile_ExerciseChecker similarity index 75% rename from Dockerfile_ExerciceChecker rename to Dockerfile_ExerciseChecker index 4ce2e08..40006bd 100644 --- a/Dockerfile_ExerciceChecker +++ b/Dockerfile_ExerciseChecker @@ -1,16 +1,16 @@ -ARG BUILD_WORKDIR=/dojo/ExerciceChecker +ARG BUILD_WORKDIR=/dojo/ExerciseChecker ######################################################################## Build stage FROM node:18-alpine AS builder LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>" -LABEL Description="Dojo exercice checker - Build stage" +LABEL Description="Dojo exercise checker - Build stage" ARG BUILD_WORKDIR # Create app directory -ADD ExerciceChecker/ ${BUILD_WORKDIR}/ +ADD ExerciseChecker/ ${BUILD_WORKDIR}/ WORKDIR ${BUILD_WORKDIR} @@ -29,11 +29,11 @@ RUN npx pkg . -t node18 --output ${BUILD_WORKDIR}/bin/app --public-packages "*" ######################################################################## Run stage FROM docker:latest LABEL maintainer="Michaël Minelli <michael-jean.minelli@hesge.ch>" -LABEL Description="Dojo exercice checker - Container generation for usage in exercice pipelines" +LABEL Description="Dojo exercise checker - Container generation for usage in exercise pipelines" RUN apk update RUN apk add git ARG BUILD_WORKDIR -COPY --from=builder ${BUILD_WORKDIR}/bin/app /usr/local/bin/dojo_exercice_checker \ No newline at end of file +COPY --from=builder ${BUILD_WORKDIR}/bin/app /usr/local/bin/dojo_exercise_checker \ No newline at end of file diff --git a/ExerciceChecker/.idea/jetbrainsConfiguration b/ExerciceChecker/.idea/jetbrainsConfiguration deleted file mode 160000 index 57997f6..0000000 --- a/ExerciceChecker/.idea/jetbrainsConfiguration +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 57997f6ff4ad2d2e23e03f86d997f64463cc898d diff --git a/ExerciceChecker/src/shared b/ExerciceChecker/src/shared deleted file mode 160000 index f33e4e0..0000000 --- a/ExerciceChecker/src/shared +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f33e4e0c7b34f9060e8995550920d25cd3e73c40 diff --git a/ExerciceChecker/src/sharedByClients b/ExerciceChecker/src/sharedByClients deleted file mode 160000 index 8872f91..0000000 --- a/ExerciceChecker/src/sharedByClients +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8872f91f280e60287c4dba46de58f3f412e0a462 diff --git a/ExerciceChecker/.idea/.gitignore b/ExerciseChecker/.idea/.gitignore similarity index 100% rename from ExerciceChecker/.idea/.gitignore rename to ExerciseChecker/.idea/.gitignore diff --git a/ExerciceChecker/.idea/ExerciceChecker.iml b/ExerciseChecker/.idea/ExerciseChecker.iml similarity index 100% rename from ExerciceChecker/.idea/ExerciceChecker.iml rename to ExerciseChecker/.idea/ExerciseChecker.iml diff --git a/ExerciceChecker/.idea/codeStyles b/ExerciseChecker/.idea/codeStyles similarity index 100% rename from ExerciceChecker/.idea/codeStyles rename to ExerciseChecker/.idea/codeStyles diff --git a/ExerciceChecker/.idea/inspectionProfiles b/ExerciseChecker/.idea/inspectionProfiles similarity index 100% rename from ExerciceChecker/.idea/inspectionProfiles rename to ExerciseChecker/.idea/inspectionProfiles diff --git a/ExerciceChecker/.idea/modules.xml b/ExerciseChecker/.idea/modules.xml similarity index 55% rename from ExerciceChecker/.idea/modules.xml rename to ExerciseChecker/.idea/modules.xml index c2239c4..79d9443 100644 --- a/ExerciceChecker/.idea/modules.xml +++ b/ExerciseChecker/.idea/modules.xml @@ -2,7 +2,7 @@ <project version="4"> <component name="ProjectModuleManager"> <modules> - <module fileurl="file://$PROJECT_DIR$/.idea/ExerciceChecker.iml" filepath="$PROJECT_DIR$/.idea/ExerciceChecker.iml" /> + <module fileurl="file://$PROJECT_DIR$/.idea/ExerciseChecker.iml" filepath="$PROJECT_DIR$/.idea/ExerciseChecker.iml" /> </modules> </component> </project> \ No newline at end of file diff --git a/ExerciceChecker/.idea/sqldialects.xml b/ExerciseChecker/.idea/sqldialects.xml similarity index 100% rename from ExerciceChecker/.idea/sqldialects.xml rename to ExerciseChecker/.idea/sqldialects.xml diff --git a/ExerciceChecker/.idea/vcs.xml b/ExerciseChecker/.idea/vcs.xml similarity index 100% rename from ExerciceChecker/.idea/vcs.xml rename to ExerciseChecker/.idea/vcs.xml diff --git a/ExerciceChecker/assets/docker-compose-override.yml b/ExerciseChecker/assets/docker-compose-override.yml similarity index 100% rename from ExerciceChecker/assets/docker-compose-override.yml rename to ExerciseChecker/assets/docker-compose-override.yml diff --git a/ExerciceChecker/package-lock.json b/ExerciseChecker/package-lock.json similarity index 96% rename from ExerciceChecker/package-lock.json rename to ExerciseChecker/package-lock.json index 4fecbd1..725bf8d 100644 --- a/ExerciceChecker/package-lock.json +++ b/ExerciseChecker/package-lock.json @@ -1,12 +1,12 @@ { - "name": "dojo_exercice_checker", - "version": "1.0.0", + "name": "dojo_exercise_checker", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "dojo_exercice_checker", - "version": "1.0.0", + "name": "dojo_exercise_checker", + "version": "2.0.0", "dependencies": { "ajv": "^8.12.0", "axios": "^1.4.0", @@ -60,9 +60,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz", + "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -154,9 +154,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -178,21 +178,15 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -253,9 +247,9 @@ "dev": true }, "node_modules/@types/docker-modem": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.2.tgz", - "integrity": "sha512-qC7prjoEYR2QEe6SmCVfB1x3rfcQtUr1n4x89+3e0wSTMQ/KYCyf+/RAA9n2tllkkNc6//JMUZePdFRiGIWfaQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.3.tgz", + "integrity": "sha512-i1A2Etnav7uHizZ87vUf4EqwJehY3JOcTfBS0pGBlO+HQ0jg2lUMCaJRg9VQM8ldZkpYdIfsenxcTOCpwxPXEg==", "dev": true, "dependencies": { "@types/node": "*", @@ -298,9 +292,9 @@ } }, "node_modules/@types/node": { - "version": "18.17.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.1.tgz", - "integrity": "sha512-xlR1jahfizdplZYRU59JlUx9uzF1ARa8jbhM11ccpCJya8kvos5jwdm2ZAgxSCwOl0fq21svP18EVwPBXMQudw==", + "version": "18.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz", + "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==", "dev": true }, "node_modules/@types/ssh2": { @@ -313,18 +307,18 @@ } }, "node_modules/@types/tar-stream": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.2.tgz", - "integrity": "sha512-1AX+Yt3icFuU6kxwmPakaiGrJUwG44MpuiqPg4dSolRFk6jmvs4b3IbUol9wKDLIgU76gevn3EwE8y/DkSJCZQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.3.tgz", + "integrity": "sha512-if3mugZfjVkXOMZdFjIHySxY13r6GXPpyOlsDmLffvyI7tLz9wXE8BFjNivXsvUeyJ1KNlOpfLnag+ISmxgxPw==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/triple-beam": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", - "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", + "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==" }, "node_modules/acorn": { "version": "8.10.0", @@ -447,9 +441,9 @@ } }, "node_modules/axios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", - "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", + "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -720,9 +714,9 @@ "dev": true }, "node_modules/cpu-features": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.8.tgz", - "integrity": "sha512-BbHBvtYhUhksqTjr6bhNOjGgMnhwhGTQmOoZGD+K7BCaQDCuZl/Ve1ZxUSMRwVC4D/rkCPQ2MAIeYzrWyK7eEg==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -855,32 +849,6 @@ "node": ">= 8.0" } }, - "node_modules/dockerode/node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/dockerode/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -934,9 +902,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-fifo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz", - "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -1512,9 +1480,9 @@ } }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, "node_modules/napi-build-utils": { @@ -1524,9 +1492,9 @@ "dev": true }, "node_modules/node-abi": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", - "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", + "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -1536,9 +1504,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -1710,6 +1678,34 @@ "node": ">=10" } }, + "node_modules/pkg-fetch/node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/pkg-fetch/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/pkg/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -1859,12 +1855,12 @@ } }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -1876,9 +1872,9 @@ } }, "node_modules/resolve/node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2189,22 +2185,20 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^2.0.0" } }, "node_modules/tar-fs/node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -2344,9 +2338,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", diff --git a/ExerciceChecker/package.json b/ExerciseChecker/package.json similarity index 94% rename from ExerciceChecker/package.json rename to ExerciseChecker/package.json index eba11f3..b20cb75 100644 --- a/ExerciceChecker/package.json +++ b/ExerciseChecker/package.json @@ -1,6 +1,6 @@ { - "name" : "dojo_exercice_checker", - "version" : "1.0.1", + "name" : "dojo_exercise_checker", + "version" : "2.0.0", "main" : "dist/app.js", "bin" : { "dirmanager": "./dist/app.js" diff --git a/ExerciceChecker/src/app.ts b/ExerciseChecker/src/app.ts similarity index 68% rename from ExerciceChecker/src/app.ts rename to ExerciseChecker/src/app.ts index c40fc2e..a8201d8 100644 --- a/ExerciceChecker/src/app.ts +++ b/ExerciseChecker/src/app.ts @@ -9,7 +9,7 @@ import Styles from './types/Style'; import Icon from './sharedByClients/types/Icon'; import RecursiveFilesStats from './shared/helpers/recursiveFilesStats/RecursiveFilesStats'; import Toolbox from './shared/helpers/Toolbox'; -import ExerciceCheckerError from './shared/types/Dojo/ExerciceCheckerError'; +import ExerciseCheckerError from './shared/types/Dojo/ExerciseCheckerError'; import { exec } from 'child_process'; import util from 'util'; import fs from 'fs-extra'; @@ -17,10 +17,10 @@ import HttpManager from './managers/HttpManager'; import DojoBackendManager from './managers/DojoBackendManager'; import Config from './config/Config'; import ArchiveHelper from './shared/helpers/ArchiveHelper'; -import ExerciceDockerCompose from './sharedByClients/helpers/Dojo/ExerciceDockerCompose'; -import ExerciceResultsValidation from './sharedByClients/helpers/Dojo/ExerciceResultsValidation'; -import ExerciceEnonce from './sharedByClients/models/ExerciceEnonce'; -import ClientsSharedExerciceHelper from './sharedByClients/helpers/Dojo/ClientsSharedExerciceHelper'; +import ExerciseDockerCompose from './sharedByClients/helpers/Dojo/ExerciseDockerCompose'; +import ExerciseResultsValidation from './sharedByClients/helpers/Dojo/ExerciseResultsValidation'; +import ExerciseAssignment from './sharedByClients/models/ExerciseAssignment'; +import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo/ClientsSharedExerciseHelper'; (async () => { @@ -30,24 +30,24 @@ import ClientsSharedExerciceHelper from './sharedByClients/helpers/Dojo/ClientsS console.log(Styles.APP_NAME(Config.appName)); - let exerciceEnonce: ExerciceEnonce | undefined; - let exerciceDockerCompose: ExerciceDockerCompose; - let exerciceResultsValidation: ExerciceResultsValidation; + let exerciseAssignment: ExerciseAssignment | undefined; + let exerciseDockerCompose: ExerciseDockerCompose; + let exerciseResultsValidation: ExerciseResultsValidation; /* //////////////////////////////////////////////////////////////////////////////////////////////////////////// Step 1: - - Read the dojo enonce file from the enonce repository + - Read the dojo assignment file from the assignment repository - Download immutables files (maybe throw or show an error if the files have been modified ?) */ { - console.log(Styles.INFO(`${ Icon.INFO }️ Checking the exercice's enonce and his immutable files`)); - exerciceEnonce = await DojoBackendManager.getExerciceEnonce(); - if ( !exerciceEnonce ) { - console.error(Styles.ERROR(`${ Icon.ERROR } Error while getting the exercice's enonce`)); - process.exit(ExerciceCheckerError.EXERCICE_ENONCE_GET_ERROR); + console.log(Styles.INFO(`${ Icon.INFO }️ Checking the exercise's assignment and his immutable files`)); + exerciseAssignment = await DojoBackendManager.getExerciseAssignment(); + if ( !exerciseAssignment ) { + console.error(Styles.ERROR(`${ Icon.ERROR } Error while getting the exercise's assignment`)); + process.exit(ExerciseCheckerError.EXERCISE_ASSIGNMENT_GET_ERROR); } - exerciceEnonce.immutable.forEach(immutableFile => { + exerciseAssignment.immutable.forEach(immutableFile => { const filePath = path.join(Config.folders.project, immutableFile.file_path); fs.mkdirSync(path.dirname(filePath), { recursive: true }); fs.writeFileSync(filePath, immutableFile.content, { encoding: 'base64' }); @@ -64,58 +64,58 @@ import ClientsSharedExerciceHelper from './sharedByClients/helpers/Dojo/ClientsS { const composeOverridePath: string = path.join(Config.folders.project, 'docker-compose-override.yml'); - const composeOverride = fs.readFileSync(path.join(__dirname, '../assets/docker-compose-override.yml'), 'utf8').replace('{{VOLUME_NAME}}', exerciceEnonce.enonceFile.result.volume).replace('{{MOUNT_PATH}}', Config.folders.resultsExercice); + const composeOverride = fs.readFileSync(path.join(__dirname, '../assets/docker-compose-override.yml'), 'utf8').replace('{{VOLUME_NAME}}', exerciseAssignment.assignmentFile.result.volume).replace('{{MOUNT_PATH}}', Config.folders.resultsExercise); fs.writeFileSync(composeOverridePath, composeOverride); - exerciceDockerCompose = new ExerciceDockerCompose(ClientsSharedConfig.dockerCompose.projectName, exerciceEnonce.enonceFile, Config.folders.project, [ composeOverridePath ]); + exerciseDockerCompose = new ExerciseDockerCompose(ClientsSharedConfig.dockerCompose.projectName, exerciseAssignment.assignmentFile, Config.folders.project, [ composeOverridePath ]); try { await new Promise<void>((resolve, reject) => { - exerciceDockerCompose.events.on('step', (name: string, message: string) => { + exerciseDockerCompose.events.on('step', (name: string, message: string) => { console.log(Styles.INFO(`${ Icon.INFO } ${ message }`)); }); - exerciceDockerCompose.events.on('endStep', (stepName: string, message: string, error: boolean) => { + exerciseDockerCompose.events.on('endStep', (stepName: string, message: string, error: boolean) => { if ( error ) { console.error(Styles.ERROR(`${ Icon.ERROR } ${ message }`)); } }); - exerciceDockerCompose.events.on('finished', (success: boolean, exitCode: number) => { + exerciseDockerCompose.events.on('finished', (success: boolean, exitCode: number) => { success ? resolve() : reject(); }); - exerciceDockerCompose.run(); + exerciseDockerCompose.run(); }); } catch ( error ) { } fs.rmSync(composeOverridePath); - fs.writeFileSync(path.join(Config.folders.resultsDojo, 'dockerComposeLogs.txt'), exerciceDockerCompose.allLogs); + fs.writeFileSync(path.join(Config.folders.resultsDojo, 'dockerComposeLogs.txt'), exerciseDockerCompose.allLogs); - if ( !exerciceDockerCompose.success ) { + if ( !exerciseDockerCompose.success ) { console.error(Styles.ERROR(`${ Icon.ERROR } Execution logs are available in artifacts`)); - process.exit(exerciceDockerCompose.exitCode); + process.exit(exerciseDockerCompose.exitCode); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////// Step 3: Check content requirements and content size { - exerciceResultsValidation = new ExerciceResultsValidation(Config.folders.resultsDojo, Config.folders.resultsExercice); + exerciseResultsValidation = new ExerciseResultsValidation(Config.folders.resultsDojo, Config.folders.resultsExercise); try { await new Promise<void>((resolve) => { - exerciceResultsValidation.events.on('step', (name: string, message: string) => { + exerciseResultsValidation.events.on('step', (name: string, message: string) => { console.log(Styles.INFO(`${ Icon.INFO } ${ message }`)); }); - exerciceResultsValidation.events.on('endStep', (stepName: string, message: string, error: boolean) => { + exerciseResultsValidation.events.on('endStep', (stepName: string, message: string, error: boolean) => { if ( error ) { console.error(Styles.ERROR(`${ Icon.ERROR } ${ message }`)); } }); - exerciceResultsValidation.events.on('finished', (success: boolean, exitCode: number) => { + exerciseResultsValidation.events.on('finished', (success: boolean, exitCode: number) => { if ( !success ) { process.exit(exitCode); } @@ -123,7 +123,7 @@ import ClientsSharedExerciceHelper from './sharedByClients/helpers/Dojo/ClientsS resolve(); }); - exerciceResultsValidation.run(); + exerciseResultsValidation.run(); }); } catch ( error ) { } } @@ -143,11 +143,11 @@ import ClientsSharedExerciceHelper from './sharedByClients/helpers/Dojo/ClientsS liteStats : true }); - await DojoBackendManager.sendResults(exerciceDockerCompose.exitCode, commit, exerciceResultsValidation.exerciceResults!, files, await ArchiveHelper.getBase64(Config.folders.resultsVolume)); + await DojoBackendManager.sendResults(exerciseDockerCompose.exitCode, commit, exerciseResultsValidation.exerciseResults!, files, await ArchiveHelper.getBase64(Config.folders.resultsVolume)); } catch ( error ) { console.error(Styles.ERROR(`${ Icon.ERROR } Error while uploading the results`)); console.error(JSON.stringify(error)); - process.exit(ExerciceCheckerError.UPLOAD); + process.exit(ExerciseCheckerError.UPLOAD); } } @@ -158,8 +158,8 @@ import ClientsSharedExerciceHelper from './sharedByClients/helpers/Dojo/ClientsS - Exit with container exit code */ { - ClientsSharedExerciceHelper.displayExecutionResults(exerciceResultsValidation.exerciceResults!, exerciceDockerCompose.exitCode, Styles, `\n\n${ Icon.INFO }️ More detailed logs and resources may be available in artifacts`); + ClientsSharedExerciseHelper.displayExecutionResults(exerciseResultsValidation.exerciseResults!, exerciseDockerCompose.exitCode, Styles, `\n\n${ Icon.INFO }️ More detailed logs and resources may be available in artifacts`); - process.exit(exerciceDockerCompose.exitCode); + process.exit(exerciseDockerCompose.exitCode); } })(); \ No newline at end of file diff --git a/ExerciceChecker/src/config/Config.ts b/ExerciseChecker/src/config/Config.ts similarity index 64% rename from ExerciceChecker/src/config/Config.ts rename to ExerciseChecker/src/config/Config.ts index 5d7d609..9072ff8 100644 --- a/ExerciceChecker/src/config/Config.ts +++ b/ExerciseChecker/src/config/Config.ts @@ -6,10 +6,10 @@ class Config { public readonly appName: string; public readonly folders: { - project: string; resultsVolume: string; resultsDojo: string; resultsExercice: string; + project: string; resultsVolume: string; resultsDojo: string; resultsExercise: string; }; - public readonly exercice: { + public readonly exercise: { id: string; secret: string; }; @@ -18,14 +18,14 @@ class Config { this.folders = { project : process.env.PROJECT_FOLDER?.convertWithEnvVars() ?? './', - resultsVolume : process.env.EXERCICE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', - resultsDojo : path.join(process.env.EXERCICE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', 'Dojo/'), - resultsExercice: path.join(process.env.EXERCICE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', 'Exercice/') + resultsVolume : process.env.EXERCISE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', + resultsDojo : path.join(process.env.EXERCISE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', 'Dojo/'), + resultsExercise: path.join(process.env.EXERCISE_RESULTS_VOLUME?.convertWithEnvVars() ?? '', 'Exercise/') }; this.resetResultsVolume(); - this.exercice = { - id : process.env.DOJO_EXERCICE_ID || '', + this.exercise = { + id : process.env.DOJO_EXERCISE_ID || '', secret: process.env.DOJO_SECRET || '' }; } @@ -33,7 +33,7 @@ class Config { private resetResultsVolume(): void { fs.emptyDirSync(this.folders.resultsVolume); fs.emptyDirSync(this.folders.resultsDojo); - fs.emptyDirSync(this.folders.resultsExercice); + fs.emptyDirSync(this.folders.resultsExercise); } } diff --git a/ExerciceChecker/src/managers/DojoBackendManager.ts b/ExerciseChecker/src/managers/DojoBackendManager.ts similarity index 59% rename from ExerciceChecker/src/managers/DojoBackendManager.ts rename to ExerciseChecker/src/managers/DojoBackendManager.ts index 27df41e..0799a3c 100644 --- a/ExerciceChecker/src/managers/DojoBackendManager.ts +++ b/ExerciseChecker/src/managers/DojoBackendManager.ts @@ -1,9 +1,9 @@ import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; import axios from 'axios'; -import DojoResponse from '../shared/types/Dojo/DojoResponse'; -import ExerciceEnonce from '../sharedByClients/models/ExerciceEnonce'; +import DojoBackendResponse from '../shared/types/Dojo/DojoBackendResponse'; +import ExerciseAssignment from '../sharedByClients/models/ExerciseAssignment'; import Config from '../config/Config'; -import ExerciceResultsFile from '../shared/types/Dojo/ExerciceResultsFile'; +import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile'; import ApiRoute from '../sharedByClients/types/Dojo/ApiRoute'; @@ -12,17 +12,17 @@ class DojoBackendManager { return `${ ClientsSharedConfig.apiURL }${ route }`; } - public async getExerciceEnonce(): Promise<ExerciceEnonce | undefined> { + public async getExerciseAssignment(): Promise<ExerciseAssignment | undefined> { try { - return (await axios.get<DojoResponse<ExerciceEnonce>>(this.getApiUrl(ApiRoute.EXERCICE_ENONCE).replace('{{id}}', Config.exercice.id))).data.data; + return (await axios.get<DojoBackendResponse<ExerciseAssignment>>(this.getApiUrl(ApiRoute.EXERCISE_ASSIGNMENT).replace('{{id}}', Config.exercise.id))).data.data; } catch ( error ) { return undefined; } } - public async sendResults(exitCode: number, commit: any, results: ExerciceResultsFile, files: any, archiveBase64: string): Promise<void> { + public async sendResults(exitCode: number, commit: any, results: ExerciseResultsFile, files: any, archiveBase64: string): Promise<void> { try { - await axios.post(this.getApiUrl(ApiRoute.EXERCICE_RESULTS).replace('{{id}}', Config.exercice.id), { + await axios.post(this.getApiUrl(ApiRoute.EXERCISE_RESULTS).replace('{{id}}', Config.exercise.id), { exitCode : exitCode, commit : JSON.stringify(commit), results : JSON.stringify(results), diff --git a/ExerciceChecker/src/managers/HttpManager.ts b/ExerciseChecker/src/managers/HttpManager.ts similarity index 93% rename from ExerciceChecker/src/managers/HttpManager.ts rename to ExerciseChecker/src/managers/HttpManager.ts index 432e456..fb11396 100644 --- a/ExerciceChecker/src/managers/HttpManager.ts +++ b/ExerciseChecker/src/managers/HttpManager.ts @@ -25,7 +25,7 @@ class HttpManager { config.headers['Content-Type'] = 'multipart/form-data'; } - config.headers.Authorization = `ExerciceSecret ${ Config.exercice.secret }`; + config.headers.Authorization = `ExerciseSecret ${ Config.exercise.secret }`; } return config; diff --git a/ExerciceChecker/src/types/Style.ts b/ExerciseChecker/src/types/Style.ts similarity index 100% rename from ExerciceChecker/src/types/Style.ts rename to ExerciseChecker/src/types/Style.ts diff --git a/ExerciceChecker/tsconfig.json b/ExerciseChecker/tsconfig.json similarity index 100% rename from ExerciceChecker/tsconfig.json rename to ExerciseChecker/tsconfig.json -- GitLab