Can the Podfile generation better handle logical blocks
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 35/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- ruby, typescript
调研方向
从 lib/services/cocoapods-platform-manager.ts 开始,重点查看 selectPlatformDataFromProjectPodfile 及其平台匹配表达式。跟踪 Podfile 行是如何被提升的,以及未加引号的 Ruby 表达式和 hooks 外部的代码是如何处理的。完成的标准是,所请求的基于变量的 deployment target 和前置条件行仍可使用,且不会被剥离。
由索引模型根据 Issue 内容生成。
描述
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
- 主要语言
- JavaScript
- 星标
- 1.1k
- 派生
- 204
- 平均合并
- 1 天 9 小时
- 30 天内合并 PR
- 8
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NativeScript/nativescript-cli 的其他 Issue
-
in-progress
NativeScript/nativescript-cli#6140 · 2 条评论 · 已指派 1 人 ·
-
NativeScript/nativescript-cli#6090 · 已指派 1 人 ·
-
in progress
NativeScript/nativescript-cli#6015 · 1 个 reaction · 已指派 1 人 ·
-
question
难度 4/5 3-5 天 新手友好度 48/100
NativeScript/nativescript-cli#5992 · 5 条评论 ·
-
feature-pending-triage
难度 4/5 3-5 天 新手友好度 35/100
NativeScript/nativescript-cli#5975 ·
查看 NativeScript/nativescript-cli 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
avniproject/avni-client#2135 ·
-
automated broken-link
难度 1/5 1 小时以内 新手友好度 85/100
-
agent/security hive/hosted-available-lke648397-260827-5n31 security
难度 2/5 1-3 小时 新手友好度 84/100
-
enhancement
难度 2/5 1-3 小时 新手友好度 70/100
babalae/bettergi-scripts-list#3674 ·
-
A-Release-Notes C-Editing D-Modest S-Ready-For-Implementation
难度 2/5 1-3 小时 新手友好度 72/100
bevyengine/bevy-website#2595 ·