Skip to content

Commit 246ac39

Browse files
Add baseConfig fallback to readConfig and unit tests for configuration merge scenarios
1 parent 0e90864 commit 246ac39

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

dist/index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34560,13 +34560,14 @@ const writeFile = (config, filename, content) => {
3456034560
fs.writeFileSync(filePath(config, filename), content);
3456134561
};
3456234562
exports.writeFile = writeFile;
34563-
const readConfig = (config, userConfigPath) => {
34564-
const content = (0, exports.readFile)(config_1.defaultConfig, userConfigPath);
34563+
const readConfig = (override, userConfigPath, baseConfig = undefined) => {
34564+
const dataConfig = baseConfig ?? config_1.defaultConfig;
34565+
const content = (0, exports.readFile)(dataConfig, userConfigPath);
3456534566
if (content === '') {
34566-
return (0, deepmerge_ts_1.deepmerge)(config_1.defaultConfig, config);
34567+
return (0, deepmerge_ts_1.deepmerge)(dataConfig, override);
3456734568
}
3456834569
const userConfig = yaml.load(content);
34569-
return (0, deepmerge_ts_1.deepmerge)(config_1.defaultConfig, config, userConfig);
34570+
return (0, deepmerge_ts_1.deepmerge)(dataConfig, override, userConfig);
3457034571
};
3457134572
exports.readConfig = readConfig;
3457234573
const exec = async (command) => {

src/utils/filesystem.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,18 @@ export const writeFile = (config: Config, filename: string, content: string): vo
3131
fs.writeFileSync(filePath(config, filename), content)
3232
}
3333

34-
export const readConfig = (config: Config, userConfigPath: string): Config => {
35-
const content = readFile(defaultConfig, userConfigPath)
34+
export const readConfig = (override: Config, userConfigPath: string, baseConfig: Config | undefined = undefined): Config => {
35+
const dataConfig: Config = baseConfig ?? defaultConfig
36+
37+
const content: string = readFile(dataConfig, userConfigPath)
3638

3739
if (content === '') {
38-
return <Config>deepmerge(defaultConfig, config)
40+
return <Config>deepmerge(dataConfig, override)
3941
}
4042

4143
const userConfig = <Config>yaml.load(content)
4244

43-
return <Config>deepmerge(defaultConfig, config, userConfig)
45+
return <Config>deepmerge(dataConfig, override, userConfig)
4446
}
4547

4648
export const exec = async (command: string): Promise<string> => {

tests/unit/filesystem.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { testConfig } from '../helpers/config'
2+
import { Config, defaultConfig } from '../../src/types/config'
3+
import { readConfig } from '../../src/utils/filesystem'
4+
import { CONFIG_PATH } from '../../src/utils/inputs'
5+
6+
test('read config', () => {
7+
const data: Config = readConfig(testConfig, CONFIG_PATH.defaultValue, testConfig)
8+
9+
expect(data.directory).toBe(testConfig.directory)
10+
expect(data.image.parameters.packageName).toBe(testConfig.image.parameters.packageName)
11+
expect(data.image.parameters.title).toBe(testConfig.image.parameters.title)
12+
expect(data.image.parameters.description).toBe(testConfig.image.parameters.description)
13+
14+
expect(data.path.readme).toBe(defaultConfig.path.readme)
15+
expect(data.image.url).toBe(defaultConfig.image.url)
16+
expect(data.image.parameters.pattern).toBe(defaultConfig.image.parameters.pattern)
17+
18+
expect(data.image.parameters.packageManager).toBe('none')
19+
expect(data.image.parameters.icon).toBe('photograph')
20+
})

0 commit comments

Comments
 (0)