feat: add --key | -k to config loader

This commit is contained in:
Chen Asraf
2023-04-29 01:44:31 +03:00
parent 2c4eccd800
commit 6c5ba0bc91
5 changed files with 16 additions and 4 deletions

View File

@@ -7,7 +7,7 @@ module.exports = {
},
component: {
templates: ["examples/test-input/Component"],
output: "examples/test-output",
output: "examples/test-output/component",
data: { property: "myProp", value: "10" },
},
}

View File

@@ -20,6 +20,10 @@ Options:
arguments to CLI or using a Node.js script. You may pass a
JSON or JS file, with a relative or absolute path.
--key|-k Key to load inside the config file. This overwrites the
config key provided after the colon in --config (e.g. --config
scaffold.cmd.js:component)
--output|-o Path to output to. If --create-sub-folder is enabled,
the subfolder will be created inside this path.
(default: current dir)

View File

@@ -31,6 +31,12 @@ export async function parseCliArgs(args = process.argv.slice(2)) {
description:
"Filename to load config from instead of passing arguments to CLI or using a Node.js script. You may pass a JSON or JS file, with a relative or absolute path.",
})
.option({
name: "key",
aliases: ["k"],
description:
"Key to load inside the config file. This overwrites the config key provided after the colon in --config (e.g. --config scaffold.cmd.js:component)",
})
.option({
name: "output",
aliases: ["o"],

View File

@@ -337,6 +337,7 @@ export interface ScaffoldCmdConfig {
verbose: LogLevel
dryRun: boolean
config?: string
key?: string
}
export type ScaffoldConfigFile = Record<string, ScaffoldConfig>

View File

@@ -118,8 +118,8 @@ export function log(config: ScaffoldConfig, level: LogLevel, ...obj: any[]): voi
i instanceof Error
? chalkFn(i, JSON.stringify(i, undefined, 1), i.stack)
: typeof i === "object"
? chalkFn(JSON.stringify(i, undefined, 1))
: chalkFn(i),
? chalkFn(JSON.stringify(i, undefined, 1))
: chalkFn(i),
),
)
}
@@ -402,7 +402,8 @@ export function parseConfig(config: ScaffoldCmdConfig & OptionsBase): ScaffoldCo
let c: ScaffoldConfig = config
if (config.config) {
const [configFile, template = "default"] = config.config.split(":")
const [configFile, colonTemplate = "default"] = config.config.split(":")
const template = config.key ?? colonTemplate
const configImport: ScaffoldConfigFile = require(path.resolve(process.cwd(), configFile))
if (!configImport[template]) {
throw new Error(`Template "${template}" not found in ${configFile}`)