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