projenrc/upgrade-dependencies.ts (44 lines of code) (raw):

import { Component, JsonPatch, javascript } from 'projen'; import { SUPPORT_POLICY } from './support'; export class JsiiDependencyUpgrades extends Component { public constructor(project: javascript.NodeProject) { super(project, 'jsii-deps-upgrades'); const branches = [ 'main', ...Object.entries(SUPPORT_POLICY.maintenance).flatMap(([version, until]) => { if (Date.now() > until.getTime()) { return []; } return [`maintenance/v${version}`]; }), ]; const upgrades = new javascript.UpgradeDependencies(project, { exclude: ['jsii', 'typescript'], workflowOptions: { branches, labels: ['auto-approve'], }, }); for (const upgradeWorkflow of upgrades.workflows) { if (upgradeWorkflow.name.startsWith('upgrade-maintenance-')) { upgradeWorkflow.file?.patch( JsonPatch.add('/jobs/upgrade/steps/3', { name: 'Back-port projenrc changes from main', env: { CI: 'false' }, run: 'git fetch origin main && git checkout FETCH_HEAD -- README.md && yarn projen', }), ); } } // Upgrade jsii & typescript as patch only new javascript.UpgradeDependencies(project, { taskName: 'upgrade-jsii', include: ['jsii', 'typescript'], target: 'patch', pullRequestTitle: 'upgrade jsii & typescript', workflowOptions: { branches, labels: ['auto-approve'], }, }); } }