Can the Podfile generation better handle logical blocks

Offen
#5,805 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
ruby, typescript
Bereich
cli, mobile

Rechercherichtung

Beginne mit lib/services/cocoapods-platform-manager.ts, insbesondere mit selectPlatformDataFromProjectPodfile und seinem Ausdruck zur Plattformübereinstimmung. Verfolge, wie Podfile-Zeilen nach oben verschoben werden und wie nicht in Anführungszeichen gesetzte Ruby-Ausdrücke sowie Code außerhalb von Hooks behandelt werden. Als erledigt gilt die Aufgabe, wenn das angeforderte variablenbasierte Deployment Target und die erforderlichen Zeilen nutzbar bleiben, ohne entfernt zu werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

feature-pending-triage
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.

  1. App_Resources/iOS/build.xcconfig
    IPHONEOS_DEPLOYMENT_TARGET=16
  2. 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

*See https://docs.nativescript.org/troubleshooting#cocoapods-could-not-find-compatible-versions-for-pod-higher-minimum-deployment-target

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
Vorherrschende Sprache
JavaScript
Sterne
1.1k
Forks
204
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
8

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus NativeScript/nativescript-cli

Alle Issues in NativeScript/nativescript-cli

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.