diff --git a/.github/workflows/check-archs-consistency.yml b/.github/workflows/check-archs-consistency.yml index 3ab7f57f17..6fbf81de62 100644 --- a/.github/workflows/check-archs-consistency.yml +++ b/.github/workflows/check-archs-consistency.yml @@ -1,12 +1,12 @@ name: Test consistency between Paper & Fabric -on: +on: pull_request: branches: - main - paths: - - src/specs/** - - package.json - - FabricExample/package.json + paths: + - packages/react-native-gesture-handler/src/specs/** + - packages/react-native-gesture-handler/package.json + - apps/BasicExample/package.json - .github/workflows/check-archs-consistency.yml push: branches: diff --git a/apps/BasicExample/android/build.gradle b/apps/BasicExample/android/build.gradle index 2c6b053826..d6484f31c1 100644 --- a/apps/BasicExample/android/build.gradle +++ b/apps/BasicExample/android/build.gradle @@ -6,6 +6,7 @@ buildscript { targetSdkVersion = 35 ndkVersion = "27.1.12297006" kotlinVersion = "2.0.21" + isGHExampleApp = true } repositories { google() diff --git a/apps/BasicExample/ios/BasicExample.xcodeproj/project.pbxproj b/apps/BasicExample/ios/BasicExample.xcodeproj/project.pbxproj index 87aa562788..5d39aa440e 100644 --- a/apps/BasicExample/ios/BasicExample.xcodeproj/project.pbxproj +++ b/apps/BasicExample/ios/BasicExample.xcodeproj/project.pbxproj @@ -112,6 +112,7 @@ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + ABE402381D8D852B65E3CE39 /* [CP-User] Generate metadata for clangd */, ); buildRules = ( ); @@ -200,6 +201,17 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BasicExample/Pods-BasicExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + ABE402381D8D852B65E3CE39 /* [CP-User] Generate metadata for clangd */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = true; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] Generate metadata for clangd"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "../../../scripts/clangd-generate-xcode-metadata.sh"; + }; C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/apps/BasicExample/ios/Podfile b/apps/BasicExample/ios/Podfile index 3df2260722..0059517498 100644 --- a/apps/BasicExample/ios/Podfile +++ b/apps/BasicExample/ios/Podfile @@ -5,6 +5,10 @@ require Pod::Executable.execute_command('node', ['-p', {paths: ["../../../node_modules"]}, )', __dir__]).strip +require_relative '../../../scripts/clangd-add-xcode-step.rb' + +ENV['GH_EXAMPLE_APP_NAME'] = 'BasicExample' + platform :ios, min_ios_version_supported prepare_react_native_project! @@ -32,4 +36,6 @@ target 'BasicExample' do # :ccache_enabled => true ) end + + add_clangd_generation_step() end diff --git a/apps/BasicExample/ios/Podfile.lock b/apps/BasicExample/ios/Podfile.lock index 59b5465021..baa7724de1 100644 --- a/apps/BasicExample/ios/Podfile.lock +++ b/apps/BasicExample/ios/Podfile.lock @@ -1975,10 +1975,10 @@ SPEC CHECKSUMS: ReactAppDependencyProvider: 7f5052913dd72a0e84ca95973f9f8bc97f2c5b95 ReactCodegen: 53255e388b7795d02b299466a6f7187241326eaa ReactCommon: 1257efa9d0b07517d8b79bb4055eaefac1204807 - RNGestureHandler: ebef699ea17e7c0006c1074e1e423ead60ce0121 + RNGestureHandler: 95c4fe88f8fa10a891089521e7b2666db04b78c1 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 9773f1327b258fa449988c2e42fbb7cbdf655d96 -PODFILE CHECKSUM: e9e3197f07e082a650d4514e32e5232f446b111a +PODFILE CHECKSUM: d05778d3a61b8d49242579ea0aa864580fbb1f64 COCOAPODS: 1.15.2 diff --git a/apps/MacOSExample/macos/MacOSExample.xcodeproj/project.pbxproj b/apps/MacOSExample/macos/MacOSExample.xcodeproj/project.pbxproj index 3d22d0ecfb..6e24505ea7 100644 --- a/apps/MacOSExample/macos/MacOSExample.xcodeproj/project.pbxproj +++ b/apps/MacOSExample/macos/MacOSExample.xcodeproj/project.pbxproj @@ -147,6 +147,7 @@ 514201472437B4B30078DB4F /* Resources */, 381D8A6E24576A4E00465D17 /* Bundle React Native code and images */, 6D0EC1752E57E7826E33BE11 /* [CP] Copy Pods Resources */, + D01A669245645FE4195DB892 /* [CP-User] Generate metadata for clangd */, ); buildRules = ( ); @@ -299,6 +300,17 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MacOSExample-macOS/Pods-MacOSExample-macOS-resources.sh\"\n"; showEnvVarsInLog = 0; }; + D01A669245645FE4195DB892 /* [CP-User] Generate metadata for clangd */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = true; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] Generate metadata for clangd"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "../../../scripts/clangd-generate-xcode-metadata.sh"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/apps/MacOSExample/macos/Podfile b/apps/MacOSExample/macos/Podfile index f161cd5e4f..25cf61ff98 100644 --- a/apps/MacOSExample/macos/Podfile +++ b/apps/MacOSExample/macos/Podfile @@ -1,8 +1,11 @@ require_relative '../node_modules/react-native-macos/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' +require_relative '../../../scripts/clangd-add-xcode-step.rb' prepare_react_native_project! +ENV['GH_EXAMPLE_APP_NAME'] = 'MacOSExample' + target 'MacOSExample-macOS' do platform :macos, '11.0' use_native_modules! @@ -21,4 +24,6 @@ target 'MacOSExample-macOS' do post_install do |installer| react_native_post_install(installer) end + + add_clangd_generation_step() end diff --git a/apps/MacOSExample/macos/Podfile.lock b/apps/MacOSExample/macos/Podfile.lock index dfd5975377..504ae86980 100644 --- a/apps/MacOSExample/macos/Podfile.lock +++ b/apps/MacOSExample/macos/Podfile.lock @@ -1901,12 +1901,12 @@ SPEC CHECKSUMS: ReactCodegen: 3d30536e47f328f0a297d897cb789e46a092c2a6 ReactCommon: 0f22e3dd34a8215b8482778898f6e1e95572c498 RNCAsyncStorage: b9f5f78da5d16a853fe3dc22e8268d932fc45a83 - RNGestureHandler: 3aebdd5727d76b567572472b9e52c29536ee0eef + RNGestureHandler: b1b622a388c03138550fb5199b7609d01d0aad80 RNReanimated: c48c57d7fd5f78327ecf94dd088e2f6f216e7327 RNSVG: 4c63b12b7b5761063bca4f20dd228f6a8370f614 SocketRocket: 03f7111df1a343b162bf5b06ead333be808e1e0a Yoga: f89a870053f1a8fbee8c98e35a1b9eff44ce2015 -PODFILE CHECKSUM: 5db22613e5e3d56f4fcacb7e9a704e44ec83d7e3 +PODFILE CHECKSUM: ba6f2105d3e43bf0ae77356a9afcc8b532e3c306 COCOAPODS: 1.15.2 diff --git a/packages/react-native-gesture-handler/package.json b/packages/react-native-gesture-handler/package.json index ded654757d..2028b69b8f 100644 --- a/packages/react-native-gesture-handler/package.json +++ b/packages/react-native-gesture-handler/package.json @@ -10,14 +10,14 @@ "ts-check": "yarn tsc --noEmit", "format-js": "prettier --write --list-different './src/**/*.{js,jsx,ts,tsx}'", "format:js": "yarn format-js", - "format:android": "node ./scripts/format-android.js", + "format:android": "node ../../scripts/format-android.js", "format:apple": "find apple/ -iname *.h -o -iname *.m -o -iname *.cpp -o -iname *.mm | xargs clang-format -i", "lint-js": "eslint --ext '.js,.ts,.tsx' src/ && yarn prettier --check './src/**/*.{js,jsx,ts,tsx}'", "lint:js": "yarn lint-js", "lint:android": "./android/gradlew -p android spotlessCheck -q", "circular-dependency-check": "yarn madge --extensions js,ts,tsx --circular src", - "architectures-consistency-check": "node ./scripts/codegen-check-consistency.js", - "sync-architectures": "node ./scripts/codegen-sync-archs.js" + "architectures-consistency-check": "node ../../scripts/codegen-check-consistency.js", + "sync-architectures": "node ../../scripts/codegen-sync-archs.js" }, "react-native": "src/index.ts", "main": "lib/commonjs/index.js", diff --git a/packages/react-native-gesture-handler/scripts/clangd-add-xcode-step.rb b/scripts/clangd-add-xcode-step.rb similarity index 74% rename from packages/react-native-gesture-handler/scripts/clangd-add-xcode-step.rb rename to scripts/clangd-add-xcode-step.rb index 56f65f87cc..c2d5143499 100644 --- a/packages/react-native-gesture-handler/scripts/clangd-add-xcode-step.rb +++ b/scripts/clangd-add-xcode-step.rb @@ -1,5 +1,5 @@ def add_clangd_generation_step() - generator_script_path = '../../scripts/clangd-generate-xcode-metadata.sh' + generator_script_path = '../../../scripts/clangd-generate-xcode-metadata.sh' script_phase :name => 'Generate metadata for clangd', :script => generator_script_path, :shell_path => '/bin/bash', :always_out_of_date => 'true', :execution_position => :after_compile end diff --git a/packages/react-native-gesture-handler/scripts/clangd-generate-xcode-metadata.sh b/scripts/clangd-generate-xcode-metadata.sh similarity index 78% rename from packages/react-native-gesture-handler/scripts/clangd-generate-xcode-metadata.sh rename to scripts/clangd-generate-xcode-metadata.sh index a7dfa0d790..7eeb7a5eff 100755 --- a/packages/react-native-gesture-handler/scripts/clangd-generate-xcode-metadata.sh +++ b/scripts/clangd-generate-xcode-metadata.sh @@ -1,6 +1,6 @@ #!/bin/bash -COMPILE_COMMANDS_PATH="../../compile_commands.json" +COMPILE_COMMANDS_PATH="../../../compile_commands.json" echo "[" >$COMPILE_COMMANDS_PATH for f in **/CompilationDatabase/*.json; do cat "$f" >>$COMPILE_COMMANDS_PATH; done diff --git a/packages/react-native-gesture-handler/scripts/codegen-check-consistency.js b/scripts/codegen-check-consistency.js similarity index 100% rename from packages/react-native-gesture-handler/scripts/codegen-check-consistency.js rename to scripts/codegen-check-consistency.js diff --git a/packages/react-native-gesture-handler/scripts/codegen-sync-archs.js b/scripts/codegen-sync-archs.js similarity index 100% rename from packages/react-native-gesture-handler/scripts/codegen-sync-archs.js rename to scripts/codegen-sync-archs.js diff --git a/packages/react-native-gesture-handler/scripts/codegen-utils.js b/scripts/codegen-utils.js similarity index 79% rename from packages/react-native-gesture-handler/scripts/codegen-utils.js rename to scripts/codegen-utils.js index 87bb6160ff..a895951169 100644 --- a/packages/react-native-gesture-handler/scripts/codegen-utils.js +++ b/scripts/codegen-utils.js @@ -1,32 +1,39 @@ const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); -const packageJSON = require('../package.json'); +const packageJSON = require('../packages/react-native-gesture-handler/package.json'); const ERROR_PREFIX = 'react-native-gesture-handler'; -const ROOT_DIR = path.resolve(__dirname, '..'); +const ROOT_DIR = path.resolve( + __dirname, + '../packages/react-native-gesture-handler' +); const ANDROID_DIR = path.resolve(ROOT_DIR, 'android'); const GENERATED_DIR = path.resolve(ANDROID_DIR, 'build/generated'); const OLD_ARCH_DIR = path.resolve(ANDROID_DIR, 'paper/src/main'); const SPECS_DIR = path.resolve(ROOT_DIR, packageJSON.codegenConfig.jsSrcsDir); const PACKAGE_NAME = packageJSON.codegenConfig.android.javaPackageName; -const RN_DIR = path.resolve(ROOT_DIR, 'node_modules/react-native'); +const RN_DIR = path.resolve(__dirname, '../node_modules/react-native'); const RN_CODEGEN_DIR = path.resolve( - ROOT_DIR, - 'node_modules/@react-native/codegen' + __dirname, + '../node_modules/@react-native/codegen' ); const SOURCE_FOLDER = 'java/com/facebook/react/viewmanagers'; -const GH_SOURCE_FOLDER = 'java/com/swmansion/gesturehandler' +const GH_SOURCE_FOLDER = 'java/com/swmansion/gesturehandler'; const SOURCE_FOLDERS = [ - {codegenPath: `${GENERATED_DIR}/source/codegen/${SOURCE_FOLDER}`, oldArchPath: `${OLD_ARCH_DIR}/${SOURCE_FOLDER}`}, - {codegenPath: `${GENERATED_DIR}/source/codegen/${GH_SOURCE_FOLDER}`, oldArchPath: `${OLD_ARCH_DIR}/${GH_SOURCE_FOLDER}`}, -] - -const BLACKLISTED_FILES = new Set([ - 'ReactContextExtensions.kt', -]); + { + codegenPath: `${GENERATED_DIR}/source/codegen/${SOURCE_FOLDER}`, + oldArchPath: `${OLD_ARCH_DIR}/${SOURCE_FOLDER}`, + }, + { + codegenPath: `${GENERATED_DIR}/source/codegen/${GH_SOURCE_FOLDER}`, + oldArchPath: `${OLD_ARCH_DIR}/${GH_SOURCE_FOLDER}`, + }, +]; + +const BLACKLISTED_FILES = new Set(['ReactContextExtensions.kt']); function exec(command) { console.log(`[${ERROR_PREFIX}]> ` + command); @@ -34,13 +41,13 @@ function exec(command) { } function readdirSync(dir) { - return fs.readdirSync(dir).filter(file => !BLACKLISTED_FILES.has(file)); + return fs.readdirSync(dir).filter((file) => !BLACKLISTED_FILES.has(file)); } function fixOldArchJavaForRN72Compat(dir) { // see https://github.com/rnmapbox/maps/issues/3193 const files = readdirSync(dir); - files.forEach(file => { + files.forEach((file) => { const filePath = path.join(dir, file); const fileExtension = path.extname(file); if (fileExtension === '.java') { @@ -82,12 +89,12 @@ async function generateCodegen() { async function generateCodegenJavaOldArch() { await generateCodegen(); - SOURCE_FOLDERS.forEach(({codegenPath, oldArchPath}) => { + SOURCE_FOLDERS.forEach(({ codegenPath, oldArchPath }) => { const generatedFiles = readdirSync(codegenPath); const oldArchFiles = readdirSync(oldArchPath); - const existingFilesSet = new Set(oldArchFiles.map(fileName => fileName)); + const existingFilesSet = new Set(oldArchFiles.map((fileName) => fileName)); - generatedFiles.forEach(generatedFile => { + generatedFiles.forEach((generatedFile) => { if (!existingFilesSet.has(generatedFile)) { console.warn( `[${ERROR_PREFIX}] ${generatedFile} not found in paper dir, if it's used on Android you need to copy it manually and implement yourself before using auto-copy feature.` @@ -101,7 +108,7 @@ async function generateCodegenJavaOldArch() { ); } - oldArchFiles.forEach(file => { + oldArchFiles.forEach((file) => { if (!fs.existsSync(`${codegenPath}/${file}`)) { console.warn( `[${ERROR_PREFIX}] ${file} file does not exist in codegen artifacts source destination. Please check if you still need this interface/delagete.` @@ -127,9 +134,9 @@ function compareFileAtTwoPaths(filename, firstPath, secondPath) { async function checkCodegenIntegrity() { await generateCodegen(); - SOURCE_FOLDERS.forEach(({codegenPath, oldArchPath}) => { + SOURCE_FOLDERS.forEach(({ codegenPath, oldArchPath }) => { const oldArchFiles = readdirSync(oldArchPath); - oldArchFiles.forEach(file => { + oldArchFiles.forEach((file) => { compareFileAtTwoPaths(file, codegenPath, oldArchPath); }); }); diff --git a/packages/react-native-gesture-handler/scripts/format-android.js b/scripts/format-android.js similarity index 100% rename from packages/react-native-gesture-handler/scripts/format-android.js rename to scripts/format-android.js diff --git a/yarn.lock b/yarn.lock index 9e3b578639..2646ee45cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4552,11 +4552,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.15.14 - resolution: "@types/node@npm:22.15.14" + version: 22.15.17 + resolution: "@types/node@npm:22.15.17" dependencies: undici-types: "npm:~6.21.0" - checksum: 10c0/a977c1518d53e3b85e8c56fe619d6eca4bc79224d24e7068f55589b3b4a60b8390c859290068b9a00d8a07bee809535afaa952fc31544dff8f8de8975d94c531 + checksum: 10c0/fb92aa10b628683c5b965749f955bc2322485ecb0ea6c2f4cae5f2c7537a16834607e67083a9e9281faaae8d7dee9ada8d6a5c0de9a52c17d82912ef00c0fdd4 languageName: node linkType: hard @@ -7504,9 +7504,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.149": - version: 1.5.150 - resolution: "electron-to-chromium@npm:1.5.150" - checksum: 10c0/898c232d5678a1e50f254b93902042e7287c6435ec8adab2a0f35e9f11f343eac901b799babaac92ec455a36f35ac0321847a391470629dd0060a681f850797d + version: 1.5.151 + resolution: "electron-to-chromium@npm:1.5.151" + checksum: 10c0/9b3d73836a784af4fd113676b87b0d233ae51984cd4d4396f7252c7369e2f897afeca9fb53910c314e74a4b5d22b6faa4450e95304ceeb1c4fd04e8356030d4b languageName: node linkType: hard @@ -11789,11 +11789,11 @@ __metadata: linkType: hard "lan-network@npm:^0.1.4": - version: 0.1.5 - resolution: "lan-network@npm:0.1.5" + version: 0.1.6 + resolution: "lan-network@npm:0.1.6" bin: lan-network: dist/lan-network-cli.js - checksum: 10c0/e5c02d45cd415431a77a7e40050b8f4484b4f5e97954c0e8d15cd671c3ab2466ffda077ee2a09723b91a47eccf02ca245a6a7dd98251db02a1955c0ff7cb24c3 + checksum: 10c0/5932a9d67c40fad53da5b383c4623dba700f1b6553d4aea740f5e1cad298a908f2a14dec940ac2e149b06deda73124fc9971e7dbaf162b7f9e077a2d59cd7b20 languageName: node linkType: hard @@ -14594,12 +14594,12 @@ __metadata: linkType: hard "react-devtools-core@npm:^6.0.1, react-devtools-core@npm:^6.1.1": - version: 6.1.1 - resolution: "react-devtools-core@npm:6.1.1" + version: 6.1.2 + resolution: "react-devtools-core@npm:6.1.2" dependencies: shell-quote: "npm:^1.6.1" ws: "npm:^7" - checksum: 10c0/311dcdaa2ba64a1eec7c8324361f075547a2c60537f54247e3bd4e59446fb9c140fa61c61c014371a62028a24ae00593ecda5898a96827f9b62fba853c4ac848 + checksum: 10c0/a038414d69eb4d1d6303a1fc2ab0f5c2350ffa5fd8d5083ba6a83545273a8d596322c6f101c7091a2c123c47b429a91b3ea65d1291581d5bc9dd58afc62270dd languageName: node linkType: hard