Skip to content

Commit 86fcb3d

Browse files
committed
throw if field does not exists
1 parent dba31f0 commit 86fcb3d

File tree

4 files changed

+83
-26
lines changed

4 files changed

+83
-26
lines changed

scripts/__tests__/common.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import execa from 'execa';
22

33
import { gitCommit } from '../common';
4+
import { getClientsConfigField } from '../config';
45

56
jest.mock('execa');
67

@@ -51,3 +52,27 @@ describe('gitCommit', () => {
5152
);
5253
});
5354
});
55+
56+
describe('config', () => {
57+
describe('getClientsConfigField', () => {
58+
it('throws if the field is not found', () => {
59+
expect(() => {
60+
getClientsConfigField('javascript', 'packageVersion');
61+
}).toThrowErrorMatchingInlineSnapshot(
62+
`"Unable to find 'packageVersion' for 'javascript'"`
63+
);
64+
65+
expect(() => {
66+
getClientsConfigField('java', 'utilsPackageVersion');
67+
}).toThrowErrorMatchingInlineSnapshot(
68+
`"Unable to find 'utilsPackageVersion' for 'java'"`
69+
);
70+
});
71+
72+
it('find the field if it exists', () => {
73+
expect(getClientsConfigField('java', ['tests', 'extension'])).toEqual(
74+
'.test.java'
75+
);
76+
});
77+
});
78+
});

scripts/config.ts

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,46 @@
11
import clientsConfig from '../config/clients.config.json';
22
import openapiConfig from '../config/openapitools.json';
33

4-
import type { Language } from './types';
4+
import type { Language, LanguageConfig } from './types';
5+
6+
export function getClientsConfigField(
7+
language: Language,
8+
pathToField: string[] | string
9+
): any {
10+
const config: LanguageConfig = clientsConfig[language];
11+
const path = Array.isArray(pathToField) ? pathToField : [pathToField];
12+
13+
return path.reduce((current, key) => {
14+
if (!current || !current[key]) {
15+
throw new Error(`Unable to find '${pathToField}' for '${language}'`);
16+
}
17+
18+
return current[key];
19+
}, config);
20+
}
521

622
export function getLanguageFolder(language: Language): string {
7-
return clientsConfig[language].folder;
23+
return getClientsConfigField(language, 'folder');
824
}
925

1026
export function getLanguageApiFolder(language: Language): string {
11-
return clientsConfig[language].apiFolder;
27+
return getClientsConfigField(language, 'apiFolder');
1228
}
1329

1430
export function getLanguageModelFolder(language: Language): string {
15-
return clientsConfig[language].modelFolder;
31+
return getClientsConfigField(language, 'modelFolder');
1632
}
1733

1834
export function getTestExtension(language: Language): string {
19-
return clientsConfig[language].tests.extension;
35+
return getClientsConfigField(language, ['tests', 'extension']);
2036
}
2137

2238
export function getTestOutputFolder(language: Language): string {
23-
return clientsConfig[language].tests.outputFolder;
39+
return getClientsConfigField(language, ['tests', 'outputFolder']);
2440
}
2541

2642
export function getCustomGenerator(language: Language): string {
27-
return clientsConfig[language].customGenerator;
43+
return getClientsConfigField(language, 'customGenerator');
2844
}
2945

3046
/**
@@ -35,20 +51,8 @@ export function getPackageVersionDefault(language: Language): string {
3551
return openapiConfig['generator-cli'].generators['javascript-search']
3652
.additionalProperties.packageVersion;
3753
}
38-
return clientsConfig[language].packageVersion;
39-
}
40-
41-
/**
42-
* Returns the value of the `utilsPackageVersion`.
43-
*
44-
* Currently supported languages other than `javascript` does not have a utils package.
45-
*/
46-
export function getUtilsPackageVersionDefault(language: Language): string {
47-
if (language !== 'javascript') {
48-
return '';
49-
}
5054

51-
return clientsConfig[language].utilsPackageVersion;
55+
return getClientsConfigField(language, 'packageVersion');
5256
}
5357

5458
export function getGitHubUrl(

scripts/release/process-release.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ import {
2121
LANGUAGES,
2222
} from '../common';
2323
import {
24+
getClientsConfigField,
2425
getGitHubUrl,
2526
getLanguageFolder,
2627
getPackageVersionDefault,
27-
getUtilsPackageVersionDefault,
2828
} from '../config';
2929
import type { Language } from '../types';
3030

@@ -141,11 +141,20 @@ async function updateVersionForJavascript(
141141
);
142142

143143
// Sets the new version of the utils package
144-
const nextUtilsPackageVersion =
145-
semver.inc(
146-
getUtilsPackageVersionDefault('javascript'),
147-
jsVersion.releaseType
148-
) || '';
144+
const utilsPackageVersion = getClientsConfigField(
145+
'javascript',
146+
'utilsPackageVersion'
147+
);
148+
const nextUtilsPackageVersion = semver.inc(
149+
utilsPackageVersion,
150+
jsVersion.releaseType
151+
);
152+
153+
if (!nextUtilsPackageVersion) {
154+
throw new Error(
155+
`Failed to bump version ${utilsPackageVersion} by ${jsVersion.releaseType}.`
156+
);
157+
}
149158

150159
clientsConfig.javascript.utilsPackageVersion = nextUtilsPackageVersion;
151160
await fsp.writeFile(

scripts/types.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
import type config from '../config/clients.config.json';
22

3+
/**
4+
* Config.
5+
*/
6+
export type ClientsConfig = Record<Language, LanguageConfig>;
7+
8+
export type LanguageConfig = {
9+
folder: string;
10+
gitRepoId: string;
11+
modelFolder: string;
12+
apiFolder: string;
13+
customGenerator: string;
14+
packageVersion?: string;
15+
utilsPackageVersion?: string;
16+
tests: {
17+
extension: string;
18+
outputFolder: string;
19+
};
20+
};
21+
322
export type Generator = Record<string, any> & {
423
language: Language;
524
client: string;

0 commit comments

Comments
 (0)