diff --git a/AssignmentChecker/.env.vault b/AssignmentChecker/.env.vault index 333e918b10845d7d743ec6993b4fb0e6cd713fe2..4635b629118dd17b4e004464827c3910d4f11f95 100644 --- a/AssignmentChecker/.env.vault +++ b/AssignmentChecker/.env.vault @@ -4,11 +4,11 @@ #/--------------------------------------------------/ # development -DOTENV_VAULT_DEVELOPMENT="wXBOtcsze+pmmGLl2aIrzqcQYvVWwO2wXyQW8rLrhdxDwU/10OfF49+nWmHxl8OVA3YrkHZ5UmdGbVyecwa+y6eH6pZv42MoP8MhkqXUVocnTAy86AqpLMeqj7/pTBae3UW+v4kZJnMCtsvPDnJKs/vuvAOBnXQbRB+SLCFpXtz+ZlQWqzKvxxakm60rrjazRQE9KiUVwFHPAKW+YdzdxXloaFP6Rzc3eCxRv6Je0C0QIiIs7MkuPqDNNF9J/5Yc+FKmzFaavVdlKBdxzzQ93FUbBFJzQ4bG6cEIutGkuKJtLRNOC7FR2M9tHMHb2q1csz5LmrqQ+HZd/qb8kTyuKGoKzjeEVEn4FK3tCQm6Qzbbw0Ktnzk7EsMT8E5hFa2bBx0XdDMUQzC7UYXS2BkIOP9JLrxStkMcwaCRAau+0nhbMdEynKHGubNtnQH0umY5TXtVC97huQjE09HtT0Ggx8VPiq3qE0gGYsa1y1c9LLV8ljQiUJDsUqri26QKu+iVJ/eIW4XSoEN+NgmDzEq8fd2rx6X0a9HcXDtpb3VX80FzZzwlvx+FUXOyrNY4WsQQTkwaPMpau8ppwSeQH1mjqNDAPNfR2cPv4mI8xE7Nz4XJAkC3/5H4rH511GrQ66ZyMpsTItOEOfX6gHabzdkqY4Vrv5ZYHVPzdh4+S+OAzuGR1wscxaZagHYrvi0/Hca/KX/d0mRWhFWCqD7tFV1w9cQasz0n2RDHIUMXYjO9ieBBPX/bQRbf4PW8MbxlVjtRrOJgrsi13Dn+UJI9m0V8DmQ4L/4+tmdI010e0/XA//IMiMKMLAM5EcXljy2et5ZscS1bejDaCsseKoN8BiYc3gtw93X8CGLHyr4m5F4Y+FcS02cts9QeQCVrBDgGBmZxYZSIxeg4sVNKgaXdbXKuhTctpwpKv4pIWyhGnm3yeXX4El3LZ3QtqpDwvnIk0JoNYCEnX2alQEfrl2LqIxMKgcyCir6pSkChuKov84oN1af1wfiJGt4NFfhRjR8oMjliY6dQB95HX+RS4A==" +DOTENV_VAULT_DEVELOPMENT="Ar4+WxQJ+Cx4+ypVs8w+/OlT6sJ2UwqvvWuT9YcAufPxHgo1/YDyQpwS6CGNdsA5FEnhM9dyuodCw8Mjdi3N1m3VFjPPelfq5v4O3qZPAiuAkpwRkf/pD9kfZ5/b/EhrCIJzJopQQCE8c3TuF6y+IfSv+/stw+bx3LzCmG7JIsRPXPJBjIYmj4vvXHRwRsLlsY/F0Vc7P2FCvyk8s4+bUzHZwAt2oMDFP8Q348eJdZ4QyJZzMVQf5XE6SMqMtR3nMxvE5H/UhH7nv6yN87CElDKtzSh4jCQS55rdaX209y4D+ogn5PFniUsGb8SAM04Igiu7OMqcbDXMH6axAHm3jBf2onbUwRnbLLdkF0lBngSJsYouQkcDhHXmqio3xGrH/jBwSkJK2UXs76ZnVMlqSi7ny5Hc5rXNjpBQKJXLk88uaHfN9Osh5lkDIUF6we6zYzXXQJpy3+9DJVmyBxTyQUnb1ku8/ttPDlWAV0CNUmju4M1MJAIcQqwEbvJ5xRd6ia2LywGqlAmVOSSqSEf72W+RktqjsNop1OFHEY+oYPjUVq35H2qxJWPDf3Mja3iULhaRegcoT1N45Uu9GWl4EY2VWt2kTfYcbEMSdXj3mHJuvQEHdRGCD/HK52Gfa9WCaVoltR5NQ5G06/x1IRELCOjVoAjs9jhDwNnHTuxGLX6vUZX5RsOFnyvIhtX/LRMyAturYPODuw8ToPlHeZaQuVk8kMjfzSzCW2ixRkG79JWTHSBHhdJ/jQ3sFsby7c8u475rNc/ECeqOWRgjthjLf3JUnbjSQ5Y=" # production -DOTENV_VAULT_PRODUCTION="Rcz6CubfWYYhOvVAbYeVx+T7GLZH0eJ0s2Q27YSw826Cdy1T667ZxiW/mAByMuGO7hILoZDrpOzcRAXs0vV6h1yH7cF7ZPt1bip+Xbpowuz+ietTKEG2xQefwQCHi3n4hnU9mE5LYU/HKmux9NVwlTOJ990t9YKnzwvq3RlWSdLWqHqPTsRfCfcfss0SpSUiJ0IcvSb11JOmZaA+x2vcE9o3emPIirGa3Vctkrtj9LZ8ZCT60VeKGh2PAi5ZK4aekV/B3lTzenXXzht6ukGJrhvp7EZCCAfubrq4EKXZtFlzBqXjtK1Yspcnq3igY4Tyr7xry+wnPBHw0nlO8gBmG9nYWv0eNqDpf4r7p7K2zTk1RqDQB+avvjFhPvcpKIkpFQNimL+1bDNwI9v60gYH2hhn5vEZ2ILCaMeVlEfL9oQIiKtusJJon+6LcyykshpXSLqtmSm00A8h5eab4DpvCTk+ancvJzzuIxnX4b11xVtSChBxN9QGAsjN0O8SS6C+ZEybphUOiMHRS2deqKu65tF7+8sLnRf0WXWuaEZppuRv2wLft6Qaf09+JSCgtk4BXF/8vKBDNIO8Dnp3iQyShP+h29+BuNFzs4dpIvv51DBZ3uUEzBXdgm89eyRzr/xWueg1VqsEZ+ztDXCMRzN/aSg7DSv9V6TwKaKPyhSUeyfhbFfzr2OW145IUzFGEgtaM/8Yw4HWE+hqMbVL+tsp+Pz5fR1jb52+oQE5pibmTjNcQ2eivUid5A5kVD622tnC3h5+rV55wVIbKVJ/ZzunajA064LH6Alqx6sBJVhe4j3UwT/yuxAWqWiu/6bBloIx6bXxnOskpDddAfkXuQUk7DchABYMvAlko+O3OPE6fgx3bGNhC48fm5etbDlF92w6HUqCrpGHZ2xZkdGwwho4p9oUkE0QgPXBIgYUmYq4987PXrE=" +DOTENV_VAULT_PRODUCTION="Jc0E0rOwIHh1GduNwYWFwU8AYEmkNVK1IKErjPSlPrS5mKr7RpWZyC5297/q0Hvla0VkEvID5qzs04F9SufOWqXgLlFUPL/gizc1p9poHyV1EVQqD8BsV6prlma6z6Wu3DP3i5GfcHIcaZTMq8CBuWcSNoQs7OhJNpUhy0Mw3kJgk6EeLRQ11qNJBSFyLUB2LZ5Y065tQXxxCTPuC9FteyUSi4J8jxBTE8xW4Fy9Fi7+0e6yRFp92aS13qbJKunNeFF27DRIVdr8qpiXgTCovE2B7fJ7aiPe4CC37WB7mPXtxB2AxkHDi6uU6U/4TtNTCtkP9erQ7LKPReCsxg+U9EMmE5zesvxfYeBBkG2Ex9IaNfC7d8GBz60mlK5BtJd2cIF1MDkH5hS1t/ogRpi7t0WV6cWhFGakoz+vULqDVcrYYX7I9Wnw+sfMFOgjO5c1/SvZe8waNav3m7Ji/IFztWWu1d7UI0PdaK3sJBHN/G01+La9S0WInGl2yPFoPQrPEEn0DusEFC6ISeezTwdNdzCmf28/PEag8ghfXj1c11Egrwfwjo2x6d/Qy6/0tqXlPSwdUqAZ5o/xwIjpa5JtUxKlxwEEEbc8oOIBnsKglWSlbOpkb8J+ITXjk7Q/y6uf6ey7LprYtIO8rOovQLtwfppMS441WoIVpKB6FAmfmPYqabz5vQzdWz3RGZKG87un" # test -DOTENV_VAULT_TEST="1OLBaEdDI49XBdJOU8NyqevOHbM9PhUYmtRXRTdxeJL9WtSU/kp1gk8bmDlUoUe5tGnzZDuu3O9GEMyp+c5VQquaWsj5vH9+m1GRPwf5UbKETHvHfrGEknytjMahZF5kAydDnp1DZHWRYpG/KBgC2UvN3/jUP4xkDdmpt+iDUIjV7Uto5Lw6B6iWEu5i5eaye9SiPjtouMzyHoAUNP3ViCI0pB/H/8yOUYiWVNtZs/88MUN+QAtekBWfeRQ+nDSYsJMQ0JwD6eDlxSuJ9HkXRGwzIISsHUd/7qFh3dAjQRJZDAjEezcrw2QoCliaxWcnhu6POmZUfJTQYj+g6hSK3Hpv780o+BYIXLyvXJoKdvLiUQyElyibgOYOzPTwuDWTA3MbM3660Sjpbf+ZvukFS3nnKJmv7eH61/UFTbZMAR78Fy1WUD5qwZYxp61W8NGWaoGqwWOe30ZyLWDZH3M9aNarp7U4rjizcvfFiUfUo+9CyPlgk05hT+cklaoqdckNjAPzlwoOdng34bSfBvpjAtCCyS8vH5RPtw4KerEESO7/8bqUEf/YIyFHYcUitUPVSgXJnuyysqrTmPq5TPiBezwRquBMvTW46KMQTrnk4+6bKxd+Mqev16rW1UsMJqlEM35cSMjKaxPa7LT0KuGvkcVqpHHdypdvQtZ0PlTlmTutuqNwqmBfEPRZqnSOKVirlL159A1fZIOof6mWy4lzQe1f/AQb9vIL5K8QjHHZ0MJt2lZG/vlZRpXcVWegZyYUQOXKjLgijuozjg09xOakhLPncjM1Krgr70d7f0zN/OFTjcaBPIKOSAf3vDrpSetQyZTNDWl9+vB+J0/b+nbwx0Wv5D8Il2rMfnvLpg==" +DOTENV_VAULT_TEST="Uby3FPI51CVAoTBVItqiAewUKWWVgK5t5OF5JpkzWFqREtJMrIp8UKQdh1mBOkf5Le4Xt55Sy0wtCY/VjZg+qDWfJE61Sw35Ba+zZa11gbJJEFeEZC59/sVikIK+wKRCuw/k39c1Kb8EDBXwzxLkMFGeBTlAfYjNvua+svAmwKo9JhQrOPMLCO7KmZgLd5GJLJsLiHhTZLOOJKEHbjJ1XSct2IxQ4H9PulWqF9BlGj+xthko6Tl+Y1+xmxP+AKC0pCTGaKU9tdQQDW007jeBJEk2BN8lhgAmfyOHKHA9WAoDndG8nFMckVjN+x52OD8dRat20Z0i/rJbfhuN9Mc2Sqvz/4ztJM94vKjI+TPX5msc2VVavRPCEaAAHoFhKyDK7E9OiSD4hdYJPaehZg0cfV+Lmg9e+FE3UX9LVjJxqTNw40FtNyGHl4UsrbbTiPhK2EB02rD6j99y1JizMaoC5h0Qj5f0gDUlxNQi3lLT5r4jR2pjxPr8SOjOiE0j99xuIlr/UbW/hS6fLMfEERD3deJhieOpF20ESe3e3dFnDkVWpPjVeWVMMhgad+jHS2RGoy87n3KaJML1VJpiDBNQeM1ndmYhcqK6ULmPwcPgeg+X" diff --git a/AssignmentChecker/.gitlab-ci/01_functions.yml b/AssignmentChecker/.gitlab-ci/01_functions.yml index 898ab5584a7a2e26f17a9b739ea27e86002c8c6a..8a8d25779b99da0bdaba423d80f5cb473baaabf9 100644 --- a/AssignmentChecker/.gitlab-ci/01_functions.yml +++ b/AssignmentChecker/.gitlab-ci/01_functions.yml @@ -75,7 +75,7 @@ - > platform_array=$(echo $DOCKER_PLATFORMS | tr "," "\n"); for platform in $platform_array; do - echo "Buildind for : $platform" + echo "Building for: $platform" docker buildx build --pull --platform $platform --file $DOCKERFILE --tag $CONTAINER_IMAGE . done diff --git a/AssignmentChecker/.idea/dataSources b/AssignmentChecker/.idea/dataSources new file mode 120000 index 0000000000000000000000000000000000000000..dad593ac636a6315d6d91992d4b1e57e31182df2 --- /dev/null +++ b/AssignmentChecker/.idea/dataSources @@ -0,0 +1 @@ +jetbrainsConfiguration/dataSources/ \ No newline at end of file diff --git a/AssignmentChecker/config.env b/AssignmentChecker/config.env new file mode 100644 index 0000000000000000000000000000000000000000..924ad2dbdeb1fd84579278433020d6516a7020bd --- /dev/null +++ b/AssignmentChecker/config.env @@ -0,0 +1,15 @@ +########################### Node env vars +NODE_ENV=production + + +########################### App env vars +APP_NAME='DOJO ASSIGNMENT CHECKER' + +ASSIGNMENT_FILENAME=dojo_assignment.json +ASSIGNMENT_NEEDED_FILES='["${ASSIGNMENT_FILENAME}", "docker-compose.yml"]' + +LOGS_FOLDER=logs +EXERCISE_RESULTS_VOLUME=$CI_PROJECT_DIR/Results_of_exercise_$DOJO_EXERCISE_ID/ +EXERCISE_RESULTS_FILENAME=results.json + +DOCKER_COMPOSE_PROJECT_NAME=dojo \ No newline at end of file diff --git a/AssignmentChecker/package-lock.json b/AssignmentChecker/package-lock.json index 17196ad4f74438d5a72ea49f3e835faf5ec88a63..237fb2f73371c040cfb4dab575a57272c97310e6 100644 --- a/AssignmentChecker/package-lock.json +++ b/AssignmentChecker/package-lock.json @@ -167,371 +167,411 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2094,41 +2134,43 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "node_modules/escalade": { @@ -2669,6 +2711,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2750,10 +2793,11 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", - "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -4208,6 +4252,7 @@ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -4757,12 +4802,13 @@ } }, "node_modules/tsx": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.16.2.tgz", - "integrity": "sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "~0.21.5", + "esbuild": "~0.23.0", "get-tsconfig": "^4.7.5" }, "bin": { diff --git a/AssignmentChecker/package.json b/AssignmentChecker/package.json index fc2a51c574a76a01d9ff46832b142816c953b6cf..e7cf7a2cd07e9259d9b923c576d06d4820a69836 100644 --- a/AssignmentChecker/package.json +++ b/AssignmentChecker/package.json @@ -4,7 +4,6 @@ "version" : "5.0.0", "license" : "AGPLv3", "author" : "Michaƫl Minelli <dojo@minelli.me>", - "type" : "module", "main" : "dist/app.js", "bin" : { "dirmanager": "./dist/app.js" @@ -26,7 +25,7 @@ "lint" : "npx eslint .", "genversion" : "npx genversion -s -e src/config/Version.ts", "build" : "npm run genversion; npx tsc", - "start:dev" : "npm run genversion; npm run lint; tsc --noEmit && npx tsx dist/app.js", + "start:dev" : "npm run genversion; npm run lint; tsc --noEmit && npx tsx --no-warnings src/app.ts", "test" : "echo \"Error: no test specified\" && exit 1" }, "dependencies" : { diff --git a/AssignmentChecker/src/app.ts b/AssignmentChecker/src/app.ts index 6f6db64862d96a8410e280da9bf861212f0996f2..fa0d5ce014b6a1da2c9e011e7b12a419dd1c7c06 100644 --- a/AssignmentChecker/src/app.ts +++ b/AssignmentChecker/src/app.ts @@ -6,9 +6,14 @@ import Styles from './types/Style.js'; import HttpManager from './managers/HttpManager.js'; import Config from './config/Config.js'; import Icon from './shared/types/Icon.js'; +import SharedAssignmentHelper from './shared/helpers/Dojo/SharedAssignmentHelper'; (async () => { + await Config.init(); + + SharedAssignmentHelper.init(Config.gitlabManager); + HttpManager.registerAxiosInterceptor(); console.log(Styles.APP_NAME(`${ Config.appName } (version {{VERSION}})`)); diff --git a/AssignmentChecker/src/config/Config.ts b/AssignmentChecker/src/config/Config.ts index 94cb8b6e67ed34c99a7046ed25445296059b71af..729deac3e15e79d20e0f1e5defd0a85e945649c0 100644 --- a/AssignmentChecker/src/config/Config.ts +++ b/AssignmentChecker/src/config/Config.ts @@ -1,34 +1,47 @@ -import fs from 'fs-extra'; -import path from 'path'; +import fs from 'fs-extra'; +import path from 'path'; +import GitlabManager from '../managers/GitlabManager'; +import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; class Config { - public readonly appName: string; + public gitlabManager!: GitlabManager; - public readonly folders: { + public appName!: string; + + public folders!: { project: string; resultsVolume: string; resultsDojo: string; resultsExercise: string; }; - public readonly dockerhub: { + public dockerhub!: { repositories: { assignmentChecker: string } }; - constructor() { - this.appName = process.env.APP_NAME || ''; + constructor() { } + + async init() { + const apiUrl = process.env.API_URL ?? ''; + + await ClientsSharedConfig.init(apiUrl); + const getEnvVar = ClientsSharedConfig.envVarGetter(); + + this.gitlabManager = new GitlabManager(ClientsSharedConfig.gitlab.URL, ClientsSharedConfig.login.gitlab.client.id, ClientsSharedConfig.login.gitlab.url.redirect, ClientsSharedConfig.login.gitlab.url.token); + + this.appName = getEnvVar('APP_NAME', ''); this.folders = { - project : process.env.PROJECT_FOLDER?.convertWithEnvVars() ?? './', - 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/') + project : getEnvVar('PROJECT_FOLDER', './').convertWithEnvVars(), + resultsVolume : getEnvVar('EXERCISE_RESULTS_VOLUME', '').convertWithEnvVars(), + resultsDojo : path.join(getEnvVar('EXERCISE_RESULTS_VOLUME', '').convertWithEnvVars(), 'Dojo/'), + resultsExercise: path.join(getEnvVar('EXERCISE_RESULTS_VOLUME', '').convertWithEnvVars(), 'Exercise/') }; this.resetResultsVolume(); this.dockerhub = { repositories: { - assignmentChecker: process.env.DOCKERHUB_ASSIGNMENT_CHECKER_REPOSITORY || '' + assignmentChecker: getEnvVar('DOCKERHUB_ASSIGNMENT_CHECKER_REPOSITORY', '') } }; } diff --git a/AssignmentChecker/src/init.ts b/AssignmentChecker/src/init.ts index 8c19f91bfce0275dda2204a92735c41c1468e73d..4920df1d1beabaf6477fe8ae28de8219242456e8 100644 --- a/AssignmentChecker/src/init.ts +++ b/AssignmentChecker/src/init.ts @@ -7,4 +7,6 @@ import './shared/helpers/TypeScriptExtensions.js'; dotenvExpand.expand(dotenv.config({ path : path.join(__dirname, '../.env'), DOTENV_KEY: 'dotenv://:key_f1778b6998874f6fd78c716ccef982c5595fa300f174b129eafc88ba7044d69b@dotenv.local/vault/.env.vault?environment=development' - })); \ No newline at end of file + })); + +dotenvExpand.expand(dotenv.config({ path: path.join(__dirname, '../config.env') })); \ No newline at end of file diff --git a/AssignmentChecker/src/managers/GitlabManager.ts b/AssignmentChecker/src/managers/GitlabManager.ts index 2228decdd2acea5058098df2f78ae09145c51e27..142662c38285059584fc50f69f5d938fde473b69 100644 --- a/AssignmentChecker/src/managers/GitlabManager.ts +++ b/AssignmentChecker/src/managers/GitlabManager.ts @@ -4,10 +4,10 @@ import SharedGitlabManager from '../shared/managers/SharedGitlabManager.js'; // File present only for prevent errors from shared submodules class GitlabManager extends SharedGitlabManager { - constructor() { - super(''); + constructor(public gitlabUrl: string, clientId?: string, urlRedirect?: string, urlToken?: string) { + super(gitlabUrl, '', clientId, urlRedirect, urlToken); } } -export default new GitlabManager(); \ No newline at end of file +export default GitlabManager; \ No newline at end of file diff --git a/AssignmentChecker/src/shared b/AssignmentChecker/src/shared index bf75a99ba472386daa111c2fefbe69a4272ef48c..d9ecaee5f58b1b94413903ebf737b4d235bc2858 160000 --- a/AssignmentChecker/src/shared +++ b/AssignmentChecker/src/shared @@ -1 +1 @@ -Subproject commit bf75a99ba472386daa111c2fefbe69a4272ef48c +Subproject commit d9ecaee5f58b1b94413903ebf737b4d235bc2858 diff --git a/AssignmentChecker/src/sharedByClients b/AssignmentChecker/src/sharedByClients index 4e33e70f6035898f119369ae5db784d51d8298a0..64dc406659114f3afcbc89258afe84c8553c6b8f 160000 --- a/AssignmentChecker/src/sharedByClients +++ b/AssignmentChecker/src/sharedByClients @@ -1 +1 @@ -Subproject commit 4e33e70f6035898f119369ae5db784d51d8298a0 +Subproject commit 64dc406659114f3afcbc89258afe84c8553c6b8f diff --git a/AssignmentChecker/tsconfig.json b/AssignmentChecker/tsconfig.json index 96fb4746956f00be06516b61b2d50cdc8d621d56..bdd2d43b6302727fc871a6dfccac57243b628b7f 100644 --- a/AssignmentChecker/tsconfig.json +++ b/AssignmentChecker/tsconfig.json @@ -1,18 +1,18 @@ { "compilerOptions": { - "rootDir" : "src", - "outDir" : "dist", - "strict" : true, - "target" : "ES2022", - "module" : "commonjs", - "sourceMap" : true, - "noImplicitAny" : true, - "esModuleInterop" : true, - "lib" : [ + "rootDir" : "src", + "outDir" : "dist", + "strict" : true, + "target" : "ES2022", + "module" : "commonjs", + "sourceMap" : true, + "noImplicitAny" : true, + "esModuleInterop": true, + "lib" : [ "ES2022", "DOM" ], - "types" : [ + "types" : [ "node" ] }, @@ -20,6 +20,7 @@ "node_modules" ], "include" : [ - "src/**/*.ts" + "src/**/*.ts", + "eslint.config.mjs" ] } \ No newline at end of file diff --git a/deploy_on_dockerhub.sh b/deploy_on_dockerhub.sh new file mode 100755 index 0000000000000000000000000000000000000000..6980a39211d37a5690834ad68e07ae748bc49ff1 --- /dev/null +++ b/deploy_on_dockerhub.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +# Define color codes +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + + +DOCKERFILE=Dockerfile_AssignmentChecker + +PROJECT_FOLDER=AssignmentChecker + +test_if_command_unsuccessful() { + local status=$1 + local title=$2 + local text_if_failed=$3 + if [ "$status" -ne 0 ]; then + echo -e "${title}: ${RED}${text_if_failed}: $status${NC}\n" + exit 1 + fi +} + + +########################################################## +# Function to prompt for input if not provided +prompt_if_empty() { + local var_name=$1 + local prompt_message=$2 + local var_value=${!var_name} + + if [ -z "$var_value" ]; then + read -p "$prompt_message: " var_value + export "$var_name"="$var_value" + fi +} + +# Parse parameters +while [ "$1" != "" ]; do + case $1 in + --dockerhub-user ) shift + DOCKER_REGISTRY_USER=$1 + ;; + --dockerhub-password ) shift + DOCKER_REGISTRY_PASSWORD=$1 + ;; + --dockerhub-repo ) shift + DOCKER_REGISTRY_IMAGE=$1 + ;; + --backend-url ) shift + API_URL=$1 + ;; + * ) echo -e "${RED}Invalid parameter: $1${NC}" + exit 1 + esac + shift +done + +# Prompt for values if not provided +prompt_if_empty "DOCKER_REGISTRY_USER" "Docker Hub user" +prompt_if_empty "DOCKER_REGISTRY_PASSWORD" "Docker Hub password" +prompt_if_empty "DOCKER_REGISTRY_IMAGE" "Docker Hub repository" +prompt_if_empty "API_URL" "Backend url" + + +########################################################## +# Function to check if a command exists +check_dependency() { + local cmd=$1 + if ! command -v $cmd &> /dev/null; then + echo -e "${RED}Error: $cmd is not installed.${NC}" + exit 1 + fi +} + +# Check for dependencies +echo -e "Dependencies: ${YELLOW}Checking...${NC}" +check_dependency jq +check_dependency docker +check_dependency sed +echo -e "Dependencies: ${GREEN}OK${NC}\n" + + +VERSION=$(jq -r .version $PROJECT_FOLDER/package.json) +CONTAINER_IMAGE=$DOCKER_REGISTRY_IMAGE:$VERSION + + +########################################################## +# Login to Docker Hub +echo -e "Docker Hub: ${YELLOW}Login in...${NC}" +echo "$DOCKER_REGISTRY_PASSWORD" | docker login -u "$DOCKER_REGISTRY_USER" --password-stdin "$DOCKER_REGISTRY" > /dev/null +test_if_command_unsuccessful $? "Docker Hub" "FAILED to login in" +echo -e "Docker Hub: ${GREEN}Logged in${NC}\n" + + +########################################################## +echo -e "Project files: ${YELLOW}Configuring...${NC}" + +( + +cd $PROJECT_FOLDER || exit 1 + +sed -i -r "s/\{\{VERSION\}\}/${VERSION}/g" src/app.ts 2> /dev/null +if [ $? -ne 0 ]; then # If on macOS + sed -i -r "s/{{VERSION}}/${VERSION}/g" src/app.ts 2> /dev/null +fi + +sed -i -r "s/(DOTENV_KEY[ ]*:[ ]*[\'\"\`])[^'\"\`]*([\'\"\`])([ ]*\,)?//g" src/init.ts +sed -i -r "s/,[\ \n]*\}/\}/g" src/init.ts + +# Write the content to the file +cat <<EOL > ".env" +##################### App env vars +API_URL=${API_URL} +DOCKERHUB_ASSIGNMENT_CHECKER_REPOSITORY=${DOCKER_REGISTRY_IMAGE} +EOL + +) + +echo -e "Project files: ${GREEN}Configured${NC}\n" + + +########################################################## +echo -e "Docker: ${YELLOW}Building/Uploading to Docker Hub...${NC}" + +docker buildx create --use --platform=linux/amd64 > /dev/null 2> /dev/null +test_if_command_unsuccessful $? "Docker" "FAILED to initialize builder" + +docker buildx build --platform=linux/amd64 --file $DOCKERFILE --push --tag "$CONTAINER_IMAGE" . > /dev/null 2> /dev/null +test_if_command_unsuccessful $? "Docker" "FAILED to build" + +docker buildx imagetools create "$CONTAINER_IMAGE" --tag "$DOCKER_REGISTRY_IMAGE":latest > /dev/null 2> /dev/null +test_if_command_unsuccessful $? "Docker" "FAILED to set latest tag" + +echo -e "Docker: ${GREEN}Uploaded to Docker Hub${NC}\n" \ No newline at end of file