From b73e7bb05400bbdbd548ddbaf3fcf2f1b1610419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <git@minelli.swiss> Date: Fri, 11 Oct 2024 23:27:20 +0200 Subject: [PATCH] Config => Adapt to getEnvVar function --- ExerciseChecker/.env.vault | 6 +-- ExerciseChecker/.idea/dataSources | 1 + ExerciseChecker/config.env | 15 +++++++ ExerciseChecker/src/app.ts | 5 +++ ExerciseChecker/src/config/Config.ts | 41 ++++++++++++------- ExerciseChecker/src/init.ts | 4 +- ExerciseChecker/src/managers/GitlabManager.ts | 6 +-- 7 files changed, 56 insertions(+), 22 deletions(-) create mode 120000 ExerciseChecker/.idea/dataSources create mode 100644 ExerciseChecker/config.env diff --git a/ExerciseChecker/.env.vault b/ExerciseChecker/.env.vault index ffac033..a910a9c 100644 --- a/ExerciseChecker/.env.vault +++ b/ExerciseChecker/.env.vault @@ -4,11 +4,11 @@ #/--------------------------------------------------/ # development -DOTENV_VAULT_DEVELOPMENT="ISxiALlYWFJ0K1lyVqzvD8pIH4oSGofqrPkMd5Krwoh8haYUOtNXJ8KjDH3rKjNcvh5qAoBjj9RXkIDCHOeSs0xPBo3kUt9APjlMRYV4/o+KrItn8kmKWaR0oUFYQfsj7a8CJQILekfqpqGA/HCc149PXdywwEzV00uxlzyhvc4ggheigCDpOSM4X7QBHKIGMFSDpO8avaYiTaEWyzpaGbS4a2sfV391thhAUACJnI8lipG/0CsIF65p+fhDGHWHqAtyW+/Kh2mle0MBtbVHMUbN0JSEx+llBpcldjZV216nz+BHHF0YV9rFRHujn6ta4uCCH55SFEoXbiZUa8zkRg/vbDDfBSZxOaY5Ddm6rP5UXqyx4e7FMglBKksefdxqMN5YQTJLcxfc0DL8IS37sSK4JX5p4gHfqIoDdSdPA2YBVG1o9/wv4Yx8NWaJAIFYvjbr/BYZSXyaDcRhIOEZXT2V3z3eVtNjp3MOMKu1osn1FPrG5pbVp9jS8q1SE8SGMxkRwQ5iWpL8EClfI2b1Xt2sokmct1xXJ08ods9YW2eFf7rnG9j9lW8op9fTxMNbcRJ951A+uaPDaOilVOjSXtZBFke/zJFxTAmC9A25c5EXYzStlmp7Ywn8TZldfkyOAtpRbMaqz1K/fnuf1fWnhf91+Dl2eRNsbxkYtc+grc+7LEQEWeZkrx3SpCIqXrvb+vrGn3GbPvtnymxjRzqsszqFeeB0T9kVLjWZC0OCioIW8LKD3tW3oJHJMRp0ySuUuhWj0K3H3W/4x4PETWgrFi/QbjbL6hmM0iqes2AQalh/+eQ3TnONEoFObSQiqkZSMD5Q/TbTbdto2ByqUQ9ZyKg6hvbjjkefLx5gyJoF5WC8Tf3uZhrSHfnp0cECE5ZRJUY3+mu/HSFuDCvpsRO0GukCp8oSOKgKjIn826PhGcrD8F6BvevhT+kE2o1ziGouSN6ymd61BgmlzB+CJ9unv4pkjr3vC7/czvN6GUQUD49Ff0WJ63pMaIjP2PnTtscsOhjML6Ug873PD+8FuECIgBnS+b+n/G9ljFFaY4nrHpWc7Cq/tSf6X+RSn/qgFjXwJPKj0w+8Fg0=" +DOTENV_VAULT_DEVELOPMENT="9Kto4weA8WuuwXasgBAZTF5IiVEFxsl4PZpRqeLgIrfBrlhwMqDfrXq/E006zDg31/GePPa0VxwkWIkSIg4j6UrWzCdJHaYRQsiivjmcBmWk0cetgMb4A+TXfHKvL1KS5esgNuh0Tr3K9LXXFOZkYNDF9e/Mki7Qp1iTIj01q0TulzCwsooC/W+GgN9OL4ckmmnhjoy4bGw+fePln3SJ6vdVD4133GPczN6tmezfRA36f0cq9UUM01xQEe7FYps/GdH6NDc0cgRKXKJTT8ynCJTiBp5j8cMBzufNd6z4azhHo5F5cTmFONhEZ1rC6UXvpm2uRp2oHP7mvGOjwJri6Fd7fLWG3V5fwWKlpsBX/UZJix2VyuS7xOj2vgoKZ4SIZFPXGtkvIicsqLJsplYl80kswNLZxDo8u1gaKhVBalLSZ9AfciKUelg0R8eGMR9MrnXLyJHbrs6Z5vSZIsT6sAMf1oX/mmEWjtQBoCDxtXn3L2mAbKummGZuEJ2EY+nJD18L0zLwlPY1He0BOtAu0gJKOe3l9ohGMD4AoDa3qCOriMUK97Nma1hZoTv5DgPawXTqMJDNFVeB7pI8RH06ISIS2r/RToHmLI9ipgSEdvamzFMtexuWFylim+gzKj04Dboc3EgDYLRp/uMyeMxvF6mSivjKds358hDQLh+ZGQrt4Crt6vI8m8J0pZTMoTdxfWWuk6sp" # production -DOTENV_VAULT_PRODUCTION="+ftDTpuEySxt+n5fooD6Bae5BXB4AZxuF3MtNUr8BFKIk/jT6b3a7Bklv6uVK89wQ80JMbguVCqGBygCqqo75NYfyY9Q2kC8AFKTB29ruG5P4FCe7rssf01qqSLHY1cxIi7MBq/oA/KJhgadJwsk0K+DKpM0qphsPSsyAABmApq6BFQmOdFPlXLsltMIanapBIOkU24Eo8NkIKUp90MHXA10Qike3BQv8IY0LqW5ofMcWUvTr3bvhOQlU5kObzbEHxuH/zDxh8hqJEZshoHXFnFxksoqV/g3e3wpPYGV3VixaQp4bI8HvBJkyp8MbNWrTnMapbN4FuuUc+cuoMB59YwqxlVGc4PCKDymeTJa0yoKPRrYeJQdcqenti71nXtGyYwdMFU/rdPomqHWSMQ/1wHGzHZWCbC1pHfJtRuxHiHNB8Em6Oh7J61swpGdJjGbcA06EC3u/6U3NqdkCXTay89mwUPoD5Y3QxJ6cXyZdIMRmrUQOVJagFfMMlz51dmm2+4nyicY7B/RkRVDoi75F4UkOcY6EgVmHmhQnYJ1dKhMhnRnNJziEJdnzypzX1KQUoZAflMTkHZFJSWDas4nztLbc71M0N0aq2Z1+5DENK3PdozyhzK4/j3bil06cbvKYfa//ta3w4GNbntr2Oa87G1hG6mDSZj26GmXsgKkmHwV78VZAosrWRxIizQdvZLD5XCzU10LQJSHOfVGpL56wf+xzuWZxAXfzcU6cgit60kAgjmoLhTvek/uz6BtkPFamkwdejVbijbHfq54InTPJthfCqlLdmsp1oHYh36MG6VrQK6Tn9UF6Pf9hC+rguvAGb0McSy0oBEGzD24MohjAcizLw==" +DOTENV_VAULT_PRODUCTION="j0IU/R5Y1RPdYBzAiK9YVto9RMM7BxqSMoON2N1Hio+7r8eK3P4pIYB/UX40NS0LLU6gT+ivJteaHmuv2SrmBUmmn3Ro+KtCcGjJ2ei/ElHlulYaRuIkFSoI4pCpJfZE/n/IB64TACo2F4G0sbYYoPCgAzVfVB1xT5fNQL1k060ZCEBddwxfpVoOJVf8qLeANpUhJqcZEW5oS0ZQYyAFGE/e9i4t3J81rYDQAzzTU2oKmPG6eg/5dzx8ZvitQpa93RKLNKaSXxyYl9KQhWFgUIn4MQsVfcSB2dprXw3nc1x/IVFQqciPkJ4rTpON1KtmTA==" # test -DOTENV_VAULT_TEST="6XT3ZXsH9nBjG6qQCS+B3s/yn8J2dQctOUp+3Duu9QA4bK0iimACc57JjtRnUNYrWOHGz6jYbc4ouNC5kzhUF1Dq1dPtG0vnbqqmWe0ShUbQQjpY4V2SqvBOdDD7wfXSr0pRER81ZJkyMZPoYF8qCc9sWngZDy8PGrDs5E04sC4f+tfQO2Yv/i7TUJUxSxzwAZHS4OXZeZ/AwDbrEaEPHfCSyM/QodYMBd3YokqYpNdHhrMPhDzXmL9CBievvk9FqsLmxs1mKk43w3hiGQP7ngmOJZXYp1sQfWN2eJNXXpBDbecHyOfbwaHAul2uHk8nOCtZ1HISLetXv/r+Lb6YUf1lyms4yyK5gNO+e4H0etVkZxThKBs8woMTpICwRI+YxKvbdjwcTuNaRsmtIvARNErILW7fSyamBkxh0augsI9gWCphl0H81wExhO/23aqncLgnlD3I6KpWvKdjl4q/KHNyXvD7kFXv+NQFfv2OuCdqauOvOurQtNKkpIilsFQhF8vIgTzUJadEBodDVjB8OZOsNb6tb3XMeisxNfod5vUsJ0iYrYCxe+Lv+6B9uPpLX8VbLMs7FaTb82ZotuekF9GeeaWE6hDLdoj8swd1vx9QOQq1qcvgCZSvmcwSY8t2dSSSNGwwa6aCJiu+DEgZKUxbgbb2PL2RrE/ov66nYdZq16CfI2V+i+MXwznehlr0p56dIfFr5c9j9c5ZwspvsmU04PqmDyGP6xdCbJZeKYeiuG5gB1uk96LUcgU7HpNwiNd4yvdvyRO3InJm" +DOTENV_VAULT_TEST="a73sDZfILBBZTjedG41eXLeXVNd+kl7RV8KfvCggl9tSNFgzoPV7fkAx5AMkH6eJSU0oM8GNCWWcvUQHIgt65gzcCFsMIW7MZsIwaWuU/ObmRj/LlwqJs6ZyMBvVqcZ3Tu8Ndt6s94Aiwm10/qBMFKqHXGvWmvIjeFVGqSVoReLxfENPJzkRvpvhTjwMZ/txfbdoE3EZhhSvnt/jy8WoZaKaagX9g4oOxmhgp8FzoTXL/9yW5iuUSkxXfaGynKi/rw9xVqq3YnJkyl0GwyM2yUqE6Ty+rvscclejCNy23v7bf7QF7qpNTiFU/+uR5mRoReAvVQ==" diff --git a/ExerciseChecker/.idea/dataSources b/ExerciseChecker/.idea/dataSources new file mode 120000 index 0000000..dad593a --- /dev/null +++ b/ExerciseChecker/.idea/dataSources @@ -0,0 +1 @@ +jetbrainsConfiguration/dataSources/ \ No newline at end of file diff --git a/ExerciseChecker/config.env b/ExerciseChecker/config.env new file mode 100644 index 0000000..ab8d6b7 --- /dev/null +++ b/ExerciseChecker/config.env @@ -0,0 +1,15 @@ +########################### Node env vars +NODE_ENV=production + + +########################### App env vars +APP_NAME='DOJO EXERCISE CHECKER' + +# 10MB +EXERCISE_RESULTS_FOLDER_MAX_SIZE_IN_BYTES=10000000 + +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/ExerciseChecker/src/app.ts b/ExerciseChecker/src/app.ts index 5bacb02..d813a4d 100644 --- a/ExerciseChecker/src/app.ts +++ b/ExerciseChecker/src/app.ts @@ -16,6 +16,7 @@ import ExerciseAssignment from './sharedByClients/models/Exerc import ClientsSharedExerciseHelper from './sharedByClients/helpers/Dojo/ClientsSharedExerciseHelper.js'; import Icon from './shared/types/Icon.js'; import path from 'node:path'; +import SharedAssignmentHelper from './shared/helpers/Dojo/SharedAssignmentHelper'; let exerciseAssignment: ExerciseAssignment | undefined; @@ -168,6 +169,10 @@ async function displayResults() { (async () => { + await Config.init(); + + SharedAssignmentHelper.init(Config.gitlabManager); + HttpManager.registerAxiosInterceptor(); console.log(Styles.APP_NAME(`${ Config.appName } (version {{VERSION}})`)); diff --git a/ExerciseChecker/src/config/Config.ts b/ExerciseChecker/src/config/Config.ts index db117f5..94e4e68 100644 --- a/ExerciseChecker/src/config/Config.ts +++ b/ExerciseChecker/src/config/Config.ts @@ -1,43 +1,54 @@ -import fs from 'fs-extra'; -import path from 'path'; +import fs from 'fs-extra'; +import path from 'path'; +import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig'; +import GitlabManager from '../managers/GitlabManager'; 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 exercise: { + public exercise!: { id: string; secret: string; }; - public readonly dockerhub: { + public dockerhub!: { repositories: { exerciseChecker: string } }; - constructor() { - this.appName = process.env.APP_NAME ?? ''; + 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.exercise = { - id : process.env.DOJO_EXERCISE_ID ?? '', - secret: process.env.DOJO_SECRET ?? '' + id : getEnvVar('DOJO_EXERCISE_ID', ''), + secret: getEnvVar('DOJO_SECRET', '') }; this.dockerhub = { repositories: { - exerciseChecker: process.env.DOCKERHUB_EXERCISE_CHECKER_REPOSITORY ?? '' + exerciseChecker: getEnvVar('DOCKERHUB_EXERCISE_CHECKER_REPOSITORY', '') } }; } diff --git a/ExerciseChecker/src/init.ts b/ExerciseChecker/src/init.ts index cffc433..221146a 100644 --- a/ExerciseChecker/src/init.ts +++ b/ExerciseChecker/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_bebfddf18e3dd9a0bafafe0e383313f75add1da6fbe41ea5fde51f37ef1776aa@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/ExerciseChecker/src/managers/GitlabManager.ts b/ExerciseChecker/src/managers/GitlabManager.ts index 2228dec..142662c 100644 --- a/ExerciseChecker/src/managers/GitlabManager.ts +++ b/ExerciseChecker/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 -- GitLab