From dc30331e1bf322057f615c0caa55e23a26645689 Mon Sep 17 00:00:00 2001 From: Noel De Martin Date: Thu, 22 Apr 2021 12:52:58 +0200 Subject: [PATCH] MOBILE-3738 env: Add version and lowercase keys --- gulp/task-build-env.js | 43 +++++++++++++++++++++++++++++++---- scripts/env-utils.js | 51 ------------------------------------------ src/core/constants.ts | 5 +++-- 3 files changed, 42 insertions(+), 57 deletions(-) delete mode 100644 scripts/env-utils.js diff --git a/gulp/task-build-env.js b/gulp/task-build-env.js index b96005906..1ccb8dec0 100644 --- a/gulp/task-build-env.js +++ b/gulp/task-build-env.js @@ -12,9 +12,44 @@ // See the License for the specific language governing permissions and // limitations under the License. -const { getConfig, getBuild } = require('../scripts/env-utils'); +const { execSync } = require('child_process'); +const { existsSync, readFileSync, writeFile } = require('fs'); +const { parse: parseJsonc } = require('jsonc-parser'); const { resolve } = require('path'); -const { writeFile } = require('fs'); + +function getConfig(environment) { + const envSuffixesMap = { + testing: ['test', 'testing'], + development: ['dev', 'development'], + production: ['prod', 'production'], + }; + const config = parseJsonc(readFileSync(resolve(__dirname, '../moodle.config.json')).toString()); + const envSuffixes = (envSuffixesMap[environment] || []); + const envConfigPath = envSuffixes.map(suffix => resolve(__dirname, `../moodle.${suffix}.config.json`)).find(existsSync); + + if (envConfigPath) { + const envConfig = parseJsonc(readFileSync(envConfigPath).toString()); + + for (const [key, value] of Object.entries(envConfig)) { + config[key] = value; + } + } + + return config; +} + +function getBuild(environment) { + const { version } = JSON.parse(readFileSync(resolve(__dirname, '../package.json'))); + + return { + version, + isProduction: environment === 'production', + isTesting: environment === 'testing', + isDevelopment: environment === 'development', + lastCommitHash: execSync('git log -1 --pretty=format:"%H"').toString(), + compilationTime: Date.now(), + }; +} /** * Task to build an env file depending on the current environment. @@ -29,8 +64,8 @@ class BuildEnvTask { run(done) { const envFile = resolve(__dirname, '../src/assets/env.json'); const env = { - CONFIG: getConfig(process.env.NODE_ENV || 'development'), - BUILD: getBuild(process.env.NODE_ENV || 'development'), + config: getConfig(process.env.NODE_ENV || 'development'), + build: getBuild(process.env.NODE_ENV || 'development'), }; writeFile(envFile, JSON.stringify(env), done); diff --git a/scripts/env-utils.js b/scripts/env-utils.js deleted file mode 100644 index 39944ac00..000000000 --- a/scripts/env-utils.js +++ /dev/null @@ -1,51 +0,0 @@ -// (C) Copyright 2015 Moodle Pty Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -const { execSync } = require('child_process'); -const { resolve } = require('path'); - -function getConfig(environment) { - const { parse: parseJsonc } = require('jsonc-parser'); - const { readFileSync, existsSync } = require('fs'); - const envSuffixesMap = { - testing: ['test', 'testing'], - development: ['dev', 'development'], - production: ['prod', 'production'], - }; - const config = parseJsonc(readFileSync(resolve(__dirname, '../moodle.config.json')).toString()); - const envSuffixes = (envSuffixesMap[environment] || []); - const envConfigPath = envSuffixes.map(suffix => resolve(__dirname, `../moodle.${suffix}.config.json`)).find(existsSync); - - if (envConfigPath) { - const envConfig = parseJsonc(readFileSync(envConfigPath).toString()); - - for (const [key, value] of Object.entries(envConfig)) { - config[key] = value; - } - } - - return config; -} - -function getBuild(environment) { - return { - isProduction: environment === 'production', - isTesting: environment === 'testing', - isDevelopment: environment === 'development', - lastCommitHash: execSync('git log -1 --pretty=format:"%H"').toString(), - compilationTime: Date.now(), - }; -} - -module.exports = { getConfig, getBuild }; diff --git a/src/core/constants.ts b/src/core/constants.ts index 24da454ae..7e6f45e98 100644 --- a/src/core/constants.ts +++ b/src/core/constants.ts @@ -126,8 +126,8 @@ export class CoreConstants { static readonly MOD_ARCHETYPE_SYSTEM = 3; // System (not user-addable) module archetype. // Config & environment constants. - static readonly CONFIG = envJson.CONFIG as unknown as EnvironmentConfig; // Data parsed from config.json files. - static readonly BUILD = envJson.BUILD as unknown as EnvironmentBuild; // Build info. + static readonly CONFIG = envJson.config as unknown as EnvironmentConfig; // Data parsed from config.json files. + static readonly BUILD = envJson.build as unknown as EnvironmentBuild; // Build info. } @@ -168,6 +168,7 @@ type EnvironmentConfig = { }; type EnvironmentBuild = { + version: string; isProduction: boolean; isTesting: boolean; isDevelopment: boolean;