diff --git a/ExerciseChecker/.env.vault b/ExerciseChecker/.env.vault index 2303c6a03102e88789ca87a6ac638fde4d4138f9..586a52eebe627a6a2bfbeb3343ccd928cba1599b 100644 --- a/ExerciseChecker/.env.vault +++ b/ExerciseChecker/.env.vault @@ -4,8 +4,8 @@ #/--------------------------------------------------/ # development -DOTENV_VAULT_DEVELOPMENT="1IL1le/MSmLP5ikyD+SN+O1/lxN+d3xvFqrAKxAd9Kil5QJwZ6QBHB2PshSK4velr89Es2J05xYjjrxm5bCavNiHK6ZEPn0lgvQBRkEuZB+xm728lYE684Uij98v10K5ZyOGW6jlXzbfytnexit4QZOFILTpJEZzyXZYP+PjW1fa5ecs++Pml76UTsIuyw7lFvJ6x0oeMljbaUIZGys5MLQPz8NepwmZNKu8qG5ld6jZJ47rvSvjxJQkUPwmHkxPcuxztetdkIBOYdXvbhR3FKpxQlAosdq1YaznQooZdj1PCSBmLE/217M+l4yCUPfj3fVMWIzlcLuDdwjfq5G3E82LIBi5L7zPFaQZE4DkaKZRO5utpF6DliGSueRV/+Rf/sJGjCbAyxvSaofkn3EZwbSMqfDW5kDpQzFfdPOoCUNYu3tTqrTNeTY7lgurIjidaqHkZQS1rau8cU+6J3C0GB34amREQx5crrf/obeEfkBtpZKTZG7+a5u5ZGcp+roiIqAFhOMtbh/aqpqmLcGdTtRRmHoOCV+YLb6q1YZiJNA/JIqGTrQncj4KeRIsgnhENFQa0MQ8U7ROrKICalSY0Vg4B/EMALFadi2oXA57+FVWO1DnjErYKFrmfVBW2+obYovrB95oE4QhTHTu/HTW1r7YNZUAAtLGMguqfbAjrhL7jVbduKeo7BRGJmxHsv4UVMeUoiRgKpd5Ig/t9y7+feSaKC1KeDeBgBD6IpfM9hl9LcyI/SEKML0O5oZORXvc8L7vBBB+ylFfS/LfehCzdLbcqSVog1YgVQAPg7wD+8m/91BgEqy7aCdDT4K+U9kDx8hECDTohcooBH3NVz2F5QT9mxOvlZ+ImG3VANcH3sm4CcGvHHPapervtvNjBApr6F4xW7KHiCUr65X5yQ1ilHg7Bkf2+MthCaQHG0Jo5Fwb3nk3Sp0SUmB/YZn/0ruOQ8cKTHkSAb8y+MXCFpC4L/0gBYsEPWgvAi5S2FvOeVZiIYMvxHYxulqRrErl2euLVrGCHoFdxEQdJ92AlyEYztYQG/dR2oRRYlhw/tRCPpZZzfGvAaI7FgmKIppkzt8=" +DOTENV_VAULT_DEVELOPMENT="Au1M8CnhJUGXCLf5E8mKtiOMbDsfBjJv0XOQqHUHooo2R+EaGhcAtrQb6SbgC8DNZE0yTbQob7QpapvLENGyXlrfrM6MPHAeVMJbV9w0EmAvvaKPK3Ri5EOENVPT+IF7L34T+5Tzd5VNMSaVntIYKt7rjyOVMbmr72mtUnyw1ZFCiKPSRUiYlEIfuxgvUZ2hB0GVh0XnUv+yXUAO8GLbbg45xGWYQUu+7SBEmnC9xOVuW0jTgluroTqu8GqWwK3Kiq87h13WPCVewVxWPtPIphdOxCxF8ockXvJ4oDgnMjiCKOYihxj1e25r83kLPpwCguOQr4/PFFKF20AfdNSa9cAZjMrWe5BIgpDCGOC9/q08OzGQfwR+KOQF1+aHWhjwvlA1+M4wuCH5ZSN8jOSsaPrMcEMeF/nHpU/3sGnGxcMo2zAjcPXwgbFqFEuAZyNz1rOJPMyv335p4ZXkpBsnkUy8BQ3sZDnybx+dZETvOYH2/17aNGGGN+eS9A+VWGegqeD1JRYdP6d+hWDWuEgSWDpmcHF4PW9R8xQxZZavhj+nposY+Evcmp1/qnYeERbavVyXh2L49fJfZzy/0rZzcgrMvrN3yOaKtjf5kmvZmHUNi4Y9WcebZXokcAHYrPPvWNq5yXtZVvVAxvLpLTi1DMcT7FqnAVYaqg4DxwIZ6Ny2kEssloi/bvNp0CidCcCovMh4HTjrRWp7IUv4YA9FekCQuf5dk+MZYf9n57Q6AOsI0YllzG5S/FfklhPkhOP7Twqy0LHcBHMjW79gpC1q2ZxM+iHIJVsZZ0LMduNvjLvNWe1c77lIH4eKDsD5Ocz+vECDcl7FFhSYEDHmN2rAJzL72+2IehPGVuHo/AMpyk9VCFk4viVgZNv+Bj15JC6/ioMPTZUCAQ1TD37am70gwVHCfLqfPK+W81MbXOCtuX8U/OStjSOGs9Y+0MF/My2v3XhZLer3Z4OTHAxFBd0B4tT4CxixYuNuD1QBxB4FjTUrbKbsZskMFd+75T9aGCaLsDfWzKrgWgElp6IrXLg4uvg16rIWMOL13YE+3NYYucEE1ZdPW+ZbAr1h8SCdZTXHEdgRQACEyqCiyJs2Xpy01hU59hMto+M8sA935xhAePOPDZ7jD4BqWOtQFP2+evXmsvvlf0lU7ANUT7QIYJKKwGA4rSpP7A==" # production -DOTENV_VAULT_PRODUCTION="AkhlY5isBoAxVj632ISmuP6gPrB1u1DfsPUIw64HlEl1pr7xSsdQlyemBukr0XlKoE+IKBFy6hfVgqWvxe48BlCzMx41xVjfp5NoZGTXsJGgqlPa3NJDdWTTgSn68Q11TVagGOCQjQnRVjAV6NQFdwP1aKJ8/lg77cPlKrlWRphzAG0hHWWFecxOVs6DoMZPtHW6mabBiyC8MlBRhd4vqV84H1nbYlkSPzEcd9VRhZGLoA3uTHXKnXDoMeNKSK5Z9PxL/PmM/3duXKi/3NNvksLdAJlKGF9Q1sLQpWVDKtjoaKf5GumanxBXMdp5Gt5s0tf1TNAKkj9l6+HYN8jBkhVEh/OiHzMMhvMDDo+ZwhL6U8z0aTK+W8Y8KmGQ0BYp0uEtFSaxa95zJ18YBbs8FPLlUAvBlOlt5F7Z8tSkaSCcC3PNMRsnnzbwJquIh5AyS5scDqsvkdKmfSWb+LLdaY6TLa4conh5iFKkxe5GQ9JmaTGPBHzvhxJRJkUTZcpM5yPCizjFsa51E+FQqk+heI1Y0oAlL69xw+DOyNhAYU/rZJDkGyi7X9JZjgvpNROi1M1h72fO5/uz47mvlxzzg45w4nwk3k3R7azXzzdWsznPcEXu74LAfXC4+SRZuLEOtBbzHRLgM2WIo+CTOuqZGMPSqWhUWFmeCUL+9oON3K93IuvBB+ImtMKxqZIUevzlvv+yaKHod9PjOnpQ1FjKmgM9HZPsrcF/Y6Em98ckVaBpNJztfdVjsihVZGrpr2xlO9RmaQ==" +DOTENV_VAULT_PRODUCTION="UYGmmTiLq+yxMucNPc82nYxyvSfH9PMEVF91hN7qcR4KqaJtKIiiUXOwln+sEYf67Ga/8qSdLg67r5oka07sG0DWVMuWZjUq3RCPscFDZkILxcfg2C29o4gKcg6Kp4xDsFHA25I1Gu/6TZML6V5kk59a31TUDY3mA4AjvFANVh7bm90hWkKpa57YcIO6guH2RsDeuAYQEQt0m3o4zT1/QA7+f844Z7szCNa0vQ/U3h7mL16nqLDYzokWE6euIU9BYFMNL+H54odF8wGOnESMq032FYRbsN4nfeA2CvNclkIQnz3zn1zVGTQLNE/kDqTJOvrDA6tc6InM5ow1EoD6/8Do/Z/knB6Y0fo9BDDrsD0NTWFT0u/ukoURG8Eja9kw011S+bQiT3K3L+lpVL6Sy2Z4vK7qicg90BoejAdb9xvQ80zqqe7+jolczJeD+QeGSg1u2l7G0RAbuMiNKS4Rt3imTm3jYcYsE+YEUcDIciHuTtb9a4agZve4JsaQgu5+miLZWsNkPlCcD24L2d8M8rrxphjhsnFgRVqKXX77ec8d/SNt6NpS3DHgmEn3YQBdu1lkijLCVFXLJf0PlFSIRhaoSh/UBr+zcrfWURsZeFpOg5/Ssah2aocZzHJaddHrcWO6iXCEozsiLWeAZf0sxh9qDkcopaQQv7BeTdHMyGBwyDqWv1lbmNzOfXXRQojJRrGt+0QU4oGVGqLXHxoW9ruhmHTry+Vnr5jOjUchaIhrLOEg8GFPJ5PLSugoNpZ24IRrjA==" diff --git a/ExerciseChecker/.idea/jetbrainsConfiguration b/ExerciseChecker/.idea/jetbrainsConfiguration index 4d703a2dd39ec0c2b71bbbbda8900588c4e360bd..ffc5d65f9f0f0e825688177425e526131aa84631 160000 --- a/ExerciseChecker/.idea/jetbrainsConfiguration +++ b/ExerciseChecker/.idea/jetbrainsConfiguration @@ -1 +1 @@ -Subproject commit 4d703a2dd39ec0c2b71bbbbda8900588c4e360bd +Subproject commit ffc5d65f9f0f0e825688177425e526131aa84631 diff --git a/ExerciseChecker/src/app.ts b/ExerciseChecker/src/app.ts index 63eef070ae3635dcf2c0245dd9e39337469df870..79e07d2e8e23ef4900d9a228f8a5e31767d8d66c 100644 --- a/ExerciseChecker/src/app.ts +++ b/ExerciseChecker/src/app.ts @@ -1,21 +1,24 @@ // Read from the .env file -// ATTENTION : This lines MUST be the first of this file (except for the path import) -const path = require('node:path'); -const myEnv = require('dotenv').config({ - path : path.join(__dirname, '../.env'), - DOTENV_KEY: 'dotenv://:key_bebfddf18e3dd9a0bafafe0e383313f75add1da6fbe41ea5fde51f37ef1776aa@dotenv.local/vault/.env.vault?environment=development' - }); -require('dotenv-expand').expand(myEnv); +// ATTENTION : These lines MUST be the first of this file (except for the path import) +import path = require('node:path'); +import myEnv = require('dotenv'); +import dotenvExpand = require('dotenv-expand'); + + +dotenvExpand.expand(myEnv.config({ + path : path.join(__dirname, '../.env'), + DOTENV_KEY: 'dotenv://:key_bebfddf18e3dd9a0bafafe0e383313f75add1da6fbe41ea5fde51f37ef1776aa@dotenv.local/vault/.env.vault?environment=development' + })); + require('./shared/helpers/TypeScriptExtensions'); // ATTENTION : This line MUST be the second of this file + import ClientsSharedConfig from './sharedByClients/config/ClientsSharedConfig'; 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 ExerciseCheckerError from './shared/types/Dojo/ExerciseCheckerError'; -import { exec } from 'child_process'; -import util from 'util'; import fs from 'fs-extra'; import HttpManager from './managers/HttpManager'; import DojoBackendManager from './managers/DojoBackendManager'; @@ -28,8 +31,6 @@ import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo (async () => { - const execAsync = util.promisify(exec); - HttpManager.registerAxiosInterceptor(); console.log(Styles.APP_NAME(`${ Config.appName } (version {{VERSION}})`)); @@ -94,13 +95,13 @@ import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo } }); - exerciseDockerCompose.events.on('finished', (success: boolean, exitCode: number) => { + exerciseDockerCompose.events.on('finished', (success: boolean) => { success ? resolve() : reject(); }); exerciseDockerCompose.run(); }); - } catch ( error ) { } + } catch ( error ) { /* empty */ } fs.rmSync(composeOverridePath, { force: true }); fs.writeFileSync(path.join(Config.folders.resultsDojo, 'dockerComposeLogs.txt'), exerciseDockerCompose.allLogs); @@ -138,7 +139,7 @@ import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo exerciseResultsValidation.run(); }); - } catch ( error ) { } + } catch ( error ) { /* empty */ } } @@ -146,9 +147,9 @@ import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo { try { console.log(Styles.INFO(`${ Icon.INFO } Uploading results to the dojo server`)); - const commit: any = {}; + const commit: Record<string, string> = {}; Toolbox.getKeysWithPrefix(process.env, 'CI_COMMIT_').forEach(key => { - commit[Toolbox.snakeToCamel(key.replace('CI_COMMIT_', ''))] = process.env[key]; + commit[Toolbox.snakeToCamel(key.replace('CI_COMMIT_', ''))] = process.env[key] as string; }); const files = await RecursiveFilesStats.explore(Config.folders.resultsVolume, { diff --git a/ExerciseChecker/src/managers/DojoBackendManager.ts b/ExerciseChecker/src/managers/DojoBackendManager.ts index 0799a3c8fe09cc874939d93818f345fe3779e1fb..102069ead041b6877029dad772edb7fb81a45211 100644 --- a/ExerciseChecker/src/managers/DojoBackendManager.ts +++ b/ExerciseChecker/src/managers/DojoBackendManager.ts @@ -5,6 +5,7 @@ import ExerciseAssignment from '../sharedByClients/models/ExerciseAssignment'; import Config from '../config/Config'; import ExerciseResultsFile from '../shared/types/Dojo/ExerciseResultsFile'; import ApiRoute from '../sharedByClients/types/Dojo/ApiRoute'; +import { IFileDirStat } from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats'; class DojoBackendManager { @@ -20,18 +21,14 @@ class DojoBackendManager { } } - public async sendResults(exitCode: number, commit: any, results: ExerciseResultsFile, files: any, archiveBase64: string): Promise<void> { - try { - await axios.post(this.getApiUrl(ApiRoute.EXERCISE_RESULTS).replace('{{id}}', Config.exercise.id), { - exitCode : exitCode, - commit : JSON.stringify(commit), - results : JSON.stringify(results), - files : JSON.stringify(files), - archiveBase64: archiveBase64 - }); - } catch ( error ) { - throw error; - } + public async sendResults(exitCode: number, commit: Record<string, string>, results: ExerciseResultsFile, files: Array<IFileDirStat>, archiveBase64: string): Promise<void> { + await axios.post(this.getApiUrl(ApiRoute.EXERCISE_RESULTS).replace('{{id}}', Config.exercise.id), { + exitCode : exitCode, + commit : JSON.stringify(commit), + results : JSON.stringify(results), + files : JSON.stringify(files), + archiveBase64: archiveBase64 + }); } } diff --git a/ExerciseChecker/src/managers/HttpManager.ts b/ExerciseChecker/src/managers/HttpManager.ts index 54d6990ad2c31f3a0307a56b13f305b0285ee0db..342f08b2ba5ee0cea251fbf926d2dc54d4e36958 100644 --- a/ExerciseChecker/src/managers/HttpManager.ts +++ b/ExerciseChecker/src/managers/HttpManager.ts @@ -59,7 +59,7 @@ class HttpManager { }, (error) => { if ( error.response ) { if ( error.response.status === StatusCodes.METHOD_NOT_ALLOWED && error.response.data ) { - const data: DojoBackendResponse<{}> = error.response.data; + const data: DojoBackendResponse<void> = error.response.data; switch ( data.code ) { case DojoStatusCode.CLIENT_NOT_SUPPORTED: diff --git a/ExerciseChecker/src/shared b/ExerciseChecker/src/shared index 4a5eb68209ae9204b6d4cc8020bd62cf6a5be989..101cc26895eb0b5fe97e03bb96039e0cddd94391 160000 --- a/ExerciseChecker/src/shared +++ b/ExerciseChecker/src/shared @@ -1 +1 @@ -Subproject commit 4a5eb68209ae9204b6d4cc8020bd62cf6a5be989 +Subproject commit 101cc26895eb0b5fe97e03bb96039e0cddd94391