From 4302eb5ce35ed6cf1dc80dfb92790c3fdd96f963 Mon Sep 17 00:00:00 2001 From: Chen Asraf Date: Tue, 25 Apr 2023 09:46:11 +0300 Subject: [PATCH] fix: export config file type --- docs/configuration_files.md | 4 ++-- examples/test-input/scaffold.config.js | 2 +- src/types.ts | 2 ++ src/utils.ts | 6 +++++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/configuration_files.md b/docs/configuration_files.md index da08e97..65d29b2 100644 --- a/docs/configuration_files.md +++ b/docs/configuration_files.md @@ -48,7 +48,7 @@ not support non-primitives. A `.js` file is just like a `.json` file, make sure to export the final configuration: ```js -/** @type {import('simple-scaffold').ConfigFileOptions} */ +/** @type {import('simple-scaffold').ScaffoldConfigFile} */ module.exports = { component: { templates: ["templates/component"], @@ -70,7 +70,7 @@ If you don't want to supply a template/config name (e.g. `component`), you can o the name, and it will use the configuration named `default`: ```js -/** @type {import('simple-scaffold').ConfigFileOptions} */ +/** @type {import('simple-scaffold').ScaffoldConfigFile} */ module.exports = { default: { // ... diff --git a/examples/test-input/scaffold.config.js b/examples/test-input/scaffold.config.js index e66560f..15647f8 100644 --- a/examples/test-input/scaffold.config.js +++ b/examples/test-input/scaffold.config.js @@ -1,4 +1,4 @@ -/** @type {Record} */ +/** @type {import('simple-scaffold').ScaffoldConfigFile} */ module.exports = { default: { templates: ["examples/test-input/Component"], diff --git a/src/types.ts b/src/types.ts index bcdd512..b989078 100644 --- a/src/types.ts +++ b/src/types.ts @@ -338,3 +338,5 @@ export interface ScaffoldCmdConfig { dryRun: boolean config?: string } + +export type ScaffoldConfigFile = Record diff --git a/src/utils.ts b/src/utils.ts index fc80489..04d058d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -8,6 +8,7 @@ import { LogLevel, ScaffoldCmdConfig, ScaffoldConfig, + ScaffoldConfigFile, } from "./types" import camelCase from "lodash/camelCase" import snakeCase from "lodash/snakeCase" @@ -402,7 +403,10 @@ export function parseConfig(config: ScaffoldCmdConfig & OptionsBase): ScaffoldCo if (config.config) { const [configFile, template = "default"] = config.config.split(":") - const configImport: Record = require(path.resolve(process.cwd(), configFile)) + const configImport: ScaffoldConfigFile = require(path.resolve(process.cwd(), configFile)) + if (!configImport[template]) { + throw new Error(`Template "${template}" not found in ${configFile}`) + } c = { ...config, ...configImport[template],