fix(release): ensure @org/package style names are wrapped in quotes in version plans (#27177)

This commit is contained in:
James Henry 2024-07-30 22:04:19 +04:00 committed by GitHub
parent f19354419b
commit 17c87a5df7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 55 additions and 16 deletions

View File

@ -15,6 +15,7 @@ import {
} from './config/config'; } from './config/config';
import { filterReleaseGroups } from './config/filter-release-groups'; import { filterReleaseGroups } from './config/filter-release-groups';
import { getVersionPlansAbsolutePath } from './config/version-plans'; import { getVersionPlansAbsolutePath } from './config/version-plans';
import { generateVersionPlanContent } from './utils/generate-version-plan-content';
import { parseConventionalCommitsMessage } from './utils/git'; import { parseConventionalCommitsMessage } from './utils/git';
import { printDiff } from './utils/print-changes'; import { printDiff } from './utils/print-changes';
@ -136,7 +137,7 @@ export async function releasePlan(args: PlanOptions): Promise<string | number> {
} }
const versionPlanMessage = args.message || (await promptForMessage()); const versionPlanMessage = args.message || (await promptForMessage());
const versionPlanFileContent = getVersionPlanFileContent( const versionPlanFileContent = generateVersionPlanContent(
versionPlanBumps, versionPlanBumps,
versionPlanMessage versionPlanMessage
); );
@ -229,18 +230,3 @@ async function _promptForMessage(): Promise<string> {
process.exit(0); process.exit(0);
} }
} }
function getVersionPlanFileContent(
bumps: Record<string, string>,
message: string
): string {
return `---
${Object.entries(bumps)
.filter(([_, version]) => version !== 'none')
.map(([projectOrGroup, version]) => `${projectOrGroup}: ${version}`)
.join('\n')}
---
${message}
`;
}

View File

@ -0,0 +1,32 @@
import { generateVersionPlanContent } from './generate-version-plan-content';
describe('generateVersionPlanContent()', () => {
it('should generate the version plan content', () => {
expect(generateVersionPlanContent({ proj: '1.0.0' }, 'message'))
.toMatchInlineSnapshot(`
"---
proj: 1.0.0
---
message
"
`);
});
it('should wrap project keys in quotes if they start with an @ symbol', () => {
expect(
generateVersionPlanContent(
{ '@proj/foo': '1.0.0', 'a-b-c': '2.3.4' },
'message'
)
).toMatchInlineSnapshot(`
"---
'@proj/foo': 1.0.0
a-b-c: 2.3.4
---
message
"
`);
});
});

View File

@ -0,0 +1,21 @@
export function generateVersionPlanContent(
bumps: Record<string, string>,
message: string
): string {
return `---
${Object.entries(bumps)
.filter(([_, version]) => version !== 'none')
.map(([projectOrGroup, version]) => {
let key = projectOrGroup;
// frontmatter parsing will blow up if we don't wrap @org/package style project names in quotes
if (key.startsWith('@')) {
key = `'${key}'`;
}
return `${key}: ${version}`;
})
.join('\n')}
---
${message}
`;
}