mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-02-01 17:41:37 -05:00
* fix: set up Ruby before linting in Github Actions * chore: separate linting from fixing Before we commit we want to fix as much as possible, but when we're checking a pull request we're not going to commit anything so we want to know about all the problems, including the fixable ones.
154 lines
5.8 KiB
Ruby
154 lines
5.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# setup instructions from https://www.npmjs.com/package/react-native-permissions
|
|
def node_require( script )
|
|
# Resolve script with node to allow for hoisting
|
|
require Pod::Executable.execute_command(
|
|
"node",
|
|
[
|
|
"-p", "require.resolve('#{script}', {paths: [process.argv[1]]})",
|
|
__dir__
|
|
]
|
|
).strip
|
|
end
|
|
|
|
node_require( "react-native/scripts/react_native_pods.rb" )
|
|
node_require( "react-native-permissions/scripts/setup.rb" )
|
|
|
|
platform :ios, min_ios_version_supported
|
|
prepare_react_native_project!
|
|
|
|
# ⬇️ uncomment wanted permissions
|
|
setup_permissions(
|
|
[
|
|
# 'AppTrackingTransparency',
|
|
# 'BluetoothPeripheral',
|
|
# 'Calendars',
|
|
"Camera",
|
|
# 'Contacts',
|
|
# 'FaceID',
|
|
"LocationAccuracy",
|
|
"LocationAlways",
|
|
"LocationWhenInUse",
|
|
"MediaLibrary",
|
|
"Microphone",
|
|
# 'Motion',
|
|
# 'Notifications',
|
|
"PhotoLibraryAddOnly",
|
|
"PhotoLibrary"
|
|
# 'Reminders',
|
|
# 'Siri',
|
|
# 'SpeechRecognition',
|
|
# 'StoreKit',
|
|
]
|
|
)
|
|
|
|
# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
|
|
# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded
|
|
#
|
|
# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js`
|
|
# ```js
|
|
# module.exports = {
|
|
# dependencies: {
|
|
# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
|
|
# ```
|
|
# flipper_config = ENV["NO_FLIPPER"] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
|
|
|
|
linkage = ENV.fetch( "USE_FRAMEWORKS", nil )
|
|
unless linkage.nil?
|
|
Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
|
|
use_frameworks! linkage: linkage.to_sym
|
|
end
|
|
|
|
target "iNaturalistReactNative" do
|
|
config = use_native_modules!
|
|
|
|
use_react_native!(
|
|
path: config[:reactNativePath],
|
|
# Enables Flipper.
|
|
#
|
|
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
|
# you should disable the next line.
|
|
# :flipper_configuration => flipper_config,
|
|
# An absolute path to your application root.
|
|
app_path: "#{Pod::Config.instance.installation_root}/.."
|
|
)
|
|
pod "React-jsi", path: "../node_modules/react-native/ReactCommon/jsi", modular_headers: true
|
|
|
|
pod "react-native-config", path: "../node_modules/react-native-config"
|
|
|
|
pod "RNVectorIcons", path: "../node_modules/react-native-vector-icons"
|
|
|
|
envfiles = {
|
|
"Debug" => "$(PODS_ROOT)/../../.env.staging",
|
|
"Release" => "$(PODS_ROOT)/../../.env"
|
|
}.freeze
|
|
|
|
post_install do | installer |
|
|
# use different .env files for staging and production
|
|
# https://github.com/luggit/react-native-config#ios-1
|
|
installer.pods_project.targets.each do | target |
|
|
target.build_configurations.each do | build_config |
|
|
# the following two lines allow the app to build with XCode 14.3 RC
|
|
# https://stackoverflow.com/questions/72729591/fbreactnativespec-h-error-after-upgrading-from-0-68-x-to-0-69-0/74487309#74487309
|
|
build_config.build_settings["SWIFT_VERSION"] = "5.2"
|
|
build_config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "12.4"
|
|
if target.name == "react-native-config"
|
|
build_config.build_settings["ENVFILE"] = envfiles[build_config.name]
|
|
end
|
|
end
|
|
end
|
|
|
|
# code below appears to be necessary for building pods with XCode 14: https://github.com/facebook/react-native/issues/34673#issuecomment-1252114414
|
|
# https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
|
|
react_native_post_install(
|
|
installer,
|
|
config[:reactNativePath],
|
|
mac_catalyst_enabled: false
|
|
)
|
|
# Add these lines for Xcode 14 builds
|
|
installer.generated_projects.each do | project |
|
|
project.targets.each do | target |
|
|
target.build_configurations.each do | build_config |
|
|
build_config.build_settings["DEVELOPMENT_TEAM"] = "iNaturalist, LLC"
|
|
end
|
|
end
|
|
end
|
|
# End of added lines
|
|
# https://github.com/Agontuk/react-native-geolocation-service/issues/287#issuecomment-980772489
|
|
installer.pods_project.targets.each do | target |
|
|
target.build_configurations.each do | build_config |
|
|
build_config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
|
|
# code below appears to be necessary for building pods with XCode 14:
|
|
# https://github.com/facebook/react-native/issues/34673#issuecomment-1252114414
|
|
build_config.build_settings["DEVELOPMENT_TEAM"] = "iNaturalist, LLC"
|
|
build_config.build_settings["APPLICATION_EXTENSION_API_ONLY"] = "NO"
|
|
build_config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "$(inherited)"
|
|
end
|
|
end
|
|
|
|
installer.target_installation_results.pod_target_installation_results.each_value do | inst_result |
|
|
inst_result.native_target.build_configurations.each do | build_config |
|
|
# For third party modules who have React-bridging dependency to search correct headers
|
|
build_config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
|
|
build_config.build_settings["HEADER_SEARCH_PATHS"] +=
|
|
'"$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" '
|
|
build_config.build_settings["HEADER_SEARCH_PATHS"] +=
|
|
'"$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers" '
|
|
end
|
|
end
|
|
# react_native_post_install(installer)
|
|
`sed -i -e $'s/__IPHONE_10_0/__IPHONE_12_0/' Pods/RCT-Folly/folly/portability/Time.h`
|
|
end
|
|
end
|
|
|
|
target "iNaturalistReactNative-ShareExtension" do
|
|
use_react_native!(
|
|
# to enable hermes on iOS, change `false` to `true` and then install pods
|
|
hermes_enabled: true
|
|
)
|
|
|
|
pod "RNShareMenu", path: "../node_modules/react-native-share-menu"
|
|
# Manually link packages here to keep your extension bundle size minimal
|
|
end
|