Skip to content

Commit a199a12

Browse files
authored
Merge pull request mgechev#1679 from robstoll/template-locals
refactor template_locals using builder
2 parents d02b3f9 + 55348e7 commit a199a12

File tree

8 files changed

+61
-52
lines changed

8 files changed

+61
-52
lines changed

tools/tasks/seed/build.index.dev.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { join } from 'path';
44
import * as slash from 'slash';
55

66
import Config from '../../config';
7-
import { templateLocals } from '../../utils';
7+
import { TemplateLocalsBuilder } from '../../utils';
88

99
const plugins = <any>gulpLoadPlugins();
1010

@@ -17,7 +17,7 @@ export = () => {
1717
.pipe(inject('shims'))
1818
.pipe(inject('libs'))
1919
.pipe(inject())
20-
.pipe(plugins.template(templateLocals()))
20+
.pipe(plugins.template(new TemplateLocalsBuilder().wihtoutStringifiedEnvConfig().build()))
2121
.pipe(gulp.dest(Config.APP_DEST));
2222
};
2323

tools/tasks/seed/build.index.prod.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { join, sep, normalize } from 'path';
44
import * as slash from 'slash';
55

66
import Config from '../../config';
7-
import { templateLocals } from '../../utils';
7+
import { TemplateLocalsBuilder } from '../../utils';
88

99
const plugins = <any>gulpLoadPlugins();
1010

@@ -16,7 +16,7 @@ export = () => {
1616
return gulp.src(join(Config.APP_SRC, 'index.html'))
1717
.pipe(injectJs())
1818
.pipe(injectCss())
19-
.pipe(plugins.template(templateLocals()))
19+
.pipe(plugins.template(new TemplateLocalsBuilder().wihtoutStringifiedEnvConfig().build()))
2020
.pipe(gulp.dest(Config.APP_DEST));
2121
};
2222

tools/tasks/seed/build.js.dev.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@ import * as util from 'gulp-util';
55
import { join/*, sep, relative*/ } from 'path';
66

77
import Config from '../../config';
8-
import { makeTsProject, templateLocals } from '../../utils';
8+
import { makeTsProject, TemplateLocalsBuilder } from '../../utils';
99
import { TypeScriptTask } from '../typescript_task';
1010

1111
const plugins = <any>gulpLoadPlugins();
1212

13-
const jsonSystemConfig = JSON.stringify(Config.SYSTEM_CONFIG_DEV);
14-
1513
let typedBuildCounter = Config.TYPED_COMPILE_INTERVAL; // Always start with the typed build.
1614

1715
/**
@@ -70,11 +68,7 @@ export =
7068
// sourceRoot: (file: any) =>
7169
// relative(file.path, PROJECT_ROOT + '/' + APP_SRC).replace(sep, '/') + '/' + APP_SRC
7270
// }))
73-
.pipe(plugins.template(Object.assign(
74-
templateLocals(), {
75-
SYSTEM_CONFIG_DEV: jsonSystemConfig
76-
}
77-
)))
71+
.pipe(plugins.template(new TemplateLocalsBuilder().withStringifiedSystemConfigDev().build()))
7872
.pipe(gulp.dest(Config.APP_DEST));
7973
}
8074
};

tools/tasks/seed/build.js.e2e.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ import * as gulpLoadPlugins from 'gulp-load-plugins';
33
import { join } from 'path';
44

55
import Config from '../../config';
6-
import { makeTsProject, templateLocals } from '../../utils';
6+
import { makeTsProject, TemplateLocalsBuilder } from '../../utils';
77

88
const plugins = <any>gulpLoadPlugins();
9-
const jsonSystemConfig = JSON.stringify(Config.SYSTEM_CONFIG_DEV);
109

1110
/**
1211
* Executes the build process, transpiling the TypeScript files (including the e2e-spec files, excluding the spec files)
@@ -25,8 +24,6 @@ export = () => {
2524

2625
return result.js
2726
.pipe(plugins.sourcemaps.write())
28-
.pipe(plugins.template(Object.assign(templateLocals(), {
29-
SYSTEM_CONFIG_DEV: jsonSystemConfig
30-
})))
27+
.pipe(plugins.template(new TemplateLocalsBuilder().withStringifiedSystemConfigDev().build()))
3128
.pipe(gulp.dest(Config.E2E_DEST));
3229
};

tools/tasks/seed/build.js.prod.exp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as gulpLoadPlugins from 'gulp-load-plugins';
44
import { join } from 'path';
55

66
import Config from '../../config';
7-
import { makeTsProject, templateLocals } from '../../utils';
7+
import { makeTsProject, TemplateLocalsBuilder } from '../../utils';
88

99
const plugins = <any>gulpLoadPlugins();
1010

@@ -32,7 +32,7 @@ export = () => {
3232
});
3333

3434
return result.js
35-
.pipe(plugins.template(templateLocals()))
35+
.pipe(plugins.template(new TemplateLocalsBuilder().build()))
3636
.pipe(gulp.dest(Config.TMP_DIR))
3737
.on('error', (e: any) => {
3838
console.log(e);

tools/tasks/seed/build.js.prod.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as gulpLoadPlugins from 'gulp-load-plugins';
33
import { join } from 'path';
44

55
import Config from '../../config';
6-
import { makeTsProject, templateLocals } from '../../utils';
6+
import { makeTsProject, TemplateLocalsBuilder } from '../../utils';
77

88
const plugins = <any>gulpLoadPlugins();
99

@@ -35,7 +35,7 @@ export = () => {
3535

3636

3737
return result.js
38-
.pipe(plugins.template(templateLocals()))
38+
.pipe(plugins.template(new TemplateLocalsBuilder().build()))
3939
.pipe(gulp.dest(Config.TMP_DIR))
4040
.on('error', (e: any) => {
4141
console.log(e);

tools/tasks/seed/build.tools.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@ import * as gulpLoadPlugins from 'gulp-load-plugins';
33
import { join } from 'path';
44

55
import Config from '../../config';
6-
import { makeTsProject, templateLocals } from '../../utils';
6+
import { makeTsProject, TemplateLocalsBuilder } from '../../utils';
77

88
const plugins = <any>gulpLoadPlugins();
99

1010
/**
1111
* Executes the build process, transpiling the TypeScript files within the `tools` directory.
1212
*/
13-
14-
const locals = templateLocals();
15-
1613
export = () => {
1714

1815
let tsProject = makeTsProject();
@@ -28,7 +25,7 @@ export = () => {
2825
.pipe(tsProject());
2926

3027
return result.js
31-
.pipe(plugins.template(locals))
28+
.pipe(plugins.template(new TemplateLocalsBuilder().build()))
3229
.pipe(plugins.sourcemaps.write())
3330
.pipe(gulp.dest('./'));
3431
};

tools/utils/seed/template_locals.ts

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,56 @@ import { join } from 'path';
44

55
import Config from '../../config';
66

7-
const getConfig = (path: string, env: string): any => {
8-
const configPath = join(path, env);
9-
let config: any;
10-
try {
11-
config = JSON.parse(JSON.stringify(require(configPath)));
12-
} catch (e) {
13-
config = null;
14-
util.log(util.colors.red(e.message));
7+
/**
8+
* Builds an object consisting of the base configuration provided by confg/seed.config.ts, the additional
9+
* project specific overrides as defined in config/project.config.ts and including the base environment config as defined in env/base.ts
10+
* and the environment specific overrides (for instance if env=dev then as defined in env/dev.ts).
11+
*/
12+
export class TemplateLocalsBuilder {
13+
private stringifySystemConfigDev = false;
14+
private stringifyEnvConfig = true;
15+
16+
withStringifiedSystemConfigDev() {
17+
this.stringifySystemConfigDev = true;
18+
return this;
19+
}
20+
wihtoutStringifiedEnvConfig() {
21+
this.stringifyEnvConfig = false;
22+
return this;
1523
}
1624

17-
return config;
18-
};
1925

20-
/**
21-
* Returns the project configuration (consisting of the base configuration provided by seed.config.ts and the additional
22-
* project specific overrides as defined in project.config.ts)
23-
*/
24-
export function templateLocals() {
25-
const configEnvName = argv['env-config'] || argv['config-env'] || 'dev';
26-
const configPath = Config.getPluginConfig('environment-config');
27-
const baseConfig = getConfig(configPath, 'base');
28-
const config = getConfig(configPath, configEnvName);
29-
30-
if (!config) {
31-
throw new Error(configEnvName + ' is an invalid configuration name');
26+
build() {
27+
const configEnvName = argv['env-config'] || argv['config-env'] || 'dev';
28+
const configPath = Config.getPluginConfig('environment-config');
29+
const envOnlyConfig = this.getConfig(configPath, configEnvName);
30+
const baseConfig = this.getConfig(configPath, 'base');
31+
32+
if (!envOnlyConfig) {
33+
throw new Error(configEnvName + ' is an invalid configuration name');
34+
}
35+
36+
const envConfig = Object.assign({}, baseConfig, envOnlyConfig);
37+
let locals = Object.assign({},
38+
Config,
39+
{ ENV_CONFIG: this.stringifyEnvConfig ? JSON.stringify(envConfig) : envConfig }
40+
);
41+
if (this.stringifySystemConfigDev) {
42+
Object.assign(locals, {SYSTEM_CONFIG_DEV: JSON.stringify(Config.SYSTEM_CONFIG_DEV)});
43+
}
44+
return locals;
3245
}
3346

34-
return Object.assign(Config, {
35-
ENV_CONFIG: JSON.stringify(Object.assign(baseConfig, config))
36-
});
37-
}
47+
private getConfig(path: string, env: string) {
48+
const configPath = join(path, env);
49+
let config: any;
50+
try {
51+
config = JSON.parse(JSON.stringify(require(configPath)));
52+
} catch (e) {
53+
config = null;
54+
util.log(util.colors.red(e.message));
55+
}
3856

57+
return config;
58+
};
59+
}

0 commit comments

Comments
 (0)