|
1 | 1 | // @ts-check
|
2 | 2 |
|
3 |
| -const { releaseVersionGenerator } = require('@nx/js/src/generators/release-version/release-version'); |
| 3 | +const {REPO_ROOT} = require('../../scripts/consts'); |
| 4 | +const JsVersionActions = require('@nx/js/src/release/version-actions').default; |
4 | 5 | const fs = require('node:fs');
|
5 | 6 | const path = require('node:path');
|
6 |
| -const { REPO_ROOT } = require('../../scripts/consts'); |
7 | 7 |
|
8 | 8 | /**
|
9 | 9 | * @returns {Promise<string[]>}
|
10 | 10 | */
|
11 | 11 | async function runSetVersion() {
|
12 |
| - const rnmPkgJson = require.resolve('react-native-macos/package.json'); |
13 |
| - const { updateReactNativeArtifacts } = require('../../scripts/releases/set-rn-artifacts-version'); |
| 12 | + const rnmPkgJsonPath = path.join(REPO_ROOT, 'packages', 'react-native', 'package.json'); |
| 13 | + const {updateReactNativeArtifacts} = require('../../scripts/releases/set-rn-artifacts-version'); |
14 | 14 |
|
15 |
| - const manifest = fs.readFileSync(rnmPkgJson, { encoding: 'utf-8' }); |
16 |
| - const { version } = JSON.parse(manifest); |
| 15 | + const manifest = fs.readFileSync(rnmPkgJsonPath, {encoding: 'utf-8'}); |
| 16 | + const {version} = JSON.parse(manifest); |
17 | 17 |
|
18 | 18 | await updateReactNativeArtifacts(version);
|
19 | 19 |
|
@@ -66,23 +66,42 @@ async function runSetVersion() {
|
66 | 66 | ];
|
67 | 67 | }
|
68 | 68 |
|
69 |
| -/** @type {typeof releaseVersionGenerator} */ |
70 |
| -module.exports = async function(tree, options) { |
71 |
| - const { data, callback } = await releaseVersionGenerator(tree, options); |
72 |
| - return { |
73 |
| - data, |
74 |
| - callback: async (tree, options) => { |
75 |
| - const result = await callback(tree, options); |
| 69 | +/** |
| 70 | + * Custom afterAllProjectsVersioned hook for React Native macOS |
| 71 | + * Updates React Native artifacts after all projects have been versioned |
| 72 | + * @param {string} _cwd - Current working directory (unused) |
| 73 | + * @param {object} _opts - Options object containing versioning information (unused) |
| 74 | + * @returns {Promise<{changedFiles: string[], deletedFiles: string[]}>} |
| 75 | + */ |
| 76 | +const afterAllProjectsVersioned = async (_cwd, _opts) => { |
| 77 | + const changedFiles = []; |
| 78 | + |
| 79 | + try { |
| 80 | + // Create the .rnm-publish file to indicate versioning has occurred |
| 81 | + fs.writeFileSync(path.join(REPO_ROOT, '.rnm-publish'), ''); |
| 82 | + |
| 83 | + // Update React Native artifacts |
| 84 | + const versionedFiles = await runSetVersion(); |
76 | 85 |
|
77 |
| - // Only update artifacts if there were changes |
78 |
| - const changedFiles = Array.isArray(result) ? result : result.changedFiles; |
79 |
| - if (changedFiles.length > 0) { |
80 |
| - fs.writeFile(path.join(REPO_ROOT, '.rnm-publish'), '', () => null); |
81 |
| - const versionedFiles = await runSetVersion(); |
82 |
| - changedFiles.push(...versionedFiles); |
83 |
| - } |
| 86 | + // Return the versioned files so Nx can track them |
| 87 | + changedFiles.push(...versionedFiles); |
84 | 88 |
|
85 |
| - return result; |
86 |
| - }, |
| 89 | + console.log('✅ Updated React Native artifacts'); |
| 90 | + console.log('🏷️ Created .rnm-publish marker file'); |
| 91 | + |
| 92 | + } catch (error) { |
| 93 | + console.error('Failed to update React Native artifacts:', error); |
| 94 | + const errorMessage = error instanceof Error ? error.message : String(error); |
| 95 | + console.error(`❌ Failed to update React Native artifacts: ${errorMessage}`); |
| 96 | + throw error; |
| 97 | + } |
| 98 | + |
| 99 | + return { |
| 100 | + changedFiles, |
| 101 | + deletedFiles: [], |
87 | 102 | };
|
88 | 103 | };
|
| 104 | + |
| 105 | +module.exports = JsVersionActions; |
| 106 | +module.exports.default = JsVersionActions; |
| 107 | +module.exports.afterAllProjectsVersioned = afterAllProjectsVersioned; |
0 commit comments