diff --git a/CHANGELOG.md b/CHANGELOG.md index 76ec3c14..ac40c832 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## [6.2.10](https://github.com/jondot/hygen/compare/v6.2.9...v6.2.10) (2022-09-06) +## [6.2.11](https://github.com/jondot/hygen/compare/v6.2.10...v6.2.11) (2022-09-07) diff --git a/dist/config-resolver.d.ts.map b/dist/config-resolver.d.ts.map index 330ac23d..eeb20179 100644 --- a/dist/config-resolver.d.ts.map +++ b/dist/config-resolver.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../src/config-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;iCAiBb,YAAY,KAAG,QAAQ,YAAY,CAAC;AAAlE,wBAUC"} \ No newline at end of file +{"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../src/config-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;iCAsBb,YAAY,KAAG,QAAQ,YAAY,CAAC;AAAlE,wBAUC"} \ No newline at end of file diff --git a/dist/config-resolver.js b/dist/config-resolver.js index 7204b1ae..5902256d 100644 --- a/dist/config-resolver.js +++ b/dist/config-resolver.js @@ -39,15 +39,16 @@ const configResolver = new config_1.ConfigResolver('.hygen.js', { load: (f) => __awaiter(void 0, void 0, void 0, function* () { return yield Promise.resolve().then(() => __importStar(require(f))); }), none: (_) => ({}), }); -const resolve = (cwd, templates) => { +const resolve = (cwd, defaultTemplates, templatesOverride) => { return [ - path_1.default.resolve(cwd, templates), + templatesOverride && path_1.default.resolve(cwd, templatesOverride), process.env.HYGEN_TMPLS, path_1.default.resolve(cwd, '_templates'), + path_1.default.resolve(cwd, defaultTemplates), ].find((_) => _ && fs_extra_1.default.existsSync(_)); }; exports.default = (config) => __awaiter(void 0, void 0, void 0, function* () { - const { cwd, templates } = config; - const resolvedTemplates = resolve(cwd, templates); + const { cwd, templates: defaultTemplates, templatesOverride } = config; + const resolvedTemplates = resolve(cwd, defaultTemplates, templatesOverride); return Object.assign(Object.assign(Object.assign({}, config), { templates: resolvedTemplates }), (yield configResolver.resolve(cwd))); }); diff --git a/dist/types.d.ts b/dist/types.d.ts index c2d1f2c3..558a60a2 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -17,6 +17,7 @@ export interface RenderedAction { export interface RunnerConfig { exec?: (sh: string, body: string) => void; templates?: string; + templatesOverride?: string; cwd?: string; logger?: Logger; debug?: boolean; diff --git a/dist/types.d.ts.map b/dist/types.d.ts.map index 418dc86c..1f8ec68e 100644 --- a/dist/types.d.ts.map +++ b/dist/types.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACzB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;CAChC;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,GAAG,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5C;AAED,oBAAY,YAAY,GAAG,GAAG,CAAA;AAE9B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;QACf,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAC3B,CAAA;CACF;AAED,oBAAY,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GAAG,MAAM,CAAA"} \ No newline at end of file +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACzB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;CAChC;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,GAAG,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACpD,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5C;AAED,oBAAY,YAAY,GAAG,GAAG,CAAA;AAE9B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAA;QACf,gBAAgB,EAAE,MAAM,EAAE,CAAA;KAC3B,CAAA;CACF;AAED,oBAAY,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GAAG,MAAM,CAAA"} \ No newline at end of file diff --git a/package.json b/package.json index d4d41025..501482f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hygen", - "version": "6.2.10", + "version": "6.2.11", "description": "The scalable code generator that saves you time.", "keywords": [ "template", diff --git a/src/__tests__/config-resolver.spec.ts b/src/__tests__/config-resolver.spec.ts index 63d02629..d1f6a8a0 100644 --- a/src/__tests__/config-resolver.spec.ts +++ b/src/__tests__/config-resolver.spec.ts @@ -6,22 +6,38 @@ const fixture = (dir) => path.join(__dirname, 'fixtures/templates', dir) const templateParams = ({ cwd, templates, + templatesOverride, }: { cwd: string templates: string + templatesOverride?: string | undefined }) => { return { cwd, templates, - // eslint-disable-next-line + templatesOverride, exec: () => {}, - logger: new Logger(console.log), + logger: new Logger(console.log), // eslint-disable-line no-console debug: false, helpers: {}, createPrompter: () => require('enquirer'), } } describe('resolve', () => { + it('template overrides takes over all', async () => { + expect( + ( + await templateResolver( + templateParams({ + cwd: '/1', + templates: fixture('app'), + templatesOverride: fixture('app-custom/other-templates'), + }), + ) + ).templates, + ).toEqual(fixture('app-custom/other-templates')) + }) + it('templates explicitly given via config, so take it if it exists', async () => { expect( ( diff --git a/src/config-resolver.ts b/src/config-resolver.ts index 79a11e47..14535a74 100644 --- a/src/config-resolver.ts +++ b/src/config-resolver.ts @@ -9,18 +9,23 @@ const configResolver = new ConfigResolver('.hygen.js', { none: (_) => ({}), }) -const resolve = (cwd: string, templates: string | undefined) => { +const resolve = ( + cwd: string, + defaultTemplates: string | undefined, + templatesOverride: string | undefined, +) => { return [ - path.resolve(cwd, templates), + templatesOverride && path.resolve(cwd, templatesOverride), process.env.HYGEN_TMPLS, path.resolve(cwd, '_templates'), + path.resolve(cwd, defaultTemplates), ].find((_) => _ && fs.existsSync(_)) } export default async (config: RunnerConfig): Promise => { - const { cwd, templates } = config + const { cwd, templates: defaultTemplates, templatesOverride } = config - const resolvedTemplates = resolve(cwd, templates) + const resolvedTemplates = resolve(cwd, defaultTemplates, templatesOverride) return { ...config, diff --git a/src/types.ts b/src/types.ts index b5635bf8..fd0d0a92 100644 --- a/src/types.ts +++ b/src/types.ts @@ -17,6 +17,7 @@ export interface RenderedAction { export interface RunnerConfig { exec?: (sh: string, body: string) => void templates?: string + templatesOverride?: string cwd?: string logger?: Logger debug?: boolean