From dfb196d6a3c53d9c1942e37e7837562f368707a4 Mon Sep 17 00:00:00 2001 From: daboucha Date: Tue, 26 Nov 2024 10:36:34 +0100 Subject: [PATCH 1/9] feat(yaml): add yaml as valid file format --- lib/settings.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/settings.js b/lib/settings.js index 961aa4c6..715220f1 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -314,7 +314,7 @@ ${this.results.reduce((x, y) => { // Overlay repo config // RepoConfigs should be preloaded but checking anyway - const overrideRepoConfig = this.repoConfigs[`${repo.repo}.yml`]?.repository + const overrideRepoConfig = this.repoConfigs[`${repo.repo}.yml`]?.repository || this.repoConfigs[`${repo.repo}.yaml`]?.repository if (overrideRepoConfig) { repoConfig = this.mergeDeep.mergeDeep({}, repoConfig, overrideRepoConfig) } @@ -384,7 +384,7 @@ ${this.results.reduce((x, y) => { const repoName = repo.repo const subOrgOverrideConfig = this.getSubOrgConfig(repoName) this.log.debug(`suborg config for ${repoName} is ${JSON.stringify(subOrgOverrideConfig)}`) - const repoOverrideConfig = this.repoConfigs[`${repoName}.yml`] || {} + const repoOverrideConfig = this.repoConfigs[`${repoName}.yml`] || this.repoConfigs[`${repoName}.yaml`] || {} const overrideConfig = this.mergeDeep.mergeDeep({}, this.returnRepoSpecificConfigs(this.config), subOrgOverrideConfig, repoOverrideConfig) this.log.debug(`consolidated config is ${JSON.stringify(overrideConfig)}`) @@ -642,7 +642,7 @@ ${this.results.reduce((x, y) => { // If repo is passed get only its config // else load all the config if (repo) { - if (override.name === `${repo.repo}.yml`) { + if (override.name === `${repo.repo}.yml` || override.name === `${repo.repo}.yaml`) { const data = await this.loadYaml(override.path) this.log.debug(`data = ${JSON.stringify(data)}`) repoConfigs[override.name] = data From 77bd720fae00f2feabbc00a5b4b2cd7921c9c503 Mon Sep 17 00:00:00 2001 From: daboucha Date: Tue, 26 Nov 2024 10:38:57 +0100 Subject: [PATCH 2/9] fix(syntax) --- lib/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/settings.js b/lib/settings.js index 715220f1..726b7fe1 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -642,7 +642,7 @@ ${this.results.reduce((x, y) => { // If repo is passed get only its config // else load all the config if (repo) { - if (override.name === `${repo.repo}.yml` || override.name === `${repo.repo}.yaml`) { + if (override.name === `${repo.repo}.yml` || override.name === `${repo.repo}.yaml`) { const data = await this.loadYaml(override.path) this.log.debug(`data = ${JSON.stringify(data)}`) repoConfigs[override.name] = data From 64810714a5d3b1de0e558e9c873cf51377f10cf2 Mon Sep 17 00:00:00 2001 From: daboucha Date: Fri, 20 Dec 2024 15:30:38 +0100 Subject: [PATCH 3/9] test(settings): add tests to verify both yaml and yml extensions work --- lib/settings.js | 10 ++++++--- test/unit/lib/settings.test.js | 40 ++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/lib/settings.js b/lib/settings.js index c98f64db..c6d2a47d 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -315,7 +315,7 @@ ${this.results.reduce((x, y) => { // Overlay repo config // RepoConfigs should be preloaded but checking anyway - const overrideRepoConfig = this.repoConfigs[`${repo.repo}.yml`]?.repository || this.repoConfigs[`${repo.repo}.yaml`]?.repository + const overrideRepoConfig = this.getRepoOverrideConfig(repoName) if (overrideRepoConfig) { repoConfig = this.mergeDeep.mergeDeep({}, repoConfig, overrideRepoConfig) } @@ -384,8 +384,8 @@ ${this.results.reduce((x, y) => { childPluginsList (repo) { const repoName = repo.repo const subOrgOverrideConfig = this.getSubOrgConfig(repoName) - this.log.debug(`suborg config for ${repoName} is ${JSON.stringify(subOrgOverrideConfig)}`) - const repoOverrideConfig = this.repoConfigs[`${repoName}.yml`] || this.repoConfigs[`${repoName}.yaml`] || {} + this.log.debug(`suborg config for ${repoName} is ${JSON.stringify(subOrgOverrideConfig)}`) + const repoOverrideConfig = this.getRepoOverrideConfig(repoName) const overrideConfig = this.mergeDeep.mergeDeep({}, this.returnRepoSpecificConfigs(this.config), subOrgOverrideConfig, repoOverrideConfig) this.log.debug(`consolidated config is ${JSON.stringify(overrideConfig)}`) @@ -413,6 +413,10 @@ ${this.results.reduce((x, y) => { return childPlugins } + getRepoOverrideConfig(repoName) { + return this.repoConfigs[`${repoName}.yml`] || this.repoConfigs[`${repoName}.yaml`] || {} + } + validate (section, baseConfig, overrideConfig) { const configValidator = this.configvalidators[section] if (configValidator) { diff --git a/test/unit/lib/settings.test.js b/test/unit/lib/settings.test.js index c289f563..5b69437d 100644 --- a/test/unit/lib/settings.test.js +++ b/test/unit/lib/settings.test.js @@ -140,4 +140,44 @@ describe('Settings Tests', () => { }) }) }) // restrictedRepos + + describe('getRepoOverrideConfig', () => { + describe('repository defined in a file using the .yaml extension', () => { + beforeEach(() => { + stubConfig = { + repoConfigs: { + 'repository.yml': { repository: { name: 'test-repository-yml', config: 'config1' } } + } + } + }) + + it('Picks up a repository defined in file using the .yaml extension', () => { + const settings = createSettings(stubConfig) + settings.getRepoConfigs(stubConfig.repoConfigs['repository.yaml'].repository.name) + + expect(typeof repoConfig).toBe('object') + expect(repoConfig).not.toBeNull() + expect(Object.keys(repoConfig).length).toBeGreaterThan(0) + }) + }) + + describe('repository defined in a file using the .yml extension', () => { + beforeEach(() => { + stubConfig = { + repoConfigs: { + 'repository.yml': { repository: { name: 'test-repository-yml', config: 'config1' } } + } + } + }) + + it('Picks up a repository defined in file using the .yml extension', () => { + const settings = createSettings(stubConfig) + const repoConfig = settings.getRepoConfigs(stubConfig.repoConfigs['repository.yml'].repository.name) + + expect(typeof repoConfig).toBe('object') + expect(repoConfig).not.toBeNull() + expect(Object.keys(repoConfig).length).toBeGreaterThan(0) + }) + }) + }) // repoOverrideConfig }) // Settings Tests From 635d9f847072fe9b1909812cc5311b9222430f7f Mon Sep 17 00:00:00 2001 From: daboucha Date: Fri, 20 Dec 2024 16:05:47 +0100 Subject: [PATCH 4/9] fix(function): test new function --- test/unit/lib/settings.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/lib/settings.test.js b/test/unit/lib/settings.test.js index 5b69437d..4d5d34c5 100644 --- a/test/unit/lib/settings.test.js +++ b/test/unit/lib/settings.test.js @@ -153,7 +153,7 @@ describe('Settings Tests', () => { it('Picks up a repository defined in file using the .yaml extension', () => { const settings = createSettings(stubConfig) - settings.getRepoConfigs(stubConfig.repoConfigs['repository.yaml'].repository.name) + settings.getRepoOverrideConfig(stubConfig.repoConfigs['repository.yaml'].repository.name) expect(typeof repoConfig).toBe('object') expect(repoConfig).not.toBeNull() @@ -172,7 +172,7 @@ describe('Settings Tests', () => { it('Picks up a repository defined in file using the .yml extension', () => { const settings = createSettings(stubConfig) - const repoConfig = settings.getRepoConfigs(stubConfig.repoConfigs['repository.yml'].repository.name) + const repoConfig = settings.getRepoOverrideConfig(stubConfig.repoConfigs['repository.yml'].repository.name) expect(typeof repoConfig).toBe('object') expect(repoConfig).not.toBeNull() From d80a135d2a4741855baa2b0514eddb8a328b50af Mon Sep 17 00:00:00 2001 From: daboucha Date: Fri, 20 Dec 2024 16:24:05 +0100 Subject: [PATCH 5/9] fix(overrideRepoConfig): remove helper function use --- lib/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/settings.js b/lib/settings.js index c6d2a47d..834ba7aa 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -315,7 +315,7 @@ ${this.results.reduce((x, y) => { // Overlay repo config // RepoConfigs should be preloaded but checking anyway - const overrideRepoConfig = this.getRepoOverrideConfig(repoName) + const overrideRepoConfig = this.repoConfigs[`${repo.repo}.yml`]?.repository || this.repoConfigs[`${repo.repo}.yaml`]?.repository if (overrideRepoConfig) { repoConfig = this.mergeDeep.mergeDeep({}, repoConfig, overrideRepoConfig) } From a97ed176eedf70eb0882623b0b69add83393cba9 Mon Sep 17 00:00:00 2001 From: daboucha Date: Fri, 20 Dec 2024 17:37:48 +0100 Subject: [PATCH 6/9] test(settings): attempt to fix failing tests --- test/unit/lib/settings.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/lib/settings.test.js b/test/unit/lib/settings.test.js index 4d5d34c5..75ee1bd0 100644 --- a/test/unit/lib/settings.test.js +++ b/test/unit/lib/settings.test.js @@ -146,7 +146,7 @@ describe('Settings Tests', () => { beforeEach(() => { stubConfig = { repoConfigs: { - 'repository.yml': { repository: { name: 'test-repository-yml', config: 'config1' } } + 'repository.yml': { repository: { name: 'repository', config: 'config1' } } } } }) @@ -165,7 +165,7 @@ describe('Settings Tests', () => { beforeEach(() => { stubConfig = { repoConfigs: { - 'repository.yml': { repository: { name: 'test-repository-yml', config: 'config1' } } + 'repository.yaml': { repository: { name: 'repository', config: 'config1' } } } } }) From 0590f6817c83585285d5bdeaef53a74c78ab1304 Mon Sep 17 00:00:00 2001 From: daboucha Date: Fri, 20 Dec 2024 17:43:46 +0100 Subject: [PATCH 7/9] test(settings): simplify --- test/unit/lib/settings.test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/unit/lib/settings.test.js b/test/unit/lib/settings.test.js index 75ee1bd0..916b0a50 100644 --- a/test/unit/lib/settings.test.js +++ b/test/unit/lib/settings.test.js @@ -146,14 +146,14 @@ describe('Settings Tests', () => { beforeEach(() => { stubConfig = { repoConfigs: { - 'repository.yml': { repository: { name: 'repository', config: 'config1' } } + 'repository.yaml': { repository: { name: 'repository', config: 'config1' } } } } }) it('Picks up a repository defined in file using the .yaml extension', () => { const settings = createSettings(stubConfig) - settings.getRepoOverrideConfig(stubConfig.repoConfigs['repository.yaml'].repository.name) + const repoConfig = settings.getRepoOverrideConfig('repository') expect(typeof repoConfig).toBe('object') expect(repoConfig).not.toBeNull() @@ -165,14 +165,14 @@ describe('Settings Tests', () => { beforeEach(() => { stubConfig = { repoConfigs: { - 'repository.yaml': { repository: { name: 'repository', config: 'config1' } } + 'repository.yml': { repository: { name: 'repository', config: 'config1' } } } } }) it('Picks up a repository defined in file using the .yml extension', () => { const settings = createSettings(stubConfig) - const repoConfig = settings.getRepoOverrideConfig(stubConfig.repoConfigs['repository.yml'].repository.name) + const repoConfig = settings.getRepoOverrideConfig('repository') expect(typeof repoConfig).toBe('object') expect(repoConfig).not.toBeNull() From 33458ebef94ecdd9d55a98076de5d46e2f290b3f Mon Sep 17 00:00:00 2001 From: daboucha Date: Mon, 6 Jan 2025 14:07:56 +0100 Subject: [PATCH 8/9] fix(settings): load repo configuration in tests --- lib/settings.js | 2 +- test/unit/lib/settings.test.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/settings.js b/lib/settings.js index 834ba7aa..cfd6fd01 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -413,7 +413,7 @@ ${this.results.reduce((x, y) => { return childPlugins } - getRepoOverrideConfig(repoName) { + getRepoOverrideConfig (repoName) { return this.repoConfigs[`${repoName}.yml`] || this.repoConfigs[`${repoName}.yaml`] || {} } diff --git a/test/unit/lib/settings.test.js b/test/unit/lib/settings.test.js index 916b0a50..0b46bfee 100644 --- a/test/unit/lib/settings.test.js +++ b/test/unit/lib/settings.test.js @@ -152,7 +152,8 @@ describe('Settings Tests', () => { }) it('Picks up a repository defined in file using the .yaml extension', () => { - const settings = createSettings(stubConfig) + settings = createSettings(stubConfig) + settings.repoConfigs = stubConfig.repoConfigs const repoConfig = settings.getRepoOverrideConfig('repository') expect(typeof repoConfig).toBe('object') @@ -171,7 +172,8 @@ describe('Settings Tests', () => { }) it('Picks up a repository defined in file using the .yml extension', () => { - const settings = createSettings(stubConfig) + settings = createSettings(stubConfig) + settings.repoConfigs = stubConfig.repoConfigs const repoConfig = settings.getRepoOverrideConfig('repository') expect(typeof repoConfig).toBe('object') From 40a75a6e2b9a14acacae3df2be32bffb4a22abe7 Mon Sep 17 00:00:00 2001 From: daboucha Date: Tue, 7 Jan 2025 09:58:59 +0100 Subject: [PATCH 9/9] docs(readme): yaml extension can be used too --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index b3137a37..475fbafa 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,6 @@ > [!NOTE] > The `suborg` and `repo` level settings directory structure cannot be customized. > -> Settings files must have a `.yml` extension only. For now, the `.yaml` extension is ignored. ## How it works