@@ -10789,10 +10789,8 @@ var dist = __nccwpck_require__(1281);
1078910789// EXTERNAL MODULE: ./node_modules/@metamask /auto-changelog/dist/index.js
1079010790var auto_changelog_dist = __nccwpck_require__ ( 9272 ) ;
1079110791; // CONCATENATED MODULE: ./lib/constants.js
10792- // error messages
10793- const GITHUB_WORKSPACE_ERROR = 'process.env.GITHUB_WORKSPACE must be set.' ;
10794- const RELEASE_VERSION_ERROR = 'process.env.RELEASE_VERSION must be a valid SemVer version.' ;
10795- const REPOSITORY_URL_ERROR = 'process.env.REPOSITORY_URL must be a valid URL.' ;
10792+ const FIXED = 'fixed' ;
10793+ const INDEPENDENT = 'independent' ;
1079610794//# sourceMappingURL=constants.js.map
1079710795; // CONCATENATED MODULE: ./lib/utils.js
1079810796
@@ -10805,9 +10803,10 @@ const isValidUrl = (str) => {
1080510803 catch ( _ ) {
1080610804 return false ;
1080710805 }
10808- return url . protocol === 'http:' || url . protocol === ' https:' ;
10806+ return url . protocol === ` https:` ;
1080910807} ;
1081010808const removeGitEx = ( url ) => url . substring ( 0 , url . lastIndexOf ( '.git' ) ) ;
10809+ const fixedOrIndependent = ( value ) => value === FIXED || value === INDEPENDENT ;
1081110810/**
1081210811 * Utility function for parsing expected environment variables.
1081310812 *
@@ -10819,21 +10818,28 @@ const removeGitEx = (url) => url.substring(0, url.lastIndexOf('.git'));
1081910818function parseEnvironmentVariables ( environmentVariables = process . env ) {
1082010819 const workspaceRoot = ( 0 , dist . getStringRecordValue ) ( 'GITHUB_WORKSPACE' , environmentVariables ) ;
1082110820 if ( ! ( 0 , dist . isTruthyString ) ( workspaceRoot ) ) {
10822- throw new Error ( GITHUB_WORKSPACE_ERROR ) ;
10821+ throw new Error ( 'process.env.GITHUB_WORKSPACE must be set.' ) ;
1082310822 }
1082410823 const releaseVersion = ( 0 , dist . getStringRecordValue ) ( 'RELEASE_VERSION' , environmentVariables ) ;
1082510824 if ( ! ( 0 , dist . isTruthyString ) ( releaseVersion ) || ! ( 0 , dist . isValidSemver ) ( releaseVersion ) ) {
10826- throw new Error ( RELEASE_VERSION_ERROR ) ;
10825+ throw new Error ( 'process.env.RELEASE_VERSION must be a valid SemVer version.' ) ;
1082710826 }
1082810827 const repositoryUrl = ( 0 , dist . getStringRecordValue ) ( 'REPOSITORY_URL' , environmentVariables ) ;
1082910828 if ( ! isValidUrl ( repositoryUrl ) ) {
10830- throw new Error ( REPOSITORY_URL_ERROR ) ;
10829+ throw new Error ( 'process.env.REPOSITORY_URL must be a valid URL.' ) ;
1083110830 }
1083210831 const repoUrl = removeGitEx ( repositoryUrl ) ;
10832+ const releaseStrategy = ( 0 , dist . getStringRecordValue ) ( 'RELEASE_STRATEGY' , environmentVariables ) ;
10833+ if ( ! fixedOrIndependent ( releaseStrategy ) ) {
10834+ throw new Error ( `process.env.RELEASE_STRATEGY must be one of "${ FIXED } " or "${ INDEPENDENT } "` ) ;
10835+ }
10836+ const releasePackages = ( 0 , dist . getStringRecordValue ) ( 'RELEASE_PACKAGES' , environmentVariables ) || undefined ;
1083310837 return {
1083410838 releaseVersion,
1083510839 repoUrl,
1083610840 workspaceRoot,
10841+ releaseStrategy,
10842+ releasePackages,
1083710843 } ;
1083810844}
1083910845//# sourceMappingURL=utils.js.map
@@ -10844,6 +10850,17 @@ function parseEnvironmentVariables(environmentVariables = process.env) {
1084410850
1084510851
1084610852
10853+
10854+ const getReleasePackages = ( ) => {
10855+ const { releasePackages } = parseEnvironmentVariables ( ) ;
10856+ if ( releasePackages === undefined ) {
10857+ throw new Error ( 'The updated packages are undefined' ) ;
10858+ }
10859+ else {
10860+ const { packages } = JSON . parse ( releasePackages ) ;
10861+ return packages ;
10862+ }
10863+ } ;
1084710864/**
1084810865 * Action entry function. Gets the release notes for use in a GitHub release.
1084910866 * Works for both monorepos and polyrepos.
@@ -10852,13 +10869,13 @@ function parseEnvironmentVariables(environmentVariables = process.env) {
1085210869 * @see getPackageManifest - For details on polyrepo workflow.
1085310870 */
1085410871async function getReleaseNotes ( ) {
10855- const { releaseVersion, repoUrl, workspaceRoot } = parseEnvironmentVariables ( ) ;
10872+ const { releaseVersion, repoUrl, workspaceRoot, releaseStrategy } = parseEnvironmentVariables ( ) ;
1085610873 const rawRootManifest = await ( 0 , dist . getPackageManifest ) ( workspaceRoot ) ;
1085710874 const rootManifest = ( 0 , dist . validatePackageManifestVersion ) ( rawRootManifest , workspaceRoot ) ;
1085810875 let releaseNotes ;
1085910876 if ( dist . ManifestFieldNames . Workspaces in rootManifest ) {
1086010877 console . log ( 'Project appears to have workspaces. Applying monorepo workflow.' ) ;
10861- releaseNotes = await getMonorepoReleaseNotes ( releaseVersion , repoUrl , workspaceRoot , ( 0 , dist . validateMonorepoPackageManifest ) ( rootManifest , workspaceRoot ) ) ;
10878+ releaseNotes = await getMonorepoReleaseNotes ( releaseVersion , repoUrl , workspaceRoot , ( 0 , dist . validateMonorepoPackageManifest ) ( rootManifest , workspaceRoot ) , releaseStrategy ) ;
1086210879 }
1086310880 else {
1086410881 console . log ( 'Project does not appear to have any workspaces. Applying polyrepo workflow.' ) ;
@@ -10870,6 +10887,26 @@ async function getReleaseNotes() {
1087010887 }
1087110888 ( 0 , core . exportVariable ) ( 'RELEASE_NOTES' , releaseNotes . concat ( '\n\n' ) ) ;
1087210889}
10890+ async function getReleaseNotesForMonorepoWithIndependentVersions ( repoUrl ) {
10891+ let releaseNotes = '' ;
10892+ for ( const [ packageName , { path, version } ] of Object . entries ( getReleasePackages ( ) ) ) {
10893+ releaseNotes = releaseNotes . concat ( `## ${ packageName } \n\n` , await getPackageReleaseNotes ( version , repoUrl , path ) , '\n\n' ) ;
10894+ }
10895+ return releaseNotes ;
10896+ }
10897+ async function getReleaseNotesForMonorepoWithFixedVersions ( releaseVersion , repoUrl , workspaceRoot , rootManifest ) {
10898+ const workspaceLocations = await ( 0 , dist . getWorkspaceLocations ) ( rootManifest . workspaces , workspaceRoot ) ;
10899+ let releaseNotes = '' ;
10900+ for ( const workspaceLocation of workspaceLocations ) {
10901+ const completeWorkspacePath = external_path_default ( ) . join ( workspaceRoot , workspaceLocation ) ;
10902+ const rawPackageManifest = await ( 0 , dist . getPackageManifest ) ( completeWorkspacePath ) ;
10903+ const { name : packageName , version : packageVersion } = ( 0 , dist . validatePolyrepoPackageManifest ) ( rawPackageManifest , completeWorkspacePath ) ;
10904+ if ( packageVersion === releaseVersion ) {
10905+ releaseNotes = releaseNotes . concat ( `## ${ packageName } \n\n` , await getPackageReleaseNotes ( releaseVersion , repoUrl , completeWorkspacePath ) , '\n\n' ) ;
10906+ }
10907+ }
10908+ return releaseNotes ;
10909+ }
1087310910/**
1087410911 * Gets the combined release notes for all packages in the monorepo that are
1087510912 * included in the current release.
@@ -10883,17 +10920,10 @@ async function getReleaseNotes() {
1088310920 * @param rootManifest - The parsed package.json file of the root directory.
1088410921 * @returns The release notes for all packages included in the release.
1088510922 */
10886- async function getMonorepoReleaseNotes ( releaseVersion , repoUrl , workspaceRoot , rootManifest ) {
10887- const workspaceLocations = await ( 0 , dist . getWorkspaceLocations ) ( rootManifest . workspaces , workspaceRoot ) ;
10888- let releaseNotes = '' ;
10889- for ( const workspaceLocation of workspaceLocations ) {
10890- const completeWorkspacePath = external_path_default ( ) . join ( workspaceRoot , workspaceLocation ) ;
10891- const rawPackageManifest = await ( 0 , dist . getPackageManifest ) ( completeWorkspacePath ) ;
10892- const { name : packageName , version : packageVersion } = ( 0 , dist . validatePolyrepoPackageManifest ) ( rawPackageManifest , completeWorkspacePath ) ;
10893- if ( packageVersion === releaseVersion ) {
10894- releaseNotes = releaseNotes . concat ( `## ${ packageName } \n\n` , await getPackageReleaseNotes ( releaseVersion , repoUrl , completeWorkspacePath ) , '\n\n' ) ;
10895- }
10896- }
10923+ async function getMonorepoReleaseNotes ( releaseVersion , repoUrl , workspaceRoot , rootManifest , versioningStrategy ) {
10924+ const releaseNotes = versioningStrategy === INDEPENDENT
10925+ ? await getReleaseNotesForMonorepoWithIndependentVersions ( repoUrl )
10926+ : await getReleaseNotesForMonorepoWithFixedVersions ( releaseVersion , repoUrl , workspaceRoot , rootManifest ) ;
1089710927 return releaseNotes ;
1089810928}
1089910929/**
0 commit comments