NativeScript / NativeScript/nativescript-cli
Can the Podfile generation better handle logical blocks
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- JavaScript
- Star
- 1.1k
- Fork
- 204
- Merge trung bình
- 1 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 8
Mô tả
Is your feature request related to a problem? Please describe.
I wish I could apply variable logic when defining iOS deployment target in the application Podfile.
To set the IPHONEOS_DEPLOYMENT_TARGET we must define the platform version in two separate files to ensure both the target application and all dependencies meet our minimum desired version.
- App_Resources/iOS/build.xcconfig
IPHONEOS_DEPLOYMENT_TARGET=16 - App_Resources/iOS/Podfile
platform :ios, '16.0'
As suggested in the troubleshooting documentation, to ensure that all dependencies are also configured to this target it is suggested that we do the following... which works fine.
platform :ios, '13.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
end
end
end
This makes 3 places where I need to update the target version for iOS.
Inspired by this answer, if I try to apply any kind of logic in the application Podfile, it is either stripped by the CocoaPodsPlatformManager or ignored altogether.
Doing this:
app_ios_deployment_target = Gem::Version.new('16.0')
platform :ios, app_ios_deployment_target.version
Results in this:
platform :ios,
It looks like the Regex is trying to match a platform within quotes('") only.
^\\s*?#\\s*?(platform\\b\\s*?\\:\\s*?ios\\b(?:,\\s*?['"](.+)['"])?)
Ruby will also complain the variable app_ios_deployment_target does not exist, which is true because only the line matched by the Regex above is hoisted above any post_install hooks and all other code blocks are lost.
Describe the solution you'd like
It would be great if CocoaPodsPlatformManager.selectPlatformDataFromProjectPodfile could be expanded to match other expressions.
It would also be great if all other lines that are not the platform definition and are outside of hooks are hoisted first, so that variables could be used.
This could mean that we can have one source of truth when defining the iOS target. Which could be in App_Resources/iOS/build.xcconfig and the read from the Podfile, or better yet an environment variable.
Describe alternatives you've considered
No response
Anything else?
No response
Please accept these terms
- I have searched the existing issues as well as StackOverflow and this has not been posted before
- I agree to follow this project's Code of Conduct
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với lib/services/cocoapods-platform-manager.ts, đặc biệt là selectPlatformDataFromProjectPodfile và biểu thức so khớp nền tảng của nó. Theo dõi cách các dòng trong Podfile được đưa lên trước, cũng như cách các biểu thức Ruby không được đặt trong dấu ngoặc kép và mã nằm ngoài các hooks được xử lý. Được xem là hoàn tất khi deployment target dựa trên biến được yêu cầu và các dòng điều kiện tiên quyết vẫn có thể sử dụng mà không bị loại bỏ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- ruby, typescript
- Lĩnh vực
- cli, mobile
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100