cli: add util to get role info by name
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
@@ -19,4 +19,8 @@ export type {
|
||||
PackagePlatform,
|
||||
PackageRoleName,
|
||||
} from './types';
|
||||
export { detectPackageRole, readPackageRole } from './packageRoles';
|
||||
export {
|
||||
getRoleInfo,
|
||||
detectPackageRole,
|
||||
readPackageRole,
|
||||
} from './packageRoles';
|
||||
|
||||
@@ -14,7 +14,29 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { readPackageRole, detectPackageRole } from './packageRoles';
|
||||
import {
|
||||
getRoleInfo,
|
||||
readPackageRole,
|
||||
detectPackageRole,
|
||||
} from './packageRoles';
|
||||
|
||||
describe('getRoleInfo', () => {
|
||||
it('provides role info by role', () => {
|
||||
expect(getRoleInfo('web-library')).toEqual({
|
||||
role: 'web-library',
|
||||
platform: 'web',
|
||||
});
|
||||
|
||||
expect(getRoleInfo('app')).toEqual({
|
||||
role: 'app',
|
||||
platform: 'web',
|
||||
});
|
||||
|
||||
expect(() => getRoleInfo('invalid')).toThrow(
|
||||
`Unknown package role 'invalid'`,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('readPackageRole', () => {
|
||||
it('reads explicit package roles', () => {
|
||||
@@ -52,7 +74,7 @@ describe('readPackageRole', () => {
|
||||
name: 'test',
|
||||
backstage: { role: 'invalid' },
|
||||
}),
|
||||
).toThrow(`Unknown role 'invalid' in package test`);
|
||||
).toThrow(`Unknown package role 'invalid'`);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -31,6 +31,14 @@ const packageRoles: PackageRoleInfo[] = [
|
||||
];
|
||||
const roleMap = Object.fromEntries(packageRoles.map(i => [i.role, i]));
|
||||
|
||||
export function getRoleInfo(role: string): PackageRoleInfo {
|
||||
const roleInfo = packageRoles.find(r => r.role === role);
|
||||
if (!roleInfo) {
|
||||
throw new Error(`Unknown package role '${role}'`);
|
||||
}
|
||||
return roleInfo;
|
||||
}
|
||||
|
||||
const readSchema = z.object({
|
||||
name: z.string().optional(),
|
||||
backstage: z
|
||||
@@ -52,11 +60,7 @@ export function readPackageRole(pkgJson: unknown): PackageRoleInfo | undefined {
|
||||
);
|
||||
}
|
||||
|
||||
const roleInfo = packageRoles.find(r => r.role === role);
|
||||
if (!roleInfo) {
|
||||
throw new Error(`Unknown role '${role}' in package ${pkg.name}`);
|
||||
}
|
||||
return roleInfo;
|
||||
return getRoleInfo(role);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
|
||||
Reference in New Issue
Block a user