import { defineCheck, json, diff } from 'commonality';
const ensureLicense = (license: string = 'MIT') => {
return {
name: 'my-team/ensure-license',
level: 'error',
validate: async (ctx) => {
const packageJson = await json(ctx.package.path, 'package.json').get();
// Since we return multiple messages we should test for each scenario
if (!packageJson || !packageJson.license) {
return {
message: 'Package.json must have a license',
path: 'package.json',
suggestion: diff(
{ name: packageJson.name },
{ name: packageJson.name, license },
),
};
}
if(packageJson.license !== license) {
return {
message: `Package.json license must be ${license}`,
path: 'package.json',
suggestion: diff(
{ name: packageJson.name, license: packageJson.license },
{ name: packageJson.name, license },
),
};
}
return true
},
fix: async (ctx) => {
// We'll want to test that this file gets updated correctly on disk
await json(ctx.package.path, 'package.json').merge({
license,
});
},
};
};