camera podspec: mirror darwin/Camera on every build, not just pod install
`prepare_command` runs only on `pod install`. Mid-iteration Swift edits to `darwin/Camera/*.swift` would never reach the built binary until the user ran pod install or cleaned the Pods dir — confusing during debugging (NSLog/diag additions silently absent from the running app). Add a `script_phases` build phase to both podspecs that rsyncs darwin/Camera into Classes/Camera-shared before each compile. The existing `prepare_command` stays as the install-time primer that gives CocoaPods the initial file set to glob; the build phase keeps contents fresh on every Swift edit thereafter. Verified: the resulting binary now contains the NSLog strings that the prior build was missing. (Adding new files to darwin/Camera/ still requires pod install so CocoaPods' source_files glob picks them up — script_phases only refreshes content of files CocoaPods already knows about.)
This commit is contained in:
@@ -9,9 +9,26 @@ Pod::Spec.new do |s|
|
||||
# Mirror the shared `darwin/Camera/` Swift files into a local
|
||||
# `Classes/Camera-shared/` so CocoaPods picks them up via the
|
||||
# normal glob — neither symlinks nor `../` escapes work
|
||||
# (Pathname.glob bails on both). The mirror runs on every
|
||||
# `pod install`; the destination is `.gitignore`'d.
|
||||
# (Pathname.glob bails on both).
|
||||
#
|
||||
# `prepare_command` only runs on `pod install`. Swift edits in
|
||||
# `darwin/Camera/` between installs would never reach the built
|
||||
# binary — the mirror would be stale. The build script phase
|
||||
# below re-runs the mirror before each compile to keep contents
|
||||
# fresh.
|
||||
s.prepare_command = 'rm -rf Classes/Camera-shared && cp -R ../darwin/Camera Classes/Camera-shared'
|
||||
s.script_phases = [{
|
||||
:name => 'Mirror darwin/Camera',
|
||||
:execution_position => :before_compile,
|
||||
:script => <<-CMD
|
||||
set -e
|
||||
SRC="${PODS_TARGET_SRCROOT}/../darwin/Camera"
|
||||
DEST="${PODS_TARGET_SRCROOT}/Classes/Camera-shared"
|
||||
[ -d "$SRC" ] || exit 0
|
||||
mkdir -p "$DEST"
|
||||
rsync -a --delete "$SRC/" "$DEST/"
|
||||
CMD
|
||||
}]
|
||||
s.source_files = 'Classes/**/*.swift'
|
||||
s.frameworks = ['AVFoundation', 'CoreMedia', 'CoreVideo', 'Photos', 'PhotosUI']
|
||||
s.dependency 'Flutter'
|
||||
|
||||
@@ -6,10 +6,27 @@ Pod::Spec.new do |s|
|
||||
s.license = { :file => '../LICENSE' }
|
||||
s.author = { 'Swipelab' => 'hello@swipelab.co' }
|
||||
s.source = { :path => '.' }
|
||||
# See the matching note in `ios/ux.podspec` — mirror the shared
|
||||
# `darwin/Camera/` Swift files into a local `Classes/Camera-shared/`
|
||||
# at install time so CocoaPods picks them up via the normal glob.
|
||||
# `Classes/Camera-shared/` mirrors the shared `darwin/Camera/`
|
||||
# Swift files. `prepare_command` runs only on `pod install`, so
|
||||
# mid-iteration edits to darwin/Camera/*.swift wouldn't reach the
|
||||
# built binary until pods were re-installed. Run the mirror as a
|
||||
# build script phase too (before compile) so the latest source is
|
||||
# always picked up. The two are belt-and-suspenders — pod install
|
||||
# primes the file set so CocoaPods globs it; the build phase keeps
|
||||
# contents fresh on every subsequent Swift change.
|
||||
s.prepare_command = 'rm -rf Classes/Camera-shared && cp -R ../darwin/Camera Classes/Camera-shared'
|
||||
s.script_phases = [{
|
||||
:name => 'Mirror darwin/Camera',
|
||||
:execution_position => :before_compile,
|
||||
:script => <<-CMD
|
||||
set -e
|
||||
SRC="${PODS_TARGET_SRCROOT}/../darwin/Camera"
|
||||
DEST="${PODS_TARGET_SRCROOT}/Classes/Camera-shared"
|
||||
[ -d "$SRC" ] || exit 0
|
||||
mkdir -p "$DEST"
|
||||
rsync -a --delete "$SRC/" "$DEST/"
|
||||
CMD
|
||||
}]
|
||||
s.source_files = 'Classes/**/*.swift'
|
||||
s.frameworks = ['AVFoundation', 'CoreMedia', 'CoreVideo']
|
||||
s.dependency 'FlutterMacOS'
|
||||
|
||||
Reference in New Issue
Block a user