diff --git a/package.json b/package.json index 32832460a2..33e337121b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dspace-angular", - "version": "0.0.0", + "version": "7.4.0-next", "scripts": { "ng": "ng", "config:watch": "nodemon", @@ -10,7 +10,7 @@ "start:prod": "yarn run build:prod && cross-env NODE_ENV=production yarn run serve:ssr", "start:mirador:prod": "yarn run build:mirador && yarn run start:prod", "preserve": "yarn base-href", - "serve": "ng serve --configuration development", + "serve": "ts-node --project ./tsconfig.ts-node.json scripts/serve.ts", "serve:ssr": "node dist/server/main", "analyze": "webpack-bundle-analyzer dist/browser/stats.json", "build": "ng build --configuration development", diff --git a/scripts/serve.ts b/scripts/serve.ts index 09e517c3d4..99bfc822d4 100644 --- a/scripts/serve.ts +++ b/scripts/serve.ts @@ -10,6 +10,6 @@ const appConfig: AppConfig = buildAppConfig(); * Any CLI arguments given to this script are patched through to `ng serve` as well. */ child.spawn( - `ng serve --host ${appConfig.ui.host} --port ${appConfig.ui.port} --serve-path ${appConfig.ui.nameSpace} --ssl ${appConfig.ui.ssl} ${process.argv.slice(2).join(' ')}`, + `ng serve --host ${appConfig.ui.host} --port ${appConfig.ui.port} --serve-path ${appConfig.ui.nameSpace} --ssl ${appConfig.ui.ssl} ${process.argv.slice(2).join(' ')} --configuration development`, { stdio: 'inherit', shell: true } ); diff --git a/server.ts b/server.ts index 9fe03fe5b5..c9cdf3d76a 100644 --- a/server.ts +++ b/server.ts @@ -48,6 +48,7 @@ import { ServerAppModule } from './src/main.server'; import { buildAppConfig } from './src/config/config.server'; import { APP_CONFIG, AppConfig } from './src/config/app-config.interface'; import { extendEnvironmentWithAppConfig } from './src/config/config.util'; +import { logStartupMessage } from './startup-message'; /* * Set path for the browser application's dist folder @@ -281,6 +282,8 @@ function run() { } function start() { + logStartupMessage(environment); + /* * If SSL is enabled * - Read credentials from configuration files diff --git a/src/app/init.service.ts b/src/app/init.service.ts index 69ed2ad555..a0cbb06b66 100644 --- a/src/app/init.service.ts +++ b/src/app/init.service.ts @@ -143,10 +143,6 @@ export abstract class InitService { if (environment.debug) { console.info(environment); } - - const env: string = environment.production ? 'Production' : 'Development'; - const color: string = environment.production ? 'red' : 'green'; - console.info(`Environment: %c${env}`, `color: ${color}; font-weight: bold;`); } /** diff --git a/src/config/config.server.ts b/src/config/config.server.ts index 69da1a02b2..278cf4f1d5 100644 --- a/src/config/config.server.ts +++ b/src/config/config.server.ts @@ -54,14 +54,28 @@ const getEnvironment = (): Environment => { return environment; }; -const getLocalConfigPath = (env: Environment) => { - // default to config/config.yml - let localConfigPath = join(CONFIG_PATH, 'config.yml'); +/** + * Get the path of the default config file. + */ +const getDefaultConfigPath = () => { - if (!fs.existsSync(localConfigPath)) { - localConfigPath = join(CONFIG_PATH, 'config.yaml'); + // default to config/config.yml + let defaultConfigPath = join(CONFIG_PATH, 'config.yml'); + + if (!fs.existsSync(defaultConfigPath)) { + defaultConfigPath = join(CONFIG_PATH, 'config.yaml'); } + return defaultConfigPath; +}; + +/** + * Get the path of an environment-specific config file. + * + * @param env the environment to get the config file for + */ +const getEnvConfigFilePath = (env: Environment) => { + // determine app config filename variations let envVariations; switch (env) { @@ -76,22 +90,21 @@ const getLocalConfigPath = (env: Environment) => { envVariations = ['dev', 'development']; } + let envLocalConfigPath; + // check if any environment variations of app config exist for (const envVariation of envVariations) { - let envLocalConfigPath = join(CONFIG_PATH, `config.${envVariation}.yml`); + envLocalConfigPath = join(CONFIG_PATH, `config.${envVariation}.yml`); + if (fs.existsSync(envLocalConfigPath)) { + break; + } + envLocalConfigPath = join(CONFIG_PATH, `config.${envVariation}.yaml`); if (fs.existsSync(envLocalConfigPath)) { - localConfigPath = envLocalConfigPath; break; - } else { - envLocalConfigPath = join(CONFIG_PATH, `config.${envVariation}.yaml`); - if (fs.existsSync(envLocalConfigPath)) { - localConfigPath = envLocalConfigPath; - break; - } } } - return localConfigPath; + return envLocalConfigPath; }; const overrideWithConfig = (config: Config, pathToConfig: string) => { @@ -174,12 +187,20 @@ export const buildAppConfig = (destConfigPath?: string): AppConfig => { console.log(`Building ${colors.green.bold(`development`)} app config`); } - // override with dist config - const localConfigPath = getLocalConfigPath(env); + // override with default config + const defaultConfigPath = getDefaultConfigPath(); + if (fs.existsSync(defaultConfigPath)) { + overrideWithConfig(appConfig, defaultConfigPath); + } else { + console.warn(`Unable to find default config file at ${defaultConfigPath}`); + } + + // override with env config + const localConfigPath = getEnvConfigFilePath(env); if (fs.existsSync(localConfigPath)) { overrideWithConfig(appConfig, localConfigPath); } else { - console.warn(`Unable to find dist config file at ${localConfigPath}`); + console.warn(`Unable to find env config file at ${localConfigPath}`); } // override with external config if specified by environment variable `DSPACE_APP_CONFIG_PATH` diff --git a/src/modules/app/browser-init.service.ts b/src/modules/app/browser-init.service.ts index 05c591b0c6..1135de5e93 100644 --- a/src/modules/app/browser-init.service.ts +++ b/src/modules/app/browser-init.service.ts @@ -28,6 +28,7 @@ import { StoreAction, StoreActionTypes } from '../../app/store.actions'; import { coreSelector } from '../../app/core/core.selectors'; import { find, map } from 'rxjs/operators'; import { isNotEmpty } from '../../app/shared/empty.util'; +import { logStartupMessage } from '../../../startup-message'; /** * Performs client-side initialization. @@ -79,6 +80,7 @@ export class BrowserInitService extends InitService { this.initCorrelationId(); this.checkEnvironment(); + logStartupMessage(environment); this.initI18n(); this.initAngulartics(); diff --git a/startup-message.ts b/startup-message.ts new file mode 100644 index 0000000000..d87a239ec8 --- /dev/null +++ b/startup-message.ts @@ -0,0 +1,19 @@ +import PACKAGE_JSON from './package.json'; +import { BuildConfig } from './src/config/build-config.interface'; + +/** + * Log a message at the start of the application containing the version number and the environment. + * + * @param environment the environment configuration + */ +export const logStartupMessage = (environment: Partial) => { + const env: string = environment.production ? 'Production' : 'Development'; + const color: string = environment.production ? 'red' : 'green'; + + console.info(''); + console.info(`%cdspace-angular`, `font-weight: bold;`); + console.info(`Version: %c${PACKAGE_JSON.version}`, `font-weight: bold;`); + console.info(`Environment: %c${env}`, `color: ${color}; font-weight: bold;`); + console.info(''); + +}