|
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