From 3a66bf328e109a941512584e13347b3b9c3222d4 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 14:04:44 +0900 Subject: [PATCH 01/28] =?UTF-8?q?[Feat]=20Tuist=20update=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 5 +++-- Scripts/update_tuist.sh | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 Scripts/update_tuist.sh diff --git a/Makefile b/Makefile index d4a8ba4a..d6a55fc9 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +update_tuist: + sh ./Scripts/update_tuist.sh + open_plist: open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift @@ -48,5 +51,3 @@ download-env: download-googleinfo: $(call download_file, Projects/App/Resources, $(token),GoogleService-Info.plist) $(call download_file, Projects/App/Resources, $(token),GoogleService-Info-debugging.plist) - - diff --git a/Scripts/update_tuist.sh b/Scripts/update_tuist.sh new file mode 100644 index 00000000..6fbb18de --- /dev/null +++ b/Scripts/update_tuist.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -e + +TUIST_VERSION="4.33.0" + +echo "[1] Tuist 버전 확인 중..." +if command -v tuist &> /dev/null; then + CURRENT_TUIST_VERSION=$(tuist version | cut -d. -f1) + if [ "$CURRENT_TUIST_VERSION" -lt 4 ]; then + echo "[1-1] 구버전(4 미만) Tuist 감지: 제거를 진행합니다." + curl -Ls https://uninstall.tuist.io | bash + else + echo "[1-1] Tuist 버전이 $CURRENT_TUIST_VERSION.x 이므로 제거를 건너뜁니다." + fi +else + echo "[1-1] Tuist가 설치되어 있지 않아 제거할 필요가 없습니다." +fi + +echo "[2] mise 설치 확인 중..." +if [ ! -f "$HOME/.local/bin/mise" ]; then + echo "[2-1] mise가 설치되어 있지 않습니다. 설치를 진행합니다." + curl https://mise.run | sh + export PATH="$HOME/.local/bin:$PATH" +else + echo "[2-1] mise가 이미 설치되어 있습니다." +fi + +echo "[3] mise 활성화 여부 확인 중..." +if ! grep -q 'eval "$(~/.local/bin/mise activate zsh)"' ~/.zshrc; then + echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc + echo "[3-1] ~/.zshrc에 mise 활성화 스크립트를 추가했습니다." +else + echo "[3-1] 이미 ~/.zshrc에 mise 활성화 스크립트가 있습니다." +fi + +echo "[4] Tuist 버전 설정..." +"$HOME/.local/bin/mise" install tuist@"$TUIST_VERSION" +"$HOME/.local/bin/mise" use -g tuist@"$TUIST_VERSION" From 5d9bd9f128619bcb4305a8405d3009967b6fa123 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 14:24:26 +0900 Subject: [PATCH 02/28] =?UTF-8?q?[Remove]=20tuist-version=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .tuist-version | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .tuist-version diff --git a/.tuist-version b/.tuist-version deleted file mode 100644 index 0f414fd3..00000000 --- a/.tuist-version +++ /dev/null @@ -1 +0,0 @@ -3.28.0 \ No newline at end of file From d3c53b101b250444280682294991ef01eee46621 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:12:03 +0900 Subject: [PATCH 03/28] =?UTF-8?q?[Fix]=20Fastfile,=20Makefile=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=ED=99=94=20=EC=BB=A4=EB=A9=98=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 47 +++++++++++++++++++++++---------- fastlane/Fastfile | 66 ++++++++++++++++------------------------------- 2 files changed, 56 insertions(+), 57 deletions(-) diff --git a/Makefile b/Makefile index d6a55fc9..ff393517 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,28 @@ -update_tuist: - sh ./Scripts/update_tuist.sh - -open_plist: - open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift +init: fetch gen + +fetch: + tuist clean + tuist install +gen: + tuist generate --no-open -open_config: - open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift +getig: + @echo "Select config source:" + @echo " 1) global" + @echo " 2) local" + @read -p "Enter choice [1 or 2]: " choice; \ + if [ "$$choice" = "1" ]; then \ + echo "Using GITHUB_ACCESS_TOKEN from global config"; \ + GITHUB_ACCESS_TOKEN=$$(git config --global user.password); \ + elif [ "$$choice" = "2" ]; then \ + echo "Using GITHUB_ACCESS_TOKEN from local config"; \ + GITHUB_ACCESS_TOKEN=$$(git config user.password); \ + else \ + echo "Invalid choice: $$choice. Aborting..."; \ + exit 1; \ + fi; \ + $(MAKE) download-privates token=$$GITHUB_ACCESS_TOKEN -clean_xcode: - rm -rf ~/Library/Developer/Xcode/DerivedData/* - clean: rm -rf **/**/**/*.xcodeproj rm -rf **/**/*.xcodeproj @@ -20,10 +33,18 @@ clean: rm -rf **/Derived/ rm -rf Derived/ -clean_all: - make clean - make clean_xcode +update_tuist: + sh ./Scripts/update_tuist.sh + +open_plist: + open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift +open_config: + open -a Xcode Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift + +clean_xcode_cache: + rm -rf ~/Library/Developer/Xcode/DerivedData/* + BASE_URL = https://raw.githubusercontent.com/Pepsi-Club/WhereMyBus-ignored/main define download_file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 45f7e4a8..4cb7d99b 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -4,50 +4,28 @@ SCHEME = "App" default_platform(:ios) platform :ios do - desc "Regenerate" - lane :regenerate do |options| - Dir.chdir("../") do - sh("make clean_all") - sh("fastlane getig") - sh("fastlane setpj") - end - end - - desc "Download Ignored" - lane :getig do |options| - Dir.chdir("../") do - github_access_token = sh("git config --global user.password") - sh("make download-privates token=#{github_access_token}") - end - end - - desc "Set Project" - lane :setpj do |options| - Dir.chdir("../") do - sh("tuist clean") - sh("tuist fetch") - sh("tuist generate") - match( - type: "development", - git_url: ENV["MATCH_URL"], - keychain_password: ENV["MATCH_PASSWORD"], - app_identifier: [ - "com.Pepsi-Club.WhereMyBus", - "com.Pepsi-Club.WhereMyBus.Widget" - ], - readonly: true - ) - match( - type: "appstore", - git_url: ENV["MATCH_URL"], - keychain_password: ENV["MATCH_PASSWORD"], - app_identifier: [ - "com.Pepsi-Club.WhereMyBus", - "com.Pepsi-Club.WhereMyBus.Widget" - ], - readonly: true - ) - end + desc "인증서 가져오기" + lane :sync do |options| + match( + type: "development", + git_url: ENV["MATCH_URL"], + keychain_password: ENV["MATCH_PASSWORD"], + app_identifier: [ + "com.Pepsi-Club.WhereMyBus", + "com.Pepsi-Club.WhereMyBus.Widget" + ], + readonly: true + ) + match( + type: "appstore", + git_url: ENV["MATCH_URL"], + keychain_password: ENV["MATCH_PASSWORD"], + app_identifier: [ + "com.Pepsi-Club.WhereMyBus", + "com.Pepsi-Club.WhereMyBus.Widget" + ], + readonly: true + ) end desc "local Push to TestFlight" From 79c4c043f67c58ebb829932d2a63b2022ad6b7f3 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:12:43 +0900 Subject: [PATCH 04/28] =?UTF-8?q?[Fix]=20XCFramework=20=ED=8F=B4=EB=8D=94?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99=20=EB=B0=8F=20=EB=A0=88=EA=B1=B0=EC=8B=9C?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NMapsGeometry.xcframework/Info.plist | 0 .../Headers/NMGBounds.h | 0 .../Headers/NMGConstants.h | 0 .../Headers/NMGGeometry.h | 0 .../Headers/NMGLatLng.h | 0 .../Headers/NMGLatLngBounds.h | 0 .../Headers/NMGLineString.h | 0 .../Headers/NMGMultiPolygon.h | 0 .../Headers/NMGPoint.h | 0 .../Headers/NMGPolygon.h | 0 .../Headers/NMGSegment.h | 0 .../Headers/NMGTm128.h | 0 .../Headers/NMGUtils.h | 0 .../NMapsGeometry.framework/Headers/NMGUtmk.h | 0 .../Headers/NMGWebMercatorCoord.h | 0 .../Headers/NMapsGeometry.h | 0 .../NMapsGeometry.framework/Info.plist | Bin .../Modules/module.modulemap | 0 .../NMapsGeometry.framework/NMapsGeometry | Bin .../Headers/NMGBounds.h | 0 .../Headers/NMGConstants.h | 0 .../Headers/NMGGeometry.h | 0 .../Headers/NMGLatLng.h | 0 .../Headers/NMGLatLngBounds.h | 0 .../Headers/NMGLineString.h | 0 .../Headers/NMGMultiPolygon.h | 0 .../Headers/NMGPoint.h | 0 .../Headers/NMGPolygon.h | 0 .../Headers/NMGSegment.h | 0 .../Headers/NMGTm128.h | 0 .../Headers/NMGUtils.h | 0 .../NMapsGeometry.framework/Headers/NMGUtmk.h | 0 .../Headers/NMGWebMercatorCoord.h | 0 .../Headers/NMapsGeometry.h | 0 .../NMapsGeometry.framework/Info.plist | Bin .../Modules/module.modulemap | 0 .../NMapsGeometry.framework/NMapsGeometry | Bin .../_CodeSignature/CodeResources | 0 .../NMapsMap.xcframework/Info.plist | 0 .../ios-arm64/NMapsMap.framework/Assets.car | Bin .../Base.lproj/Foundation.strings | Bin .../NMapsMap.framework/Headers/NMCBuilder.h | 0 .../NMapsMap.framework/Headers/NMCCluster.h | 0 .../Headers/NMCClusterMarkerInfo.h | 0 .../Headers/NMCClusterMarkerUpdater.h | 0 .../NMapsMap.framework/Headers/NMCClusterer.h | 0 .../Headers/NMCClustererUpdateCallback.h | 0 .../Headers/NMCClusteringKey.h | 0 .../Headers/NMCComplexBuilder.h | 0 .../Headers/NMCDefaultClusterMarkerUpdater.h | 0 .../Headers/NMCDefaultDistanceStrategy.h | 0 .../Headers/NMCDefaultLeafMarkerUpdater.h | 0 .../Headers/NMCDefaultMarkerManager.h | 0 .../Headers/NMCDefaultPositioningStrategy.h | 0 .../Headers/NMCDefaultTagMergeStrategy.h | 0 .../Headers/NMCDefaultThresholdStrategy.h | 0 .../Headers/NMCDistanceStrategy.h | 0 .../NMapsMap.framework/Headers/NMCLeaf.h | 0 .../Headers/NMCLeafMarkerInfo.h | 0 .../Headers/NMCLeafMarkerUpdater.h | 0 .../Headers/NMCMarkerInfo.h | 0 .../Headers/NMCMarkerManager.h | 0 .../NMapsMap.framework/Headers/NMCNode.h | 0 .../Headers/NMCPositioningStrategy.h | 0 .../Headers/NMCTagMergeStrategy.h | 0 .../Headers/NMCThresholdStrategy.h | 0 .../Headers/NMFArrowheadPath.h | 0 .../Headers/NMFAuthManager.h | 0 .../Headers/NMFCameraCommon.h | 0 .../Headers/NMFCameraPosition.h | 0 .../Headers/NMFCameraUpdate.h | 0 .../Headers/NMFCameraUpdateParams.h | 0 .../Headers/NMFCircleOverlay.h | 0 .../Headers/NMFCompassView.h | 0 .../Headers/NMFFoundation.h | 0 .../NMapsMap.framework/Headers/NMFGeometry.h | 0 .../Headers/NMFGroundOverlay.h | 0 .../Headers/NMFIndoorLevel.h | 0 .../Headers/NMFIndoorLevelPickerView.h | 0 .../Headers/NMFIndoorRegion.h | 0 .../Headers/NMFIndoorSelection.h | 0 .../Headers/NMFIndoorSelectionDelegate.h | 0 .../Headers/NMFIndoorView.h | 0 .../Headers/NMFIndoorZone.h | 0 .../Headers/NMFInfoWindow.h | 0 .../Headers/NMFInfoWindowDefaultTextSource.h | 0 .../Headers/NMFLocationButton.h | 0 .../Headers/NMFLocationManager.h | 0 .../Headers/NMFLocationOverlay.h | 0 .../Headers/NMFMapView+IBAdditions.h | 0 .../NMapsMap.framework/Headers/NMFMapView.h | 0 .../Headers/NMFMapViewCameraDelegate.h | 0 .../Headers/NMFMapViewDelegate.h | 0 .../Headers/NMFMapViewOptionDelegate.h | 0 .../Headers/NMFMapViewTouchDelegate.h | 0 .../NMapsMap.framework/Headers/NMFMarker.h | 0 .../Headers/NMFMarkerConstants.h | 0 .../Headers/NMFMultipartPath.h | 0 .../Headers/NMFMyPositionMode.h | 0 .../Headers/NMFNaverMapView.h | 0 .../Headers/NMFOfflinePack.h | 0 .../Headers/NMFOfflineRegion.h | 0 .../Headers/NMFOfflineStorage.h | 0 .../NMapsMap.framework/Headers/NMFOverlay.h | 0 .../Headers/NMFOverlayImage.h | 0 .../NMapsMap.framework/Headers/NMFPath.h | 0 .../NMapsMap.framework/Headers/NMFPathColor.h | 0 .../NMapsMap.framework/Headers/NMFPickable.h | 0 .../Headers/NMFPolygonOverlay.h | 0 .../Headers/NMFPolylineOverlay.h | 0 .../Headers/NMFProjection.h | 0 .../Headers/NMFRendererOptions.h | 0 .../NMapsMap.framework/Headers/NMFScaleView.h | 0 .../NMapsMap.framework/Headers/NMFSymbol.h | 0 .../Headers/NMFTileCoverHelper.h | 0 .../NMapsMap.framework/Headers/NMFTileId.h | 0 .../NMapsMap.framework/Headers/NMFTypes.h | 0 .../NMapsMap.framework/Headers/NMFUtils.h | 0 .../Headers/NMFZoomControlView.h | 0 .../NMapsMap.framework/Headers/NMapsMap.h | 0 .../Headers/NSBundle+NMFAdditions.h | 0 .../ios-arm64/NMapsMap.framework/Info.plist | Bin .../ios-arm64/NMapsMap.framework/LICENSE | 0 .../Modules/module.modulemap | 0 .../objects-11.0+.nib | Bin .../NMFIndoorLevelPickerCell.nib/runtime.nib | Bin .../objects-11.0+.nib | Bin .../NMFIndoorLevelPickerView.nib/runtime.nib | Bin .../NMFInfoWindowDefaultTextSource.nib | Bin .../NMFNaverMapView.nib/objects-11.0+.nib | Bin .../NMFNaverMapView.nib/runtime.nib | Bin .../NMapsMap.framework/NMFScaleView.nib | Bin .../NMapsMap.framework/NMFZoomControlView.nib | Bin .../ios-arm64/NMapsMap.framework/NMapsMap | Bin .../ios-arm64/NMapsMap.framework/NOTICE | 0 .../NMapsMap.framework/default.metallib | Bin .../en.lproj/Foundation.strings | Bin .../en.lproj/Localizable.strings | Bin .../ja.lproj/Foundation.strings | Bin .../ja.lproj/Localizable.strings | Bin .../ko.lproj/Foundation.strings | Bin .../ko.lproj/Foundation.stringsdict | Bin .../ko.lproj/Localizable.strings | Bin .../zh-Hans.lproj/Foundation.strings | Bin .../zh-Hans.lproj/Localizable.strings | Bin .../NMapsMap.framework/Assets.car | Bin .../Base.lproj/Foundation.strings | Bin .../NMapsMap.framework/Headers/NMCBuilder.h | 0 .../NMapsMap.framework/Headers/NMCCluster.h | 0 .../Headers/NMCClusterMarkerInfo.h | 0 .../Headers/NMCClusterMarkerUpdater.h | 0 .../NMapsMap.framework/Headers/NMCClusterer.h | 0 .../Headers/NMCClustererUpdateCallback.h | 0 .../Headers/NMCClusteringKey.h | 0 .../Headers/NMCComplexBuilder.h | 0 .../Headers/NMCDefaultClusterMarkerUpdater.h | 0 .../Headers/NMCDefaultDistanceStrategy.h | 0 .../Headers/NMCDefaultLeafMarkerUpdater.h | 0 .../Headers/NMCDefaultMarkerManager.h | 0 .../Headers/NMCDefaultPositioningStrategy.h | 0 .../Headers/NMCDefaultTagMergeStrategy.h | 0 .../Headers/NMCDefaultThresholdStrategy.h | 0 .../Headers/NMCDistanceStrategy.h | 0 .../NMapsMap.framework/Headers/NMCLeaf.h | 0 .../Headers/NMCLeafMarkerInfo.h | 0 .../Headers/NMCLeafMarkerUpdater.h | 0 .../Headers/NMCMarkerInfo.h | 0 .../Headers/NMCMarkerManager.h | 0 .../NMapsMap.framework/Headers/NMCNode.h | 0 .../Headers/NMCPositioningStrategy.h | 0 .../Headers/NMCTagMergeStrategy.h | 0 .../Headers/NMCThresholdStrategy.h | 0 .../Headers/NMFArrowheadPath.h | 0 .../Headers/NMFAuthManager.h | 0 .../Headers/NMFCameraCommon.h | 0 .../Headers/NMFCameraPosition.h | 0 .../Headers/NMFCameraUpdate.h | 0 .../Headers/NMFCameraUpdateParams.h | 0 .../Headers/NMFCircleOverlay.h | 0 .../Headers/NMFCompassView.h | 0 .../Headers/NMFFoundation.h | 0 .../NMapsMap.framework/Headers/NMFGeometry.h | 0 .../Headers/NMFGroundOverlay.h | 0 .../Headers/NMFIndoorLevel.h | 0 .../Headers/NMFIndoorLevelPickerView.h | 0 .../Headers/NMFIndoorRegion.h | 0 .../Headers/NMFIndoorSelection.h | 0 .../Headers/NMFIndoorSelectionDelegate.h | 0 .../Headers/NMFIndoorView.h | 0 .../Headers/NMFIndoorZone.h | 0 .../Headers/NMFInfoWindow.h | 0 .../Headers/NMFInfoWindowDefaultTextSource.h | 0 .../Headers/NMFLocationButton.h | 0 .../Headers/NMFLocationManager.h | 0 .../Headers/NMFLocationOverlay.h | 0 .../Headers/NMFMapView+IBAdditions.h | 0 .../NMapsMap.framework/Headers/NMFMapView.h | 0 .../Headers/NMFMapViewCameraDelegate.h | 0 .../Headers/NMFMapViewDelegate.h | 0 .../Headers/NMFMapViewOptionDelegate.h | 0 .../Headers/NMFMapViewTouchDelegate.h | 0 .../NMapsMap.framework/Headers/NMFMarker.h | 0 .../Headers/NMFMarkerConstants.h | 0 .../Headers/NMFMultipartPath.h | 0 .../Headers/NMFMyPositionMode.h | 0 .../Headers/NMFNaverMapView.h | 0 .../Headers/NMFOfflinePack.h | 0 .../Headers/NMFOfflineRegion.h | 0 .../Headers/NMFOfflineStorage.h | 0 .../NMapsMap.framework/Headers/NMFOverlay.h | 0 .../Headers/NMFOverlayImage.h | 0 .../NMapsMap.framework/Headers/NMFPath.h | 0 .../NMapsMap.framework/Headers/NMFPathColor.h | 0 .../NMapsMap.framework/Headers/NMFPickable.h | 0 .../Headers/NMFPolygonOverlay.h | 0 .../Headers/NMFPolylineOverlay.h | 0 .../Headers/NMFProjection.h | 0 .../Headers/NMFRendererOptions.h | 0 .../NMapsMap.framework/Headers/NMFScaleView.h | 0 .../NMapsMap.framework/Headers/NMFSymbol.h | 0 .../Headers/NMFTileCoverHelper.h | 0 .../NMapsMap.framework/Headers/NMFTileId.h | 0 .../NMapsMap.framework/Headers/NMFTypes.h | 0 .../NMapsMap.framework/Headers/NMFUtils.h | 0 .../Headers/NMFZoomControlView.h | 0 .../NMapsMap.framework/Headers/NMapsMap.h | 0 .../Headers/NSBundle+NMFAdditions.h | 0 .../NMapsMap.framework/Info.plist | Bin .../NMapsMap.framework/LICENSE | 0 .../Modules/module.modulemap | 0 .../objects-11.0+.nib | Bin .../NMFIndoorLevelPickerCell.nib/runtime.nib | Bin .../objects-11.0+.nib | Bin .../NMFIndoorLevelPickerView.nib/runtime.nib | Bin .../NMFInfoWindowDefaultTextSource.nib | Bin .../NMFNaverMapView.nib/objects-11.0+.nib | Bin .../NMFNaverMapView.nib/runtime.nib | Bin .../NMapsMap.framework/NMFScaleView.nib | Bin .../NMapsMap.framework/NMFZoomControlView.nib | Bin .../NMapsMap.framework/NMapsMap | Bin .../NMapsMap.framework/NOTICE | 0 .../_CodeSignature/CodeResources | 0 .../NMapsMap.framework/default.metallib | Bin .../en.lproj/Foundation.strings | Bin .../en.lproj/Localizable.strings | Bin .../ja.lproj/Foundation.strings | Bin .../ja.lproj/Localizable.strings | Bin .../ko.lproj/Foundation.strings | Bin .../ko.lproj/Foundation.stringsdict | Bin .../ko.lproj/Localizable.strings | Bin .../zh-Hans.lproj/Foundation.strings | Bin .../zh-Hans.lproj/Localizable.strings | Bin Tuist/ProjectDescriptionHelpers/Path+.swift | 22 +++++++++++++ .../TargetDependency+Dependency.swift | 31 ++++++++++++++++++ .../TargetDependency+Feature.swift | 21 ++++++++++++ .../TargetDependency+Module.swift | 27 +++++++++++++++ 256 files changed, 101 insertions(+) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/Info.plist (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGBounds.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGConstants.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGGeometry.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLng.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLngBounds.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLineString.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGMultiPolygon.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPoint.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPolygon.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGSegment.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGTm128.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtils.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtmk.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMapsGeometry.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Info.plist (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Modules/module.modulemap (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/NMapsGeometry (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGBounds.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGConstants.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGGeometry.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLng.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLngBounds.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLineString.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGMultiPolygon.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPoint.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPolygon.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGSegment.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGTm128.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtils.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtmk.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMapsGeometry.h (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Info.plist (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Modules/module.modulemap (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/NMapsGeometry (100%) rename Frameworks/{NMapsMap => }/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/_CodeSignature/CodeResources (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/Info.plist (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Assets.car (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Base.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCBuilder.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCCluster.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterer.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusteringKey.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCComplexBuilder.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDistanceStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeaf.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerInfo.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCNode.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCPositioningStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCTagMergeStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCThresholdStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFArrowheadPath.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFAuthManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraCommon.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraPosition.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdateParams.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCircleOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCompassView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFFoundation.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGeometry.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGroundOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevel.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorRegion.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelection.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorZone.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindow.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationButton.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarker.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarkerConstants.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMultipartPath.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMyPositionMode.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFNaverMapView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflinePack.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineRegion.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineStorage.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlayImage.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPath.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPathColor.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPickable.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolygonOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolylineOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFProjection.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFRendererOptions.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFScaleView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFSymbol.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileCoverHelper.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileId.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTypes.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFUtils.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFZoomControlView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMapsMap.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Info.plist (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/LICENSE (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Modules/module.modulemap (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFScaleView.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFZoomControlView.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMapsMap (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NOTICE (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/default.metallib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.stringsdict (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Assets.car (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Base.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCBuilder.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCCluster.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterer.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusteringKey.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCComplexBuilder.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDistanceStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeaf.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerInfo.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCNode.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCPositioningStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCTagMergeStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCThresholdStrategy.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFArrowheadPath.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFAuthManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraCommon.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraPosition.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdateParams.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCircleOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCompassView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFFoundation.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGeometry.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGroundOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevel.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorRegion.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelection.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorZone.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindow.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationButton.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationManager.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarker.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarkerConstants.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMultipartPath.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMyPositionMode.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFNaverMapView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflinePack.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineRegion.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineStorage.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlayImage.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPath.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPathColor.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPickable.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolygonOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolylineOverlay.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFProjection.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFRendererOptions.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFScaleView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFSymbol.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileCoverHelper.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileId.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTypes.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFUtils.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFZoomControlView.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMapsMap.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Info.plist (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/LICENSE (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Modules/module.modulemap (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFScaleView.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFZoomControlView.nib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMapsMap (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NOTICE (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/_CodeSignature/CodeResources (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/default.metallib (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.stringsdict (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Localizable.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Foundation.strings (100%) rename Frameworks/{NMapsMap => }/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Localizable.strings (100%) create mode 100644 Tuist/ProjectDescriptionHelpers/Path+.swift create mode 100644 Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift create mode 100644 Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift create mode 100644 Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/Info.plist b/Frameworks/NMapsGeometry.xcframework/Info.plist similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/Info.plist rename to Frameworks/NMapsGeometry.xcframework/Info.plist diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGBounds.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGBounds.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGBounds.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGBounds.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGConstants.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGConstants.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGConstants.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGConstants.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGGeometry.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGGeometry.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGGeometry.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGGeometry.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLng.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLng.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLng.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLng.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLngBounds.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLngBounds.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLngBounds.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLatLngBounds.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLineString.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLineString.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLineString.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGLineString.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGMultiPolygon.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGMultiPolygon.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGMultiPolygon.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGMultiPolygon.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPoint.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPoint.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPoint.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPoint.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPolygon.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPolygon.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPolygon.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGPolygon.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGSegment.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGSegment.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGSegment.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGSegment.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGTm128.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGTm128.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGTm128.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGTm128.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtils.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtils.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtils.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtils.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtmk.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtmk.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtmk.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGUtmk.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMapsGeometry.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMapsGeometry.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMapsGeometry.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Headers/NMapsGeometry.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Info.plist b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Info.plist similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Info.plist rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Info.plist diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Modules/module.modulemap b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Modules/module.modulemap similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Modules/module.modulemap rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/Modules/module.modulemap diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/NMapsGeometry b/Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/NMapsGeometry similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/NMapsGeometry rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_armv7/NMapsGeometry.framework/NMapsGeometry diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGBounds.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGBounds.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGBounds.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGBounds.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGConstants.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGConstants.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGConstants.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGConstants.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGGeometry.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGGeometry.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGGeometry.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGGeometry.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLng.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLng.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLng.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLng.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLngBounds.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLngBounds.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLngBounds.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLatLngBounds.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLineString.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLineString.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLineString.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGLineString.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGMultiPolygon.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGMultiPolygon.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGMultiPolygon.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGMultiPolygon.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPoint.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPoint.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPoint.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPoint.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPolygon.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPolygon.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPolygon.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGPolygon.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGSegment.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGSegment.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGSegment.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGSegment.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGTm128.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGTm128.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGTm128.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGTm128.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtils.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtils.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtils.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtils.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtmk.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtmk.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtmk.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGUtmk.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMGWebMercatorCoord.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMapsGeometry.h b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMapsGeometry.h similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMapsGeometry.h rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Headers/NMapsGeometry.h diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Info.plist b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Info.plist similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Info.plist rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Info.plist diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Modules/module.modulemap b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Modules/module.modulemap similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Modules/module.modulemap rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/Modules/module.modulemap diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/NMapsGeometry b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/NMapsGeometry similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/NMapsGeometry rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/NMapsGeometry diff --git a/Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/_CodeSignature/CodeResources b/Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/_CodeSignature/CodeResources similarity index 100% rename from Frameworks/NMapsMap/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/_CodeSignature/CodeResources rename to Frameworks/NMapsGeometry.xcframework/ios-arm64_i386_x86_64-simulator/NMapsGeometry.framework/_CodeSignature/CodeResources diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/Info.plist b/Frameworks/NMapsMap.xcframework/Info.plist similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/Info.plist rename to Frameworks/NMapsMap.xcframework/Info.plist diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Assets.car b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Assets.car similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Assets.car rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Assets.car diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Base.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Base.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Base.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Base.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCBuilder.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCBuilder.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCBuilder.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCBuilder.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCCluster.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCCluster.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCCluster.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCCluster.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterer.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterer.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterer.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusterer.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusteringKey.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusteringKey.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusteringKey.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCClusteringKey.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCComplexBuilder.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCComplexBuilder.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCComplexBuilder.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCComplexBuilder.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDistanceStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDistanceStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDistanceStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCDistanceStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeaf.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeaf.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeaf.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeaf.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerInfo.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerInfo.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerInfo.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerInfo.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCMarkerManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCNode.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCNode.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCNode.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCNode.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCPositioningStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCPositioningStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCPositioningStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCPositioningStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCTagMergeStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCTagMergeStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCTagMergeStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCTagMergeStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCThresholdStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCThresholdStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCThresholdStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMCThresholdStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFArrowheadPath.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFArrowheadPath.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFArrowheadPath.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFArrowheadPath.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFAuthManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFAuthManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFAuthManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFAuthManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraCommon.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraCommon.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraCommon.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraCommon.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraPosition.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraPosition.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraPosition.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraPosition.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdate.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdateParams.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdateParams.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdateParams.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCameraUpdateParams.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCircleOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCircleOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCircleOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCircleOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCompassView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCompassView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCompassView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFCompassView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFFoundation.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFFoundation.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFFoundation.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFFoundation.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGeometry.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGeometry.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGeometry.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGeometry.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGroundOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGroundOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGroundOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFGroundOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevel.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevel.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevel.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevel.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorRegion.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorRegion.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorRegion.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorRegion.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelection.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelection.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelection.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelection.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorZone.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorZone.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorZone.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFIndoorZone.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindow.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindow.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindow.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindow.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationButton.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationButton.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationButton.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationButton.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFLocationOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarker.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarker.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarker.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarker.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarkerConstants.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarkerConstants.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarkerConstants.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMarkerConstants.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMultipartPath.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMultipartPath.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMultipartPath.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMultipartPath.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMyPositionMode.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMyPositionMode.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMyPositionMode.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFMyPositionMode.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFNaverMapView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFNaverMapView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFNaverMapView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFNaverMapView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflinePack.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflinePack.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflinePack.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflinePack.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineRegion.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineRegion.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineRegion.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineRegion.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineStorage.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineStorage.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineStorage.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOfflineStorage.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlayImage.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlayImage.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlayImage.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFOverlayImage.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPath.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPath.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPath.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPath.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPathColor.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPathColor.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPathColor.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPathColor.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPickable.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPickable.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPickable.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPickable.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolygonOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolygonOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolygonOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolygonOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolylineOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolylineOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolylineOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFPolylineOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFProjection.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFProjection.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFProjection.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFProjection.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFRendererOptions.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFRendererOptions.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFRendererOptions.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFRendererOptions.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFScaleView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFScaleView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFScaleView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFScaleView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFSymbol.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFSymbol.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFSymbol.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFSymbol.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileCoverHelper.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileCoverHelper.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileCoverHelper.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileCoverHelper.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileId.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileId.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileId.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTileId.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTypes.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTypes.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTypes.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFTypes.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFUtils.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFUtils.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFUtils.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFUtils.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFZoomControlView.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFZoomControlView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFZoomControlView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMFZoomControlView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMapsMap.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMapsMap.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMapsMap.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NMapsMap.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Info.plist b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Info.plist similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Info.plist rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Info.plist diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/LICENSE b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/LICENSE similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/LICENSE rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/LICENSE diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Modules/module.modulemap b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Modules/module.modulemap similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Modules/module.modulemap rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/Modules/module.modulemap diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFScaleView.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFScaleView.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFScaleView.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFScaleView.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFZoomControlView.nib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFZoomControlView.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFZoomControlView.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMFZoomControlView.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMapsMap b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMapsMap similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMapsMap rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NMapsMap diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NOTICE b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NOTICE similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NOTICE rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/NOTICE diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/default.metallib b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/default.metallib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/default.metallib rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/default.metallib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/en.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ja.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.stringsdict b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.stringsdict similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.stringsdict rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Foundation.stringsdict diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/ko.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64/NMapsMap.framework/zh-Hans.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Assets.car b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Assets.car similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Assets.car rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Assets.car diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Base.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Base.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Base.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Base.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCBuilder.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCBuilder.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCBuilder.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCBuilder.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCCluster.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCCluster.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCCluster.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCCluster.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerInfo.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterer.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterer.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterer.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusterer.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClustererUpdateCallback.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusteringKey.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusteringKey.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusteringKey.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCClusteringKey.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCComplexBuilder.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCComplexBuilder.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCComplexBuilder.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCComplexBuilder.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultClusterMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultDistanceStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultLeafMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultMarkerManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultPositioningStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultTagMergeStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDefaultThresholdStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDistanceStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDistanceStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDistanceStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCDistanceStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeaf.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeaf.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeaf.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeaf.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerInfo.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCLeafMarkerUpdater.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerInfo.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerInfo.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerInfo.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerInfo.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCMarkerManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCNode.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCNode.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCNode.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCNode.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCPositioningStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCPositioningStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCPositioningStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCPositioningStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCTagMergeStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCTagMergeStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCTagMergeStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCTagMergeStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCThresholdStrategy.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCThresholdStrategy.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCThresholdStrategy.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMCThresholdStrategy.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFArrowheadPath.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFArrowheadPath.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFArrowheadPath.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFArrowheadPath.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFAuthManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFAuthManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFAuthManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFAuthManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraCommon.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraCommon.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraCommon.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraCommon.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraPosition.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraPosition.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraPosition.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraPosition.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdate.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdateParams.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdateParams.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdateParams.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCameraUpdateParams.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCircleOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCircleOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCircleOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCircleOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCompassView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCompassView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCompassView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFCompassView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFFoundation.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFFoundation.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFFoundation.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFFoundation.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGeometry.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGeometry.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGeometry.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGeometry.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGroundOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGroundOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGroundOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFGroundOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevel.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevel.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevel.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevel.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorLevelPickerView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorRegion.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorRegion.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorRegion.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorRegion.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelection.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelection.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelection.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelection.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorSelectionDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorZone.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorZone.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorZone.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFIndoorZone.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindow.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindow.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindow.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindow.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFInfoWindowDefaultTextSource.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationButton.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationButton.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationButton.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationButton.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationManager.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationManager.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationManager.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationManager.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFLocationOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView+IBAdditions.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewCameraDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewOptionDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMapViewTouchDelegate.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarker.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarker.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarker.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarker.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarkerConstants.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarkerConstants.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarkerConstants.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMarkerConstants.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMultipartPath.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMultipartPath.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMultipartPath.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMultipartPath.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMyPositionMode.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMyPositionMode.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMyPositionMode.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFMyPositionMode.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFNaverMapView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFNaverMapView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFNaverMapView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFNaverMapView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflinePack.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflinePack.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflinePack.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflinePack.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineRegion.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineRegion.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineRegion.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineRegion.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineStorage.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineStorage.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineStorage.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOfflineStorage.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlayImage.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlayImage.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlayImage.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFOverlayImage.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPath.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPath.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPath.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPath.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPathColor.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPathColor.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPathColor.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPathColor.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPickable.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPickable.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPickable.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPickable.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolygonOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolygonOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolygonOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolygonOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolylineOverlay.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolylineOverlay.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolylineOverlay.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFPolylineOverlay.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFProjection.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFProjection.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFProjection.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFProjection.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFRendererOptions.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFRendererOptions.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFRendererOptions.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFRendererOptions.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFScaleView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFScaleView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFScaleView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFScaleView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFSymbol.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFSymbol.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFSymbol.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFSymbol.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileCoverHelper.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileCoverHelper.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileCoverHelper.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileCoverHelper.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileId.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileId.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileId.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTileId.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTypes.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTypes.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTypes.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFTypes.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFUtils.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFUtils.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFUtils.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFUtils.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFZoomControlView.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFZoomControlView.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFZoomControlView.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMFZoomControlView.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMapsMap.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMapsMap.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMapsMap.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NMapsMap.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Headers/NSBundle+NMFAdditions.h diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Info.plist b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Info.plist similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Info.plist rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Info.plist diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/LICENSE b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/LICENSE similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/LICENSE rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/LICENSE diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Modules/module.modulemap b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Modules/module.modulemap similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Modules/module.modulemap rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/Modules/module.modulemap diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/objects-11.0+.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerCell.nib/runtime.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/objects-11.0+.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFIndoorLevelPickerView.nib/runtime.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFInfoWindowDefaultTextSource.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/objects-11.0+.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFNaverMapView.nib/runtime.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFScaleView.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFScaleView.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFScaleView.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFScaleView.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFZoomControlView.nib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFZoomControlView.nib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFZoomControlView.nib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMFZoomControlView.nib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMapsMap b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMapsMap similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMapsMap rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NMapsMap diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NOTICE b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NOTICE similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NOTICE rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/NOTICE diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/_CodeSignature/CodeResources b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/_CodeSignature/CodeResources similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/_CodeSignature/CodeResources rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/_CodeSignature/CodeResources diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/default.metallib b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/default.metallib similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/default.metallib rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/default.metallib diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/en.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ja.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.stringsdict b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.stringsdict similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.stringsdict rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Foundation.stringsdict diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/ko.lproj/Localizable.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Foundation.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Foundation.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Foundation.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Foundation.strings diff --git a/Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Localizable.strings b/Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Localizable.strings similarity index 100% rename from Frameworks/NMapsMap/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Localizable.strings rename to Frameworks/NMapsMap.xcframework/ios-arm64_x86_64-simulator/NMapsMap.framework/zh-Hans.lproj/Localizable.strings diff --git a/Tuist/ProjectDescriptionHelpers/Path+.swift b/Tuist/ProjectDescriptionHelpers/Path+.swift new file mode 100644 index 00000000..1fa03fc6 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Path+.swift @@ -0,0 +1,22 @@ +// +// Path+.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 3/30/25. +// + +import ProjectDescription + +extension Path { + static func relativeToFrameworks(_ name: String) -> Path { + .relativeToRoot("Frameworks/\(name).xcframework") + } + + static func relativeToProjects(_ name: String) -> Path { + .relativeToRoot("Projects/\(name)") + } + + static func relativeToFeature(_ name: String) -> Path { + .relativeToRoot("Projects/Features/\(name)") + } +} diff --git a/Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift b/Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift new file mode 100644 index 00000000..1db67b61 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift @@ -0,0 +1,31 @@ +// +// TargetDependency+Dependency.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 3/30/25. +// + +import ProjectDescription + +public extension TargetDependency { + struct SPM { } + struct XCFramework { } + + private static func localXCFramework(name: String) -> TargetDependency { + .xcframework(path: .relativeToFrameworks(name)) + } +} + +public extension TargetDependency.SPM { + static let RxSwift: TargetDependency = .external(name: "RxSwift") + static let RxCocoa: TargetDependency = .external(name: "RxCocoa") + static let Lottie: TargetDependency = .external(name: "Lottie") + static let FirebaseAnalytics: TargetDependency = .external(name: "FirebaseAnalytics") + static let FirebaseMessaging: TargetDependency = .external(name: "FirebaseMessaging") +} + +public extension TargetDependency.XCFramework { + static let NMapsGeometry: TargetDependency = .localXCFramework(name: "NMapsGeometry") + static let NMapsMap: TargetDependency = .localXCFramework(name: "NMapsMap") +} + diff --git a/Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift b/Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift new file mode 100644 index 00000000..a808a8c7 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift @@ -0,0 +1,21 @@ +// +// TargetDependency+Feature.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 3/30/25. +// + +import ProjectDescription + +public extension TargetDependency { + private static func feature(name: String) -> TargetDependency { + .project(target: "\(name)Feature", path: .relativeToFeature(name)) + } + + static let Home: TargetDependency = .feature(name: "Home") + static let Alarm: TargetDependency = .feature(name: "Alarm") + static let Settings: TargetDependency = .feature(name: "Settings") + static let BusStop: TargetDependency = .feature(name: "BusStop") + static let Search: TargetDependency = .feature(name: "Search") + static let NearMap: TargetDependency = .feature(name: "NearMap") +} diff --git a/Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift b/Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift new file mode 100644 index 00000000..2e6a7049 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift @@ -0,0 +1,27 @@ +// +// TargetDependency+Module.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 3/30/25. +// + +import ProjectDescription + +public extension TargetDependency { + private static func module(name: String) -> TargetDependency { + .project(target: name, path: .relativeToProjects(name)) + } + + static let App: TargetDependency = .module(name: "App") + static let MainFeature: TargetDependency = .module(name: "MainFeature") + static let FeatureDependency: TargetDependency = .module(name: "FeatureDependency") + static let Core: TargetDependency = .module(name: "Core") + static let Data: TargetDependency = .module(name: "Data") + static let Domain: TargetDependency = .module(name: "Domain") + static let NetworkService: TargetDependency = .module(name: "NetworkService") + static let CoreDataService: TargetDependency = .module(name: "CoreDataService") + static let DesignSystem: TargetDependency = .module(name: "DesignSystem") + static let ThirdPartyLibs: TargetDependency = .module(name: "ThirdPartyLibs") + static let FirebaseModule: TargetDependency = .module(name: "FirebaseModule") + static let FirebaseInterface: TargetDependency = .module(name: "FirebaseInterface") +} From 7f66b6cbe1561443305e515fab09b002af1b5e7b Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:32:52 +0900 Subject: [PATCH 05/28] =?UTF-8?q?[Feat]=20Firebase=20=EB=9E=98=ED=95=91=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EB=B0=8F=20=EC=9D=B8=ED=84=B0=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=EB=AA=A8=EB=93=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App/Sources/AppDelegate+Firebase.swift | 40 +++++++------------ .../App/Sources/AppDelegate+Register.swift | 2 + .../DefaultBusStopArrivalInfoRepository.swift | 7 ++-- Projects/FirebaseInterface/Project.swift | 17 ++++++++ .../Sources/FirebaseLogger.swift | 14 +++++++ Projects/FirebaseModule/Project.swift | 19 +++++++++ .../Sources/FirebaseLoggerImpl.swift | 21 ++++++++++ .../FirebaseModule/Sources/FirebaseSDK.swift | 37 +++++++++++++++++ .../Sources/MessagingDelegateProxy.swift | 27 +++++++++++++ 9 files changed, 156 insertions(+), 28 deletions(-) create mode 100644 Projects/FirebaseInterface/Project.swift create mode 100644 Projects/FirebaseInterface/Sources/FirebaseLogger.swift create mode 100644 Projects/FirebaseModule/Project.swift create mode 100644 Projects/FirebaseModule/Sources/FirebaseLoggerImpl.swift create mode 100644 Projects/FirebaseModule/Sources/FirebaseSDK.swift create mode 100644 Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift diff --git a/Projects/App/Sources/AppDelegate+Firebase.swift b/Projects/App/Sources/AppDelegate+Firebase.swift index 7709b2c4..7922bc34 100644 --- a/Projects/App/Sources/AppDelegate+Firebase.swift +++ b/Projects/App/Sources/AppDelegate+Firebase.swift @@ -8,8 +8,7 @@ import UIKit -import Firebase -import FirebaseMessaging +import FirebaseModule extension AppDelegate { func configureFirebase(application: UIApplication) { @@ -19,14 +18,12 @@ extension AppDelegate { #else googleInfoName = "GoogleService-Info" #endif - guard let filePath = Bundle.main.path( - forResource: googleInfoName, - ofType: "plist" - ), - let options = FirebaseOptions(contentsOfFile: filePath) - else { return } - FirebaseApp.configure(options: options) - application.registerForRemoteNotifications() + let filePath = Bundle.main.path(forResource: "\(googleInfoName).plist", ofType: nil) ?? "" + do { + try FirebaseSDK.configureFirebase(plistFilePath: filePath, application: application) + } catch { + dump(error) + } } } @@ -35,20 +32,13 @@ extension AppDelegate { _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data ) { - Messaging.messaging().delegate = self - Messaging.messaging().apnsToken = deviceToken - } -} - -extension AppDelegate: MessagingDelegate { - func messaging( - _ messaging: Messaging, - didReceiveRegistrationToken fcmToken: String? - ) { - guard let fcmToken else { return } - UserDefaults.standard.setValue( - fcmToken, - forKey: "fcmToken" - ) + Task { + let fcmToken = await FirebaseSDK.didRegisterForRemoteNotificationsWithDeviceToken(deviceToken: deviceToken) + guard let fcmToken else { return } + UserDefaults.standard.setValue( + fcmToken, + forKey: "fcmToken" + ) + } } } diff --git a/Projects/App/Sources/AppDelegate+Register.swift b/Projects/App/Sources/AppDelegate+Register.swift index cd3990f8..0c274662 100644 --- a/Projects/App/Sources/AppDelegate+Register.swift +++ b/Projects/App/Sources/AppDelegate+Register.swift @@ -13,6 +13,7 @@ import CoreDataService import Data import Domain import NetworkService +import FirebaseModule extension AppDelegate { func registerDependencies() { @@ -102,5 +103,6 @@ extension AppDelegate { // versionCheckRepository: versionCheckRepository // ) // ) + DIContainer.register(type: FirebaseLogger.self, FirebaseLoggerImpl()) } } diff --git a/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift b/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift index 6da0b77b..1730d601 100644 --- a/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift +++ b/Projects/Data/Sources/Repository/DefaultBusStopArrivalInfoRepository.swift @@ -9,15 +9,16 @@ import Foundation import Domain +import Core import NetworkService import RxSwift -import FirebaseAnalytics +import FirebaseInterface public final class DefaultBusStopArrivalInfoRepository: NSObject, BusStopArrivalInfoRepository { private let networkService: NetworkService - + @Injected(FirebaseLogger.self) private var logger: FirebaseLogger private let disposeBag = DisposeBag() public init(networkService: NetworkService) { @@ -26,7 +27,7 @@ public final class DefaultBusStopArrivalInfoRepository: public func fetchArrivalList(busStopId: String) -> Observable { - Analytics.logEvent("fetchArrivalEvent", parameters: nil) + logger.log(name: "fetchArrivalEvent") return networkService.request( endPoint: BusStopArrivalInfoEndPoint(arsId: busStopId) ) diff --git a/Projects/FirebaseInterface/Project.swift b/Projects/FirebaseInterface/Project.swift new file mode 100644 index 00000000..366845c9 --- /dev/null +++ b/Projects/FirebaseInterface/Project.swift @@ -0,0 +1,17 @@ +// +// Project.swift +// AlarmFeatureManifests +// +// Created by Logan on 3/30/25. +// + +import ProjectDescription +import ProjectDescriptionHelpers + +let project = Project.makeProject( + name: "FirebaseInterface", + moduleType: .dynamicFramework, + dependencies: [ + ] +) + diff --git a/Projects/FirebaseInterface/Sources/FirebaseLogger.swift b/Projects/FirebaseInterface/Sources/FirebaseLogger.swift new file mode 100644 index 00000000..b6cabcde --- /dev/null +++ b/Projects/FirebaseInterface/Sources/FirebaseLogger.swift @@ -0,0 +1,14 @@ +// +// FirebaseLogger.swift +// FirebaseInterface +// +// Created by gnksbm on 3/30/25. +// Copyright © 2025 Pepsi-Club. All rights reserved. +// + +import Foundation + +public protocol FirebaseLogger { + func log(name: String) + func log(name: String, parameter: [String: String]) +} diff --git a/Projects/FirebaseModule/Project.swift b/Projects/FirebaseModule/Project.swift new file mode 100644 index 00000000..1832389c --- /dev/null +++ b/Projects/FirebaseModule/Project.swift @@ -0,0 +1,19 @@ +// +// Project.swift +// AlarmFeatureManifests +// +// Created by Logan on 3/30/25. +// + +import ProjectDescription +import ProjectDescriptionHelpers + +let project = Project.makeProject( + name: "FirebaseModule", + moduleType: .staticFramework, + dependencies: [ + .FirebaseInterface, + .SPM.FirebaseAnalytics, + .SPM.FirebaseMessaging + ] +) diff --git a/Projects/FirebaseModule/Sources/FirebaseLoggerImpl.swift b/Projects/FirebaseModule/Sources/FirebaseLoggerImpl.swift new file mode 100644 index 00000000..cf924c13 --- /dev/null +++ b/Projects/FirebaseModule/Sources/FirebaseLoggerImpl.swift @@ -0,0 +1,21 @@ +// +// FirebaseLoggerImpl.swift +// ThirdPartyLibs +// +// Created by gnksbm on 3/30/25. +// Copyright © 2025 Pepsi-Club. All rights reserved. +// + +import FirebaseAnalytics + +public final class FirebaseLoggerImpl: FirebaseLogger { + public init() { } + + public func log(name: String) { + Analytics.logEvent(name, parameters: nil) + } + + public func log(name: String, parameter: [String : String]) { + Analytics.logEvent(name, parameters: parameter) + } +} diff --git a/Projects/FirebaseModule/Sources/FirebaseSDK.swift b/Projects/FirebaseModule/Sources/FirebaseSDK.swift new file mode 100644 index 00000000..96fd3019 --- /dev/null +++ b/Projects/FirebaseModule/Sources/FirebaseSDK.swift @@ -0,0 +1,37 @@ +// +// FirebaseSDK.swift +// FirebaseModule +// +// Created by Logan on 3/30/25. +// Copyright © 2025 Pepsi-Club. All rights reserved. +// + +import Firebase +@_exported import FirebaseInterface + +public final class FirebaseSDK { + private static let proxy: MessagingDelegateProxy = .init() + + public static func configureFirebase( + plistFilePath: String, + application: UIApplication + ) throws { + guard let options = FirebaseOptions(contentsOfFile: plistFilePath) else { + throw FirebaseSDKError.invalidFilePath + } + FirebaseApp.configure(options: options) + application.registerForRemoteNotifications() + } + + public static func didRegisterForRemoteNotificationsWithDeviceToken( + deviceToken: Data + ) async -> String? { + Messaging.messaging().delegate = proxy + Messaging.messaging().apnsToken = deviceToken + return await proxy.requestFCMToken() + } + + enum FirebaseSDKError: Error { + case invalidFilePath, invalidFirebaseOption + } +} diff --git a/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift b/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift new file mode 100644 index 00000000..652260f9 --- /dev/null +++ b/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift @@ -0,0 +1,27 @@ +// +// MessagingDelegateProxy.swift +// FirebaseModule +// +// Created by gnksbm on 3/30/25. +// Copyright © 2025 Pepsi-Club. All rights reserved. +// + +import FirebaseMessaging + +final class MessagingDelegateProxy: NSObject, MessagingDelegate { + private var continuation: CheckedContinuation? + + func requestFCMToken() async -> String? { + await withCheckedContinuation { continuation in + self.continuation = continuation + } + } + + func messaging( + _ messaging: Messaging, + didReceiveRegistrationToken fcmToken: String? + ) { + continuation?.resume(returning: fcmToken) + continuation = nil + } +} From 3acb83cf8a393a961dcaf2c9db570004cbf62fba Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:34:30 +0900 Subject: [PATCH 06/28] =?UTF-8?q?[Fix]=20DependencyPlugin=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20=EB=B0=8F=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20Tuist=204=20=ED=98=95=ED=83=9C=EB=A1=9C=20=EC=A0=84?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plugins/DependencyPlugin/Plugin.swift | 11 -- .../Dependency+Feature.swift | 28 ---- .../Dependency+Module.swift | 28 ---- .../Dependency+ThirdPartyExternal.swift | 26 ---- .../Dependency+ThirdPartyRemote.swift | 33 ---- .../Depondency+ThirdPartyXCFramework.swift | 36 ----- Projects/App/Project.swift | 7 +- Projects/Core/Project.swift | 3 +- Projects/CoreDataService/Project.swift | 2 +- Projects/Data/Project.swift | 19 +-- Projects/DesignSystem/Project.swift | 8 +- Projects/Domain/Project.swift | 3 +- Projects/Feature/AlarmFeature/Project.swift | 2 +- Projects/Feature/BusStopFeature/Project.swift | 2 +- Projects/Feature/HomeFeature/Project.swift | 2 +- Projects/Feature/NearMapFeature/Project.swift | 2 +- Projects/Feature/SearchFeature/Project.swift | 2 +- .../Feature/SettingsFeature/Project.swift | 2 +- Projects/FeatureDependency/Project.swift | 4 +- Projects/MainFeature/Project.swift | 9 +- Projects/NetworkService/Project.swift | 2 +- Projects/ThirdPartyLibs/Project.swift | 8 +- Tuist/Config.swift | 11 +- Tuist/Package.resolved | 142 ++++++++++++++++++ Tuist/Package.swift | 34 +++++ Tuist/ProjectDescriptionHelpers/Path+.swift | 2 +- Tuist/Templates/framework/project.stencil | 1 - 27 files changed, 218 insertions(+), 211 deletions(-) delete mode 100644 Plugins/DependencyPlugin/Plugin.swift delete mode 100644 Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Feature.swift delete mode 100644 Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Module.swift delete mode 100644 Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyExternal.swift delete mode 100644 Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyRemote.swift delete mode 100644 Plugins/DependencyPlugin/ProjectDescriptionHelpers/Depondency+ThirdPartyXCFramework.swift create mode 100644 Tuist/Package.resolved create mode 100644 Tuist/Package.swift diff --git a/Plugins/DependencyPlugin/Plugin.swift b/Plugins/DependencyPlugin/Plugin.swift deleted file mode 100644 index 554b1650..00000000 --- a/Plugins/DependencyPlugin/Plugin.swift +++ /dev/null @@ -1,11 +0,0 @@ -// -// Plugin.swift -// Environment -// -// Created by gnksbm on 2023/11/19. -// - -import ProjectDescription - -let DependencyPlugin = Plugin(name: "DependencyPlugin") - diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Feature.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Feature.swift deleted file mode 100644 index 5dd38605..00000000 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Feature.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// Dependency+Feature.swift -// DependencyPlugin -// -// Created by gnksbm on 2023/11/23. -// - -import ProjectDescription - -public extension Array { - enum Presentation: String, CaseIterable { - case home, alarm, settings, busStop, search, nearMap - - public var dependency: TargetDependency { - var name = rawValue.map { $0 } - name.removeFirst() - name.insert(Character(rawValue.first!.uppercased()), at: 0) - return presentationModule(name: "\(String(name))Feature") - } - - private func presentationModule(name: String) -> TargetDependency { - .project( - target: "\(name)", - path: .relativeToRoot("Projects/Feature/\(name)") - ) - } - } -} diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Module.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Module.swift deleted file mode 100644 index a97141f1..00000000 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+Module.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// Dependency+Module.swift -// Environment -// -// Created by gnksbm on 2023/11/19. -// - -import ProjectDescription - -public extension TargetDependency { - static let app: Self = .module(name: "App") - static let mainFeature: Self = .module(name: "MainFeature") - static let featureDependency: Self = .module(name: "FeatureDependency") - static let core: Self = .module(name: "Core") - static let data: Self = .module(name: "Data") - static let domain: Self = .module(name: "Domain") - static let networkService: Self = .module(name: "NetworkService") - static let coreDataService: Self = .module(name: "CoreDataService") - static let designSystem: Self = .module(name: "DesignSystem") - static let thirdPartyLibs: Self = .module(name: "ThirdPartyLibs") - - private static func module(name: String) -> Self { - .project(target: name, path: .relativeToRoot("Projects/\(name)")) - } - private static func moduleWithAdditionalPath(name: String, path: String) -> Self { - .project(target: name, path: .relativeToRoot("Projects/\(path)/\(name)")) - } -} diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyExternal.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyExternal.swift deleted file mode 100644 index ef044fa6..00000000 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyExternal.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Dependency+ThirdPartyExternal.swift -// DependencyPlugin -// -// Created by gnksbm on 2023/12/27. -// - -import ProjectDescription - -public extension Array { - static let thirdPartyExternal = ThirdPartyExternal.allCases - .map { - Element.external(name: $0.name) - } - - enum ThirdPartyExternal: String, CaseIterable { - case rxCocoa - - public var name: String { - var name = rawValue.map { $0 } - name.removeFirst() - name.insert(Character(rawValue.first!.uppercased()), at: 0) - return "\(String(name))" - } - } -} diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyRemote.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyRemote.swift deleted file mode 100644 index e3707fe9..00000000 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Dependency+ThirdPartyRemote.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// ThirdPartyLibs.swift -// Environment -// -// Created by gnksbm on 2023/11/19. -// - -import ProjectDescription - -public extension Array { - struct ThirdPartyRemote { - } -} - -public extension Array.ThirdPartyRemote { - enum SPM: CaseIterable { - case rxSwift - - public var url: String { - switch self { - case .rxSwift: - return "https://github.com/ReactiveX/RxSwift" - } - } - - public var upToNextMajor: Version { - switch self { - case .rxSwift: - return "6.0.0" - } - } - } -} diff --git a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Depondency+ThirdPartyXCFramework.swift b/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Depondency+ThirdPartyXCFramework.swift deleted file mode 100644 index 171987e3..00000000 --- a/Plugins/DependencyPlugin/ProjectDescriptionHelpers/Depondency+ThirdPartyXCFramework.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// Depondency+ThirdPartyXCFramework.swift -// DependencyPlugin -// -// Created by gnksbm on 3/30/24. -// - -import Foundation -import ProjectDescription - -public extension Array { - static let thirdPartyXCFramework = ThirdPartyXCFramework.allCases - .map { - $0.toXcFramework() - } - - enum ThirdPartyXCFramework: String, CaseIterable { - case nMapsGeometry = "NMapsGeometry" - case nMapsMap = "NMapsMap" - - var additionalPath: String { - switch self { - case .nMapsMap, .nMapsGeometry: - return "NMapsMap/" - } - } - - public func toXcFramework() -> Element { - .xcframework( - path: .relativeToRoot( - "Frameworks/\(additionalPath)\(rawValue).xcframework" - ) - ) - } - } -} diff --git a/Projects/App/Project.swift b/Projects/App/Project.swift index 3e925065..48b11a3d 100644 --- a/Projects/App/Project.swift +++ b/Projects/App/Project.swift @@ -1,5 +1,4 @@ import ProjectDescription -import DependencyPlugin import ProjectDescriptionHelpers let project = Project.makeProject( @@ -30,8 +29,8 @@ let project = Project.makeProject( // ) ], dependencies: [ - .mainFeature, - .data, - .package(product: "FirebaseMessaging") + .MainFeature, + .Data, + .FirebaseModule ] ) diff --git a/Projects/Core/Project.swift b/Projects/Core/Project.swift index 034fb42c..4c2430df 100644 --- a/Projects/Core/Project.swift +++ b/Projects/Core/Project.swift @@ -1,11 +1,10 @@ import ProjectDescription -import DependencyPlugin import ProjectDescriptionHelpers let project = Project.makeProject( name: "Core", moduleType: .dynamicFramework, dependencies: [ - .thirdPartyLibs + .ThirdPartyLibs ] ) diff --git a/Projects/CoreDataService/Project.swift b/Projects/CoreDataService/Project.swift index 7d48c590..dc83eb74 100644 --- a/Projects/CoreDataService/Project.swift +++ b/Projects/CoreDataService/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "CoreDataService", moduleType: .dynamicFramework, dependencies: [ - .domain + .Domain ] ) diff --git a/Projects/Data/Project.swift b/Projects/Data/Project.swift index 263efa82..7d9dfbb4 100644 --- a/Projects/Data/Project.swift +++ b/Projects/Data/Project.swift @@ -1,27 +1,16 @@ import ProjectDescription -import DependencyPlugin import ProjectDescriptionHelpers let project = Project.makeProject( name: "Data", moduleType: .dynamicFramework, - packages: [ - .remote( - url: "https://github.com/google/GoogleUtilities.git", - requirement: .exact("7.13.1") - ), - .remote( - url: "https://github.com/firebase/firebase-ios-sdk", - requirement: .exact("10.23.1") - ), - ], dependencies: [ - .networkService, - .coreDataService, - .package(product: "FirebaseAnalytics"), + .NetworkService, + .CoreDataService, + .FirebaseInterface ], coreDataModel: [ - .init( + .coreDataModel( "../App/Resources/Model.xcdatamodeld", currentVersion: "Model_v2" ) diff --git a/Projects/DesignSystem/Project.swift b/Projects/DesignSystem/Project.swift index 531a541b..a705afef 100644 --- a/Projects/DesignSystem/Project.swift +++ b/Projects/DesignSystem/Project.swift @@ -5,14 +5,8 @@ let project = Project.makeProject( name: "DesignSystem", moduleType: .dynamicFramework, hasResource: true, - packages: [ - .remote( - url: "https://github.com/airbnb/lottie-ios", - requirement: .exact("4.4.3") - ), - ], dependencies: [ - .package(product: "Lottie"), + .SPM.Lottie ], resourceSynthesizers: [ .custom( diff --git a/Projects/Domain/Project.swift b/Projects/Domain/Project.swift index 5df89498..d5100fd8 100644 --- a/Projects/Domain/Project.swift +++ b/Projects/Domain/Project.swift @@ -1,11 +1,10 @@ import ProjectDescription -import DependencyPlugin import ProjectDescriptionHelpers let project = Project.makeProject( name: "Domain", moduleType: .dynamicFramework, dependencies: [ - .core + .Core ] ) diff --git a/Projects/Feature/AlarmFeature/Project.swift b/Projects/Feature/AlarmFeature/Project.swift index a11352af..d5da448a 100644 --- a/Projects/Feature/AlarmFeature/Project.swift +++ b/Projects/Feature/AlarmFeature/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "AlarmFeature", moduleType: .feature, dependencies: [ - .featureDependency + .FeatureDependency ] ) diff --git a/Projects/Feature/BusStopFeature/Project.swift b/Projects/Feature/BusStopFeature/Project.swift index f725b5bf..133b4149 100644 --- a/Projects/Feature/BusStopFeature/Project.swift +++ b/Projects/Feature/BusStopFeature/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "BusStopFeature", moduleType: .feature, dependencies: [ - .featureDependency + .FeatureDependency ] ) diff --git a/Projects/Feature/HomeFeature/Project.swift b/Projects/Feature/HomeFeature/Project.swift index fec4822c..97c96991 100644 --- a/Projects/Feature/HomeFeature/Project.swift +++ b/Projects/Feature/HomeFeature/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "HomeFeature", moduleType: .feature, dependencies: [ - .featureDependency + .FeatureDependency ] ) diff --git a/Projects/Feature/NearMapFeature/Project.swift b/Projects/Feature/NearMapFeature/Project.swift index 3a08e019..077b267e 100644 --- a/Projects/Feature/NearMapFeature/Project.swift +++ b/Projects/Feature/NearMapFeature/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "NearMapFeature", moduleType: .feature, dependencies: [ - .featureDependency + .FeatureDependency ] ) diff --git a/Projects/Feature/SearchFeature/Project.swift b/Projects/Feature/SearchFeature/Project.swift index d4b496a4..5db71008 100644 --- a/Projects/Feature/SearchFeature/Project.swift +++ b/Projects/Feature/SearchFeature/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "SearchFeature", moduleType: .feature, dependencies: [ - .featureDependency + .FeatureDependency ] ) diff --git a/Projects/Feature/SettingsFeature/Project.swift b/Projects/Feature/SettingsFeature/Project.swift index 1c69b942..9161f4da 100644 --- a/Projects/Feature/SettingsFeature/Project.swift +++ b/Projects/Feature/SettingsFeature/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "SettingsFeature", moduleType: .feature, dependencies: [ - .featureDependency + .FeatureDependency ] ) diff --git a/Projects/FeatureDependency/Project.swift b/Projects/FeatureDependency/Project.swift index 86b98bd1..a5df79ea 100644 --- a/Projects/FeatureDependency/Project.swift +++ b/Projects/FeatureDependency/Project.swift @@ -5,7 +5,7 @@ let project = Project.makeProject( name: "FeatureDependency", moduleType: .dynamicFramework, dependencies: [ - .designSystem, - .domain + .DesignSystem, + .Domain ] ) diff --git a/Projects/MainFeature/Project.swift b/Projects/MainFeature/Project.swift index 79bb5013..8bce78ad 100644 --- a/Projects/MainFeature/Project.swift +++ b/Projects/MainFeature/Project.swift @@ -4,5 +4,12 @@ import ProjectDescriptionHelpers let project = Project.makeProject( name: "MainFeature", moduleType: .dynamicFramework, - dependencies: .Presentation.allCases.map { $0.dependency } + dependencies: [ + .Home, + .Alarm, + .Settings, + .BusStop, + .Search, + .NearMap + ] ) diff --git a/Projects/NetworkService/Project.swift b/Projects/NetworkService/Project.swift index 7e029496..dc517d02 100644 --- a/Projects/NetworkService/Project.swift +++ b/Projects/NetworkService/Project.swift @@ -5,6 +5,6 @@ let project = Project.makeProject( name: "NetworkService", moduleType: .dynamicFramework, dependencies: [ - .domain, + .Domain, ] ) diff --git a/Projects/ThirdPartyLibs/Project.swift b/Projects/ThirdPartyLibs/Project.swift index 82590662..25d82100 100644 --- a/Projects/ThirdPartyLibs/Project.swift +++ b/Projects/ThirdPartyLibs/Project.swift @@ -1,9 +1,13 @@ import ProjectDescription -import DependencyPlugin import ProjectDescriptionHelpers let project = Project.makeProject( name: "ThirdPartyLibs", moduleType: .dynamicFramework, - dependencies: .thirdPartyExternal + .thirdPartyXCFramework + dependencies: [ + .XCFramework.NMapsGeometry, + .XCFramework.NMapsMap, + .SPM.RxSwift, + .SPM.RxCocoa + ] ) diff --git a/Tuist/Config.swift b/Tuist/Config.swift index a1013b3a..e5050040 100644 --- a/Tuist/Config.swift +++ b/Tuist/Config.swift @@ -8,9 +8,12 @@ import ProjectDescription let config = Config( + compatibleXcodeVersions: .list([ + .upToNextMajor(.init(15, 0, 0)), + .upToNextMajor(.init(16, 0, 0)) + ]), + swiftVersion: .init(5, 0, 0), plugins: [ - .local(path: .relativeToRoot("Plugins/EnvironmentPlugin")), - .local(path: .relativeToRoot("Plugins/DependencyPlugin")), - ], - generationOptions: .options() + .local(path: .relativeToRoot("Plugins/EnvironmentPlugin")) + ] ) diff --git a/Tuist/Package.resolved b/Tuist/Package.resolved new file mode 100644 index 00000000..fe258c70 --- /dev/null +++ b/Tuist/Package.resolved @@ -0,0 +1,142 @@ +{ + "object": { + "pins": [ + { + "package": "abseil", + "repositoryURL": "https://github.com/google/abseil-cpp-binary.git", + "state": { + "branch": null, + "revision": "194a6706acbd25e4ef639bcaddea16e8758a3e27", + "version": "1.2024011602.0" + } + }, + { + "package": "AppCheck", + "repositoryURL": "https://github.com/google/app-check.git", + "state": { + "branch": null, + "revision": "61b85103a1aeed8218f17c794687781505fbbef5", + "version": "11.2.0" + } + }, + { + "package": "Firebase", + "repositoryURL": "https://github.com/firebase/firebase-ios-sdk.git", + "state": { + "branch": null, + "revision": "8328630971a8fdd8072b36bb22bef732eb15e1f0", + "version": "11.4.0" + } + }, + { + "package": "GoogleAppMeasurement", + "repositoryURL": "https://github.com/google/GoogleAppMeasurement.git", + "state": { + "branch": null, + "revision": "4f234bcbdae841d7015258fbbf8e7743a39b8200", + "version": "11.4.0" + } + }, + { + "package": "GoogleDataTransport", + "repositoryURL": "https://github.com/google/GoogleDataTransport.git", + "state": { + "branch": null, + "revision": "617af071af9aa1d6a091d59a202910ac482128f9", + "version": "10.1.0" + } + }, + { + "package": "GoogleUtilities", + "repositoryURL": "https://github.com/google/GoogleUtilities.git", + "state": { + "branch": null, + "revision": "53156c7ec267db846e6b64c9f4c4e31ba4cf75eb", + "version": "8.0.2" + } + }, + { + "package": "gRPC", + "repositoryURL": "https://github.com/google/grpc-binary.git", + "state": { + "branch": null, + "revision": "f56d8fc3162de9a498377c7b6cea43431f4f5083", + "version": "1.65.1" + } + }, + { + "package": "GTMSessionFetcher", + "repositoryURL": "https://github.com/google/gtm-session-fetcher.git", + "state": { + "branch": null, + "revision": "4d70340d55d7d07cc2fdf8e8125c4c126c1d5f35", + "version": "4.4.0" + } + }, + { + "package": "InteropForGoogle", + "repositoryURL": "https://github.com/google/interop-ios-for-google-sdks.git", + "state": { + "branch": null, + "revision": "2d12673670417654f08f5f90fdd62926dc3a2648", + "version": "100.0.0" + } + }, + { + "package": "leveldb", + "repositoryURL": "https://github.com/firebase/leveldb.git", + "state": { + "branch": null, + "revision": "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version": "1.22.5" + } + }, + { + "package": "Lottie", + "repositoryURL": "https://github.com/airbnb/lottie-ios", + "state": { + "branch": null, + "revision": "769b88d83a42ca8d5572b020c96f47e3690b3796", + "version": "4.4.3" + } + }, + { + "package": "nanopb", + "repositoryURL": "https://github.com/firebase/nanopb.git", + "state": { + "branch": null, + "revision": "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version": "2.30910.0" + } + }, + { + "package": "Promises", + "repositoryURL": "https://github.com/google/promises.git", + "state": { + "branch": null, + "revision": "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version": "2.4.0" + } + }, + { + "package": "RxSwift", + "repositoryURL": "https://github.com/ReactiveX/RxSwift.git", + "state": { + "branch": null, + "revision": "c7c7d2cf50a3211fe2843f76869c698e4e417930", + "version": "6.8.0" + } + }, + { + "package": "SwiftProtobuf", + "repositoryURL": "https://github.com/apple/swift-protobuf.git", + "state": { + "branch": null, + "revision": "d72aed98f8253ec1aa9ea1141e28150f408cf17f", + "version": "1.29.0" + } + } + ] + }, + "version": 1 +} diff --git a/Tuist/Package.swift b/Tuist/Package.swift new file mode 100644 index 00000000..9eb8558c --- /dev/null +++ b/Tuist/Package.swift @@ -0,0 +1,34 @@ +// swift-tools-version:5.0 +// +// Package.swift +// WhereMyBus-iOSManifests +// +// Created by Logan on 3/30/25. +// + + +@preconcurrency import PackageDescription + +#if TUIST +import EnvironmentPlugin +import struct ProjectDescription.PackageSettings + +let packageSettings = PackageSettings( + productTypes: [ + "RxSwift": .framework, + "RxCocoa": .framework, + "RxCocoaRuntime": .framework, + ], + targetSettings: [:] +) + +#endif + +let package = Package( + name: "Packages", + dependencies: [ + .package(url: "https://github.com/ReactiveX/RxSwift.git", .exactItem("6.8.0")), + .package(url: "https://github.com/firebase/firebase-ios-sdk.git", .exactItem("11.4.0")), + .package(url: "https://github.com/airbnb/lottie-ios", .exactItem("4.4.3")), + ] +) diff --git a/Tuist/ProjectDescriptionHelpers/Path+.swift b/Tuist/ProjectDescriptionHelpers/Path+.swift index 1fa03fc6..c7b556ac 100644 --- a/Tuist/ProjectDescriptionHelpers/Path+.swift +++ b/Tuist/ProjectDescriptionHelpers/Path+.swift @@ -17,6 +17,6 @@ extension Path { } static func relativeToFeature(_ name: String) -> Path { - .relativeToRoot("Projects/Features/\(name)") + .relativeToRoot("Projects/Feature/\(name)Feature") } } diff --git a/Tuist/Templates/framework/project.stencil b/Tuist/Templates/framework/project.stencil index 8287b7fd..06fba0fc 100644 --- a/Tuist/Templates/framework/project.stencil +++ b/Tuist/Templates/framework/project.stencil @@ -1,6 +1,5 @@ import ProjectDescription import ProjectDescriptionHelpers -import DependencyPlugin let project = Project.makeProject( name: "{{ name }}", From 5dfd752e85909dc2bef76ab56526d20932f021d9 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:35:06 +0900 Subject: [PATCH 07/28] =?UTF-8?q?[Fix]=20Tuist=204=20=EB=B0=8F=20Swift=206?= =?UTF-8?q?=20=EB=B2=84=EC=A0=84=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plugins/EnvironmentPlugin/Plugin.swift | 2 +- .../Environment.swift | 7 +-- .../ProjectDescriptionHelpers/Scheme.swift | 18 ++++--- .../Project+Templates.swift | 51 +++++++++---------- 4 files changed, 37 insertions(+), 41 deletions(-) diff --git a/Plugins/EnvironmentPlugin/Plugin.swift b/Plugins/EnvironmentPlugin/Plugin.swift index 282bc7b5..2c81f721 100644 --- a/Plugins/EnvironmentPlugin/Plugin.swift +++ b/Plugins/EnvironmentPlugin/Plugin.swift @@ -6,6 +6,6 @@ // Copyright © 2023 https://github.com/gnksbm/Clone_AppStore. All rights reserved. // -import ProjectDescription +@preconcurrency import ProjectDescription let EnvironmentPlugin = Plugin(name: "EnvironmentPlugin") diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift index 005e2541..b41fc50e 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift @@ -42,11 +42,8 @@ extension SettingValue { static let currentProjectVersion: Self = .string(.buildVersion) } -public extension DeploymentTarget { - static let deploymentTarget: Self = .iOS( - targetVersion: .targetVersion, - devices: .iphone - ) +public extension DeploymentTargets { + static let deploymentTarget: Self = .iOS(.targetVersion) } public extension Platform { diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift index 9a9b68ec..8fbd02b7 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift @@ -9,7 +9,7 @@ import ProjectDescription public extension Scheme { static func moduleScheme(name: String) -> Self { - Scheme( + Scheme.scheme( name: name, shared: true, buildAction: .buildAction(targets: ["\(name)"]), @@ -23,19 +23,21 @@ public extension Scheme { ), runAction: .runAction( configuration: .debug, - arguments: .init(launchArguments: [ - .init( - name: "-FIRDebugEnabled", - isEnabled: true - ) - ]) + arguments: .arguments( + launchArguments: [ + .launchArgument( + name: "-FIRDebugEnabled", + isEnabled: true + ) + ] + ) ), archiveAction: .archiveAction(configuration: .release) ) } static func uiTestsScheme(name: String) -> Self { - Scheme( + Scheme.scheme( name: "\(name)UITests", shared: true, buildAction: .buildAction(targets: ["\(name)"]), diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index 641d556a..bcea0872 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -7,11 +7,10 @@ import ProjectDescription import EnvironmentPlugin -import DependencyPlugin -extension Project { +public extension Project { // MARK: Refact - public static func makeProject( + static func makeProject( name: String, moduleType: ModuleType, entitlementsPath: Path? = nil, @@ -97,12 +96,12 @@ extension Project { entitlements: Entitlements?, dependencies: [TargetDependency] ) -> Target { - Target( + Target.target( name: name, - platform: .iOS, + destinations: .iOS, product: .app, bundleId: .bundleID, - deploymentTarget: .deploymentTarget, + deploymentTargets: .deploymentTarget, infoPlist: .appInfoPlist, sources: ["Sources/**"], resources: ["Resources/**"], @@ -118,16 +117,14 @@ extension Project { entitlements: Entitlements? = nil, dependencies: [TargetDependency] ) -> Target { - Target( + Target.target( name: "\(name)Demo", - platform: .iOS, + destinations: .iOS, product: .app, bundleId: "\(String.bundleID).\(name)Demo", - deploymentTarget: .deploymentTarget, + deploymentTargets: .deploymentTarget, infoPlist: .demoAppInfoPlist(name: name), - sources: [ - "Demo/**", - ], + sources: ["Demo/**"], entitlements: entitlements, scripts: [.featureSwiftLint], dependencies: dependencies, @@ -146,12 +143,12 @@ extension Project { ) -> Target { let scripts: [TargetScript] = isPresentation ? [.featureSwiftLint] : [.swiftLint] - return Target( + return Target.target( name: name, - platform: .iOS, - product: .framework, + destinations: .iOS, + product: productType, bundleId: .bundleID + ".\(name)", - deploymentTarget: .deploymentTarget, + deploymentTargets: .deploymentTarget, infoPlist: .frameworkInfoPlist, sources: ["Sources/**"], resources: hasResource ? ["Resources/**"] : nil, @@ -163,19 +160,19 @@ extension Project { ) } - public static func appExtensionTarget( + static func appExtensionTarget( name: String, plist: InfoPlist?, resources: ResourceFileElements? = nil, entitlements: Entitlements? = nil, dependencies: [TargetDependency] ) -> Target { - return Target( + Target.target( name: name, - platform: .iOS, + destinations: .iOS, product: .appExtension, bundleId: .bundleID + ".\(name)", - deploymentTarget: .deploymentTarget, + deploymentTargets: .deploymentTarget, infoPlist: plist, sources: ["\(name)/**"], resources: resources, @@ -205,12 +202,12 @@ extension Project { isFeature: Bool = false, dependencies: [TargetDependency] ) -> Target { - Target( + Target.target( name: "\(name)Tests", - platform: .iOS, + destinations: .iOS, product: .unitTests, bundleId: .bundleID + ".\(name)Test", - deploymentTarget: .deploymentTarget, + deploymentTargets: .deploymentTarget, infoPlist: .frameworkInfoPlist, sources: ["Tests/**"], scripts: isFeature ? [.featureSwiftLint] : [.swiftLint], @@ -224,12 +221,12 @@ extension Project { isFeature: Bool = false, dependencies: [TargetDependency] ) -> Target { - Target( + Target.target( name: "\(name)UITests", - platform: .iOS, + destinations: .iOS, product: .uiTests, - bundleId: .bundleID + ".\(name)UITest", - deploymentTarget: .deploymentTarget, + bundleId: .bundleID + ".\(name)Test", + deploymentTargets: .deploymentTarget, infoPlist: .frameworkInfoPlist, sources: ["Tests/**"], scripts: isFeature ? [.featureSwiftLint] : [.swiftLint], From 34c7eb0a105b4f63caa80e35ebc5cb26f51170ec Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:21:53 +0900 Subject: [PATCH 08/28] =?UTF-8?q?feat:=20Tuist=20=EC=84=A0=EC=96=B8?= =?UTF-8?q?=ED=98=95=20=EC=9E=91=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Buildable/ProjectComponentBuilder.swift | 89 +++++++++++++++++++ .../SchemeBuildable/Scheme/AppScheme.swift | 42 +++++++++ .../Scheme/SampleAppScheme.swift | 21 +++++ .../Scheme/UITestsScheme.swift | 30 +++++++ .../Scheme/UnitTestsScheme.swift | 30 +++++++ .../SchemeBuildable/SchemeBuildable.swift | 43 +++++++++ .../TargetBuildable/Target/App.swift | 31 +++++++ .../TargetBuildable/Target/Feature.swift | 32 +++++++ .../TargetBuildable/Target/SampleApp.swift | 27 ++++++ .../TargetBuildable/Target/UnitTests.swift | 20 +++++ .../Target/WidgetExtension.swift | 52 +++++++++++ .../TargetBuildable/TargetBuildable.swift | 81 +++++++++++++++++ .../TargetInterface/AppExtensionTarget.swift | 12 +++ .../BundleIDSuffixTarget.swift | 12 +++ .../TargetInterface/FrameworkTarget.swift | 13 +++ .../TargetInterface/ImplementTarget.swift | 14 +++ .../TargetInterface/InterfaceTarget.swift | 14 +++ .../TargetInterface/TestingTarget.swift | 13 +++ .../TargetInterface/TestsTarget.swift | 33 +++++++ .../TargetDependency/LocalDependency.swift | 16 ++++ .../TargetDependency/SPMDependency.swift | 16 ++++ .../XCFrameworkDependency.swift | 17 ++++ .../TargetDependencyBuildable.swift | 16 ++++ .../Builder/TargetBuilder.swift | 53 +++++++++++ .../Builder/TargetDependencyBuilder.swift | 49 ++++++++++ .../ProjectDescriptionHelpers/Common.swift | 8 ++ .../Environment.swift | 2 +- .../Foundation/TypeNameContains.swift | 26 ++++++ .../Project+Templates.swift | 12 +-- 29 files changed, 817 insertions(+), 7 deletions(-) create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/ProjectComponentBuilder.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/SampleAppScheme.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UITestsScheme.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UnitTestsScheme.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/SchemeBuildable.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/AppExtensionTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/BundleIDSuffixTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/LocalDependency.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/SPMDependency.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/XCFrameworkDependency.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependencyBuildable.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Common.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeNameContains.swift diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/ProjectComponentBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/ProjectComponentBuilder.swift new file mode 100644 index 00000000..fb956e50 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/ProjectComponentBuilder.swift @@ -0,0 +1,89 @@ +// +// ProjectComponentBuilder.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +@resultBuilder +public struct ProjectComponentBuilder { + let targets: [Target] + let schemes: [Scheme] + + init(targets: [Target] = [], schemes: [Scheme] = []) { + self.targets = targets + self.schemes = schemes + } + + public static func buildBlock() -> ProjectComponentBuilder { + .init() + } + + public static func buildExpression(_ expression: ProjectComponentBuilder) -> ProjectComponentBuilder { + .init(targets: expression.targets, schemes: expression.schemes) + } + + public static func buildPartialBlock(first: ProjectComponentBuilder) -> ProjectComponentBuilder { + .init(targets: first.targets, schemes: first.schemes) + } + + public static func buildPartialBlock(accumulated: ProjectComponentBuilder, next: ProjectComponentBuilder) -> ProjectComponentBuilder { + .init( + targets: accumulated.targets + next.targets, + schemes: accumulated.schemes + next.schemes + ) + } +} + +extension ProjectComponentBuilder { + public static func buildExpression(_ expression: TargetBuilder) -> ProjectComponentBuilder { + .init(targets: expression.targetBuildable.map { $0.buildTarget() }) + } +} + +extension ProjectComponentBuilder { + public static func buildExpression(_ expression: TargetBuildable) -> ProjectComponentBuilder { + .init(targets: [expression.buildTarget()]) + } + + public static func buildExpression(_ expression: TargetBuildable...) -> ProjectComponentBuilder { + .init(targets: expression.map { $0.buildTarget() }) + } + + public static func buildExpression(_ expression: [TargetBuildable]) -> ProjectComponentBuilder { + .init(targets: expression.map { $0.buildTarget() }) + } +} + +extension ProjectComponentBuilder { + public static func buildExpression(_ expression: SchemeBuildable) -> ProjectComponentBuilder { + .init(schemes: [expression.buildScheme()]) + } + + public static func buildExpression(_ expression: SchemeBuildable...) -> ProjectComponentBuilder { + .init(schemes: expression.map { $0.buildScheme() }) + } + + public static func buildExpression(_ expression: [SchemeBuildable]) -> ProjectComponentBuilder { + .init(schemes: expression.map { $0.buildScheme() }) + } +} + +public extension Project { + init( + name: String, + packages: [Package] = [], + options: Options = .options(), + @ProjectComponentBuilder components builder: () -> ProjectComponentBuilder + ) { + let builder = builder() + self.init( + name: name, + organizationName: .organizationName, + options: options, + packages: packages, + targets: builder.targets, + schemes: builder.schemes + ) + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift new file mode 100644 index 00000000..8d865b7e --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift @@ -0,0 +1,42 @@ +// +// AppScheme.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct AppScheme: SchemeBuildable { + public let name: String + + public let shared: Bool = true + public var buildAction: BuildAction? { + .buildAction(targets: ["\(name)"]) + } + public var testAction: TestAction? { + .targets( + ["\(name)Tests"], + configuration: .debug, + options: .options( + coverage: true, + codeCoverageTargets: ["\(name)"] + ) + ) + } + public var runAction: RunAction? { + .runAction( + configuration: .debug, + arguments: .arguments( + launchArguments: [ + .launchArgument( + name: "-FIRDebugEnabled", + isEnabled: true + ) + ] + ) + ) + } + + public init(name: String) { + self.name = name + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/SampleAppScheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/SampleAppScheme.swift new file mode 100644 index 00000000..69b38d47 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/SampleAppScheme.swift @@ -0,0 +1,21 @@ +// +// SampleAppScheme.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct SampleAppScheme: SchemeBuildable { + public let name: String + + public let shared: Bool = true + public var buildAction: BuildAction? { + .buildAction( + targets: ["\(name)"] + ) + } + + public init(name: String) { + self.name = name + "SampleApp" + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UITestsScheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UITestsScheme.swift new file mode 100644 index 00000000..ae9c1c80 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UITestsScheme.swift @@ -0,0 +1,30 @@ +// +// UITestsScheme.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct UITestsScheme: SchemeBuildable { + public let targetName: String + + public var name: String { "\(targetName)UITests" } + public var shared: Bool = true + public var buildAction: BuildAction? { + .buildAction(targets: ["\(targetName)"]) + } + public var testAction: TestAction? { + .targets( + ["\(name)"], + configuration: .debug, + options: .options( + coverage: true, + codeCoverageTargets: ["\(targetName)"] + ) + ) + } + + public init(targetName: String) { + self.targetName = targetName + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UnitTestsScheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UnitTestsScheme.swift new file mode 100644 index 00000000..5fd86297 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/UnitTestsScheme.swift @@ -0,0 +1,30 @@ +// +// UnitTestsScheme.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct UnitTestsScheme: SchemeBuildable { + public let targetName: String + + public var name: String { "\(targetName)Tests" } + public let shared: Bool = true + public var buildAction: BuildAction? { + .buildAction(targets: ["\(targetName)"]) + } + public var testAction: TestAction? { + .targets( + ["\(name)"], + configuration: .debug, + options: .options( + coverage: true, + codeCoverageTargets: ["\(targetName)"] + ) + ) + } + + public init(targetName: String) { + self.targetName = targetName + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/SchemeBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/SchemeBuildable.swift new file mode 100644 index 00000000..ab657f35 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/SchemeBuildable.swift @@ -0,0 +1,43 @@ +// +// SchemeBuildable.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public protocol SchemeBuildable { + var name: String { get } + var shared: Bool { get } + var hidden: Bool { get } + var buildAction: BuildAction? { get } + var testAction: TestAction? { get } + var runAction: RunAction? { get } + var archiveAction: ArchiveAction? { get } + var profileAction: ProfileAction? { get } + var analyzeAction: AnalyzeAction? { get } +} + +public extension SchemeBuildable { + var shared: Bool { true } + var hidden: Bool { false } + var buildAction: BuildAction? { nil } + var testAction: TestAction? { nil } + var runAction: RunAction? { .runAction(configuration: .debug) } + var archiveAction: ArchiveAction? { .archiveAction(configuration: .release) } + var profileAction: ProfileAction? { nil } + var analyzeAction: AnalyzeAction? { nil } + + func buildScheme() -> Scheme { + .scheme( + name: name, + shared: shared, + hidden: hidden, + buildAction: buildAction, + testAction: testAction, + runAction: runAction, + archiveAction: archiveAction, + profileAction: profileAction, + analyzeAction: analyzeAction + ) + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift new file mode 100644 index 00000000..d833de66 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift @@ -0,0 +1,31 @@ +// +// App.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +public struct App: TargetBuildable { + public let name: String + public let dependencies: [TargetDependency] + + public let product: Product = .app + public let bundleId: String = .bundleID + public let infoPlist: InfoPlist? = .appInfoPlist + public let sources: SourceFilesList? = ["Sources/**"] + public let resources: ResourceFileElements? = ["Resources/**"] + public let scripts: [TargetScript] = [.swiftLint] + public let settings: Settings? = .appDebug + + public var entitlements: Entitlements? { + .file(path: .relativeToManifest("\(name).entitlements")) + } + + public init( + name: String, + @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder + ) { + self.name = name + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift new file mode 100644 index 00000000..2d4e0497 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift @@ -0,0 +1,32 @@ +// +// Feature.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct Feature: ImplementTarget { + public let name: String + public let hasResource: Bool + public let dependencies: [TargetDependency] + + public let product: Product = .staticFramework + public let infoPlist: InfoPlist = .frameworkInfoPlist + public let settings: Settings = .frameworkDebug + public var scripts: [TargetScript] = [.featureSwiftLint] + + public var resources: ResourceFileElements? { hasResource ? ["Resources/**"] : nil } + public var targetDependencyPath: Path { + .relativeToRoot("Projects/Feature/\(name)") + } + + public init( + name: String, + hasResource: Bool = false, + @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() } + ) { + self.name = name + self.hasResource = hasResource + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift new file mode 100644 index 00000000..6eb0de6c --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift @@ -0,0 +1,27 @@ +// +// SampleApp.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct SampleApp: BundleIDSuffixTarget { + public let name: String + public let dependencies: [TargetDependency] + + public let product: Product = .app + public let bundleId: String = .bundleID + ".Demo" + public let sources: SourceFilesList? = ["Demo/**"] + public let scripts: [TargetScript] = [.featureSwiftLint] + public let settings: Settings? = .appDebug + + public var infoPlist: InfoPlist? { .demoAppInfoPlist(name: name) } + + public init( + name: String, + @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder + ) { + self.name = name + "SampleApp" + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift new file mode 100644 index 00000000..3c9f6f3c --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift @@ -0,0 +1,20 @@ +// +// UnitTests.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct UnitTests: TestsTarget { + public var name: String + + public let product: Product = .unitTests + + public var bundleId: String { + "\(name).Tests" + } + + public init(name: String) { + self.name = name + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift new file mode 100644 index 00000000..7d3ec8ce --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift @@ -0,0 +1,52 @@ +// +// WidgetExtension.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public struct WidgetExtension: AppExtensionTarget { + public let name: String + public let dependencies: [TargetDependency] + + public let infoPlist: InfoPlist? = .extendingDefault(with: .widgetInfoPlist) + public let scripts: [TargetScript] = [.swiftLint] + + public var sources: SourceFilesList? { ["\(name)/**"] } + public var resources: ResourceFileElements? { + [ + "Resources/Model.xcdatamodeld", + "Resources/total_stationList.json", + "Widget/Resources/**", + ] + } + public var entitlements: Entitlements? { + .file(path: .relativeToRoot("Projects/App/Widget.entitlements")) + } + public var settings: Settings? { + Settings.settings( + base: .init() + .setCodeSignManual() + .setProvisioning(), + configurations: [ + .debug( + name: .debug, + xcconfig: .relativeToRoot("XCConfig/\(name)_Debug.xcconfig") + ), + .release( + name: .release, + xcconfig: .relativeToRoot("XCConfig/\(name)_Release.xcconfig") + ), + ] + ) + } + public var bundleIDSuffix: String { name } + + public init( + name: String, + @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder + ) { + self.name = name + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift new file mode 100644 index 00000000..2b74f03d --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift @@ -0,0 +1,81 @@ +// +// TargetBuildable.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +public protocol TargetBuildable { + var name: String { get } + var product: Product { get } + var productName: String? { get } + var bundleId: String { get } + var infoPlist: InfoPlist? { get } + var sources: SourceFilesList? { get } + var resources: ResourceFileElements? { get } + var copyFiles: [CopyFilesAction]? { get } + var headers: Headers? { get } + var entitlements: Entitlements? { get } + var scripts: [TargetScript] { get } + var dependencies: [TargetDependency] { get } + var settings: Settings? { get } + var coreDataModels: [CoreDataModel] { get } + var environmentVariables: [String : EnvironmentVariable] { get } + var launchArguments: [LaunchArgument] { get } + var additionalFiles: [FileElement] { get } + var buildRules: [BuildRule] { get } + var mergedBinaryType: MergedBinaryType { get } + var mergeable: Bool { get } + var onDemandResourcesTags: OnDemandResourcesTags? { get } +} + +public extension TargetBuildable { + var destinations: Destinations { .iOS } + var productName: String? { nil } + var deploymentTargets: DeploymentTargets? { .deploymentTargets } + var infoPlist: InfoPlist? { .default } + var sources: SourceFilesList? { nil } + var resources: ResourceFileElements? { nil } + var copyFiles: [CopyFilesAction]? { nil } + var headers: Headers? { nil } + var entitlements: Entitlements? { nil } + var scripts: [TargetScript] { [] } + var dependencies: [TargetDependency] { [] } + var settings: Settings? { nil } + var coreDataModels: [CoreDataModel] { [] } + var environmentVariables: [String : EnvironmentVariable] { [:] } + var launchArguments: [LaunchArgument] { [] } + var additionalFiles: [FileElement] { [] } + var buildRules: [BuildRule] { [] } + var mergedBinaryType: MergedBinaryType { .disabled } + var mergeable: Bool { false } + var onDemandResourcesTags: OnDemandResourcesTags? { nil } + + func buildTarget() -> Target { + .target( + name: name, + destinations: destinations, + product: product, + productName: productName, + bundleId: bundleId, + deploymentTargets: deploymentTargets, + infoPlist: infoPlist, + sources: sources, + resources: resources, + copyFiles: copyFiles, + headers: headers, + entitlements: entitlements, + scripts: scripts, + dependencies: dependencies, + settings: settings, + coreDataModels: coreDataModels, + environmentVariables: environmentVariables, + launchArguments: launchArguments, + additionalFiles: additionalFiles, + buildRules: buildRules, + mergedBinaryType: mergedBinaryType, + mergeable: mergeable, + onDemandResourcesTags: onDemandResourcesTags + ) + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/AppExtensionTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/AppExtensionTarget.swift new file mode 100644 index 00000000..779373db --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/AppExtensionTarget.swift @@ -0,0 +1,12 @@ +// +// AppExtensionTarget.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +public protocol AppExtensionTarget: BundleIDSuffixTarget { } + +public extension AppExtensionTarget { + var product: Product { .appExtension } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/BundleIDSuffixTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/BundleIDSuffixTarget.swift new file mode 100644 index 00000000..3faf2468 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/BundleIDSuffixTarget.swift @@ -0,0 +1,12 @@ +// +// BundleIDSuffixTarget.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public protocol BundleIDSuffixTarget: TargetBuildable { } + +public extension BundleIDSuffixTarget { + var bundleId: String { [.bundleID, name].joined(separator: ".") } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift new file mode 100644 index 00000000..b1a6b0a7 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift @@ -0,0 +1,13 @@ +// +// FrameworkTarget.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public protocol FrameworkTarget: ImplementTarget, TypeNameContains { } + +public extension FrameworkTarget { + var scripts: [TargetScript] { [.swiftLint] } + var targetDependencyPath: Path { .relativeToRoot("Projects/\(name)") } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift new file mode 100644 index 00000000..e9da247b --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift @@ -0,0 +1,14 @@ +// +// ImplementTarget.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +public protocol ImplementTarget: BundleIDSuffixTarget, LocalDependency { } + +public extension ImplementTarget { + var sources: SourceFilesList? { ["Sources/**"] } + var infoPlist: InfoPlist { .frameworkInfoPlist } + var settings: Settings { .frameworkDebug } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift new file mode 100644 index 00000000..3f6a8b6e --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift @@ -0,0 +1,14 @@ +// +// InterfaceTarget.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public protocol InterfaceTarget: BundleIDSuffixTarget, LocalDependency { } + +extension InterfaceTarget { + var product: Product { .framework } + var infoPlist: InfoPlist { .frameworkInfoPlist } + var settings: Settings { .frameworkDebug } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift new file mode 100644 index 00000000..4f659b66 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift @@ -0,0 +1,13 @@ +// +// TestingTarget.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public protocol TestingTarget: TargetBuildable { } + +public extension TestingTarget { + var infoPlist: InfoPlist? { .frameworkInfoPlist } + var sources: SourceFilesList? { ["Testing/**"] } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift new file mode 100644 index 00000000..79b2123e --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift @@ -0,0 +1,33 @@ +// +// TestsTarget.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public protocol TestsTarget: TargetBuildable { } + +public extension TestsTarget { + var infoPlist: InfoPlist? { .frameworkInfoPlist } + var sources: SourceFilesList? { ["Tests/**"] } + var settings: Settings? { + .settings( + base: .baseSetting + .setVersion() + .setCodeSignManual() + .setProvisioning() + .enableTestabilty(), + configurations: [ + .debug( + name: .debug, + xcconfig: .relativeToRoot("XCConfig/App_Debug.xcconfig") + ), + .release( + name: .release, + xcconfig: .relativeToRoot("XCConfig/App_Release.xcconfig") + ), + ], + defaultSettings: .recommended + ) + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/LocalDependency.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/LocalDependency.swift new file mode 100644 index 00000000..6b10532a --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/LocalDependency.swift @@ -0,0 +1,16 @@ +// +// LocalDependency.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/6/25. +// + +public protocol LocalDependency: TargetDependencyBuildable { + var targetDependencyPath: Path { get } +} + +public extension LocalDependency where Self: TargetBuildable { + func buildTargetDependency() -> [TargetDependency] { + [.project(target: name, path: targetDependencyPath)] + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/SPMDependency.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/SPMDependency.swift new file mode 100644 index 00000000..05f586d4 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/SPMDependency.swift @@ -0,0 +1,16 @@ +// +// SPMDependency.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +public protocol SPMDependency: TargetDependencyBuildable, TypeNameContains { + var targetName: String { get } +} + +public extension SPMDependency { + func buildTargetDependency() -> [TargetDependency] { + [.external(name: targetName)] + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/XCFrameworkDependency.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/XCFrameworkDependency.swift new file mode 100644 index 00000000..b32573d0 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependency/XCFrameworkDependency.swift @@ -0,0 +1,17 @@ +// +// XCFrameworkDependency.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +/// .xcframework는 Frameworks/ 경로에 위치해야 합니다. +public protocol XCFrameworkDependency: TargetDependencyBuildable, TypeNameContains { + var frameworkName: String { get } +} + +public extension XCFrameworkDependency { + func buildTargetDependency() -> [TargetDependency] { + [.xcframework(path: .relativeToRoot("Frameworks/\(frameworkName).xcframework"))] + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependencyBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependencyBuildable.swift new file mode 100644 index 00000000..77434d48 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetDependencyBuildable/TargetDependencyBuildable.swift @@ -0,0 +1,16 @@ +// +// TargetDependencyBuildable.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +public protocol TargetDependencyBuildable { + func buildTargetDependency() -> [TargetDependency] +} + +extension TargetDependency: TargetDependencyBuildable { + public func buildTargetDependency() -> [TargetDependency] { + [self] + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift new file mode 100644 index 00000000..60693286 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift @@ -0,0 +1,53 @@ +// +// TargetBuilder.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +@resultBuilder +public struct TargetBuilder { + var dependencyBuildable: [TargetDependencyBuildable] = .init() + var targetBuildable: [TargetBuildable] = .init() +} + +// MARK: TargetBuilder +extension TargetBuilder { + public static func buildBlock() -> TargetBuilder { + .init() + } + + public static func buildExpression(_ expression: TargetBuilder...) -> TargetBuilder { + .init( + dependencyBuildable: expression.flatMap { $0.dependencyBuildable }, + targetBuildable: expression.flatMap { $0.targetBuildable } + ) + } + + public static func buildPartialBlock(first: TargetBuilder) -> TargetBuilder { + first + } + + public static func buildPartialBlock(accumulated: TargetBuilder, next: TargetBuilder) -> TargetBuilder { + .init( + dependencyBuildable: accumulated.dependencyBuildable + next.dependencyBuildable, + targetBuildable: accumulated.targetBuildable + next.targetBuildable + ) + } +} + +// MARK: TargetBuildable +public extension TargetBuilder { + static func buildExpression(_ expression: TargetBuildable) -> TargetBuilder { + .init(targetBuildable: [expression]) + } + + static func buildEither(first component: [any TargetBuildable]) -> TargetBuilder { + .init(targetBuildable: component) + } + + static func buildEither(second component: [any TargetBuildable]) -> TargetBuilder { + .init(targetBuildable: component) + } +} + diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift new file mode 100644 index 00000000..fe8783b7 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift @@ -0,0 +1,49 @@ +// +// TargetDependencyBuilder.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +@resultBuilder +public struct TargetDependencyBuilder { + var dependencyBuildable: [TargetDependencyBuildable] = .init() + + public init() { } + + init(dependencyBuildable: [TargetDependencyBuildable]) { + self.dependencyBuildable = dependencyBuildable + } +} + +// MARK: TargetDependencyBuilder +public extension TargetDependencyBuilder { + static func buildBlock() -> TargetDependencyBuilder { + .init() + } + + static func buildExpression(_ expression: TargetDependencyBuilder...) -> TargetDependencyBuilder { + .init(dependencyBuildable: expression.flatMap { $0.dependencyBuildable }) + } + + static func buildPartialBlock(first: TargetDependencyBuilder) -> TargetDependencyBuilder { + first + } + + static func buildPartialBlock(accumulated: TargetDependencyBuilder, next: TargetDependencyBuilder) -> TargetDependencyBuilder { + .init(dependencyBuildable: accumulated.dependencyBuildable + next.dependencyBuildable) + } +} + +// MARK: TargetDependencyBuildable +public extension TargetDependencyBuilder { + static func buildExpression(_ expression: TargetDependencyBuildable) -> TargetDependencyBuilder { + .init(dependencyBuildable: [expression]) + } +} + +extension TargetDependencyBuilder: TargetDependencyBuildable { + public func buildTargetDependency() -> [TargetDependency] { + dependencyBuildable.flatMap { $0.buildTargetDependency() } + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Common.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Common.swift new file mode 100644 index 00000000..279e5a54 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Common.swift @@ -0,0 +1,8 @@ +// +// Common.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +@_exported import ProjectDescription diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift index b41fc50e..b602b82e 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift @@ -43,7 +43,7 @@ extension SettingValue { } public extension DeploymentTargets { - static let deploymentTarget: Self = .iOS(.targetVersion) + static let deploymentTargets: Self = .iOS(.targetVersion) } public extension Platform { diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeNameContains.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeNameContains.swift new file mode 100644 index 00000000..2b826221 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeNameContains.swift @@ -0,0 +1,26 @@ +// +// TypeNameContains.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +import Foundation + +public protocol TypeNameContains { } + +public extension TypeNameContains { + var typeName: String { String(describing: type(of: self)) } +} + +public extension TypeNameContains where Self: SPMDependency { + var targetName: String { typeName } +} + +public extension TypeNameContains where Self: XCFrameworkDependency { + var frameworkName: String { typeName } +} + +public extension TypeNameContains where Self: TargetBuildable { + var name: String { typeName } +} diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift index bcea0872..1b854372 100644 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift @@ -101,7 +101,7 @@ public extension Project { destinations: .iOS, product: .app, bundleId: .bundleID, - deploymentTargets: .deploymentTarget, + deploymentTargets: .deploymentTargets, infoPlist: .appInfoPlist, sources: ["Sources/**"], resources: ["Resources/**"], @@ -122,7 +122,7 @@ public extension Project { destinations: .iOS, product: .app, bundleId: "\(String.bundleID).\(name)Demo", - deploymentTargets: .deploymentTarget, + deploymentTargets: .deploymentTargets, infoPlist: .demoAppInfoPlist(name: name), sources: ["Demo/**"], entitlements: entitlements, @@ -148,7 +148,7 @@ public extension Project { destinations: .iOS, product: productType, bundleId: .bundleID + ".\(name)", - deploymentTargets: .deploymentTarget, + deploymentTargets: .deploymentTargets, infoPlist: .frameworkInfoPlist, sources: ["Sources/**"], resources: hasResource ? ["Resources/**"] : nil, @@ -172,7 +172,7 @@ public extension Project { destinations: .iOS, product: .appExtension, bundleId: .bundleID + ".\(name)", - deploymentTargets: .deploymentTarget, + deploymentTargets: .deploymentTargets, infoPlist: plist, sources: ["\(name)/**"], resources: resources, @@ -207,7 +207,7 @@ public extension Project { destinations: .iOS, product: .unitTests, bundleId: .bundleID + ".\(name)Test", - deploymentTargets: .deploymentTarget, + deploymentTargets: .deploymentTargets, infoPlist: .frameworkInfoPlist, sources: ["Tests/**"], scripts: isFeature ? [.featureSwiftLint] : [.swiftLint], @@ -226,7 +226,7 @@ public extension Project { destinations: .iOS, product: .uiTests, bundleId: .bundleID + ".\(name)Test", - deploymentTargets: .deploymentTarget, + deploymentTargets: .deploymentTargets, infoPlist: .frameworkInfoPlist, sources: ["Tests/**"], scripts: isFeature ? [.featureSwiftLint] : [.swiftLint], From 2f1ebcd0247e81abfe2910cd18a90f45b264826f Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:22:26 +0900 Subject: [PATCH 09/28] =?UTF-8?q?fix:=20Project.swift=20Template=20?= =?UTF-8?q?=EC=84=A0=EC=96=B8=ED=98=95=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tuist/Templates/feature/project.stencil | 13 +++++++++++++ Tuist/Templates/framework/project.stencil | 23 ++++++++++++++--------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Tuist/Templates/feature/project.stencil b/Tuist/Templates/feature/project.stencil index ab8478f8..ea0dbfb5 100644 --- a/Tuist/Templates/feature/project.stencil +++ b/Tuist/Templates/feature/project.stencil @@ -8,3 +8,16 @@ let project = Project.makeProject( .featureDependency ] ) + +let project = Project( + name: "{{ name }}", + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "{{ name }}Feature") { + FeatureDependency() + } + SampleApp(name: "{{ name }}Feature") { + Feature(name: "{{ name }}Feature") + } + SampleAppScheme(name: "{{ name }}Feature") +} diff --git a/Tuist/Templates/framework/project.stencil b/Tuist/Templates/framework/project.stencil index 06fba0fc..ab2444b8 100644 --- a/Tuist/Templates/framework/project.stencil +++ b/Tuist/Templates/framework/project.stencil @@ -1,10 +1,15 @@ -import ProjectDescription -import ProjectDescriptionHelpers +let project = Project(name: "{{ name }}") { + {{ name }}() { + } +} -let project = Project.makeProject( - name: "{{ name }}", - moduleType: .dynamicFramework, - isTestable: true, - dependencies: [ - ] -) +// Tuist/ProjectDescriptionHelpers/Local로 이동 +// 추후 자동화 예정 +public struct {{ name }}: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} From c60b5f4c62d80982e2653a84611af5bfc1de1029 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:23:21 +0900 Subject: [PATCH 10/28] =?UTF-8?q?feat:=20=EB=AA=A8=EB=93=88=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84=20=EB=82=98=ED=83=80?= =?UTF-8?q?=EB=82=B4=EB=8A=94=20=EC=84=A0=EC=96=B8=ED=98=95=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tuist/ProjectDescriptionHelpers/Common.swift | 9 +++++++ .../Local/Core.swift | 15 +++++++++++ .../Local/CoreDataService.swift | 15 +++++++++++ .../Local/Data.swift | 21 +++++++++++++++ .../Local/DesignSystem.swift | 16 ++++++++++++ .../Local/Domain.swift | 15 +++++++++++ .../Local/FeatureDependency.swift | 15 +++++++++++ .../Local/FirebaseInterface.swift | 26 +++++++++++++++++++ .../Local/MainFeature.swift | 15 +++++++++++ .../Local/NetworkService.swift | 15 +++++++++++ .../Local/ThirdPartyLibs.swift | 15 +++++++++++ .../SPM/FirebaseAnalytics.swift | 12 +++++++++ .../SPM/FirebaseMessaging.swift | 12 +++++++++ .../SPM/Lottie.swift | 12 +++++++++ .../SPM/RxCocoa.swift | 12 +++++++++ .../SPM/RxSwift.swift | 12 +++++++++ .../XCFramework/NMapsGeometry.swift | 12 +++++++++ .../XCFramework/NMapsMap.swift | 12 +++++++++ 18 files changed, 261 insertions(+) create mode 100644 Tuist/ProjectDescriptionHelpers/Common.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/Core.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/CoreDataService.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/Data.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/DesignSystem.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/Domain.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/FeatureDependency.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/FirebaseInterface.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/MainFeature.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/NetworkService.swift create mode 100644 Tuist/ProjectDescriptionHelpers/Local/ThirdPartyLibs.swift create mode 100644 Tuist/ProjectDescriptionHelpers/SPM/FirebaseAnalytics.swift create mode 100644 Tuist/ProjectDescriptionHelpers/SPM/FirebaseMessaging.swift create mode 100644 Tuist/ProjectDescriptionHelpers/SPM/Lottie.swift create mode 100644 Tuist/ProjectDescriptionHelpers/SPM/RxCocoa.swift create mode 100644 Tuist/ProjectDescriptionHelpers/SPM/RxSwift.swift create mode 100644 Tuist/ProjectDescriptionHelpers/XCFramework/NMapsGeometry.swift create mode 100644 Tuist/ProjectDescriptionHelpers/XCFramework/NMapsMap.swift diff --git a/Tuist/ProjectDescriptionHelpers/Common.swift b/Tuist/ProjectDescriptionHelpers/Common.swift new file mode 100644 index 00000000..f661597d --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Common.swift @@ -0,0 +1,9 @@ +// +// Common.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +import Foundation +@_exported import EnvironmentPlugin diff --git a/Tuist/ProjectDescriptionHelpers/Local/Core.swift b/Tuist/ProjectDescriptionHelpers/Local/Core.swift new file mode 100644 index 00000000..10efe1e9 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/Core.swift @@ -0,0 +1,15 @@ +// +// Core.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct Core: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/CoreDataService.swift b/Tuist/ProjectDescriptionHelpers/Local/CoreDataService.swift new file mode 100644 index 00000000..0d11cbed --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/CoreDataService.swift @@ -0,0 +1,15 @@ +// +// CoreDataService.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct CoreDataService: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/Data.swift b/Tuist/ProjectDescriptionHelpers/Local/Data.swift new file mode 100644 index 00000000..2626652b --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/Data.swift @@ -0,0 +1,21 @@ +// +// Data.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct Data: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + public let coreDataModels: [CoreDataModel] = [ + .coreDataModel( + "../App/Resources/Model.xcdatamodeld", + currentVersion: "Model_v2" + ) + ] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/DesignSystem.swift b/Tuist/ProjectDescriptionHelpers/Local/DesignSystem.swift new file mode 100644 index 00000000..abae57d6 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/DesignSystem.swift @@ -0,0 +1,16 @@ +// +// DesignSystem.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct DesignSystem: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + public let resources: ResourceFileElements? = ["Resources/**"] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/Domain.swift b/Tuist/ProjectDescriptionHelpers/Local/Domain.swift new file mode 100644 index 00000000..a957acc4 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/Domain.swift @@ -0,0 +1,15 @@ +// +// Domain.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct Domain: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/FeatureDependency.swift b/Tuist/ProjectDescriptionHelpers/Local/FeatureDependency.swift new file mode 100644 index 00000000..e5585b6e --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/FeatureDependency.swift @@ -0,0 +1,15 @@ +// +// FeatureDependency.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct FeatureDependency: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/FirebaseInterface.swift b/Tuist/ProjectDescriptionHelpers/Local/FirebaseInterface.swift new file mode 100644 index 00000000..24b893a2 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/FirebaseInterface.swift @@ -0,0 +1,26 @@ +// +// FirebaseInterface.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct FirebaseInterface: FrameworkTarget { + public let product: Product = .framework + + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} + +public struct FirebaseModule: FrameworkTarget { + public let product: Product = .staticFramework + + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/MainFeature.swift b/Tuist/ProjectDescriptionHelpers/Local/MainFeature.swift new file mode 100644 index 00000000..cf2dc569 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/MainFeature.swift @@ -0,0 +1,15 @@ +// +// MainFeature.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct MainFeature: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/NetworkService.swift b/Tuist/ProjectDescriptionHelpers/Local/NetworkService.swift new file mode 100644 index 00000000..1fe0e2f5 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/NetworkService.swift @@ -0,0 +1,15 @@ +// +// NetworkService.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/6/25. +// + +public struct NetworkService: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Local/ThirdPartyLibs.swift b/Tuist/ProjectDescriptionHelpers/Local/ThirdPartyLibs.swift new file mode 100644 index 00000000..4b2068c1 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/Local/ThirdPartyLibs.swift @@ -0,0 +1,15 @@ +// +// ThirdPartyLibs.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 4/6/25. +// + +public struct ThirdPartyLibs: FrameworkTarget { + public let product: Product = .framework + public let dependencies: [TargetDependency] + + public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + self.dependencies = builder().buildTargetDependency() + } +} diff --git a/Tuist/ProjectDescriptionHelpers/SPM/FirebaseAnalytics.swift b/Tuist/ProjectDescriptionHelpers/SPM/FirebaseAnalytics.swift new file mode 100644 index 00000000..05bc6f9b --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/SPM/FirebaseAnalytics.swift @@ -0,0 +1,12 @@ +// +// FirebaseAnalytics.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct FirebaseAnalytics: SPMDependency { + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/SPM/FirebaseMessaging.swift b/Tuist/ProjectDescriptionHelpers/SPM/FirebaseMessaging.swift new file mode 100644 index 00000000..df529d54 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/SPM/FirebaseMessaging.swift @@ -0,0 +1,12 @@ +// +// FirebaseMessaging.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct FirebaseMessaging: SPMDependency { + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/SPM/Lottie.swift b/Tuist/ProjectDescriptionHelpers/SPM/Lottie.swift new file mode 100644 index 00000000..4fc8e937 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/SPM/Lottie.swift @@ -0,0 +1,12 @@ +// +// Lottie.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct Lottie: SPMDependency { + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/SPM/RxCocoa.swift b/Tuist/ProjectDescriptionHelpers/SPM/RxCocoa.swift new file mode 100644 index 00000000..13d7ea70 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/SPM/RxCocoa.swift @@ -0,0 +1,12 @@ +// +// RxCocoa.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct RxCocoa: SPMDependency { + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/SPM/RxSwift.swift b/Tuist/ProjectDescriptionHelpers/SPM/RxSwift.swift new file mode 100644 index 00000000..613eccb1 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/SPM/RxSwift.swift @@ -0,0 +1,12 @@ +// +// RxSwift.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct RxSwift: SPMDependency { + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsGeometry.swift b/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsGeometry.swift new file mode 100644 index 00000000..999d4db4 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsGeometry.swift @@ -0,0 +1,12 @@ +// +// NMapsGeometry.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct NMapsGeometry: XCFrameworkDependency { + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsMap.swift b/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsMap.swift new file mode 100644 index 00000000..24e413f0 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsMap.swift @@ -0,0 +1,12 @@ +// +// NMapsMap.swift +// AlarmFeatureManifests +// +// Created by gnksbm on 3/31/25. +// + +import EnvironmentPlugin + +public struct NMapsMap: XCFrameworkDependency { + public init() { } +} From 6c8141775b22fa4f92e5a67600ab01554b9188f3 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:24:05 +0900 Subject: [PATCH 11/28] =?UTF-8?q?fix:=20Project.swift=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EC=84=A0=EC=96=B8=ED=98=95=EC=9C=BC=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/App/Project.swift | 47 ++++++------------- Projects/Core/Project.swift | 12 ++--- Projects/CoreDataService/Project.swift | 12 ++--- Projects/Data/Project.swift | 23 ++++----- Projects/DesignSystem/Project.swift | 20 ++------ Projects/Domain/Project.swift | 12 ++--- Projects/Feature/AlarmFeature/Project.swift | 17 ++++--- Projects/Feature/BusStopFeature/Project.swift | 17 ++++--- Projects/Feature/HomeFeature/Project.swift | 17 ++++--- Projects/Feature/NearMapFeature/Project.swift | 17 ++++--- Projects/Feature/SearchFeature/Project.swift | 17 ++++--- .../Feature/SettingsFeature/Project.swift | 17 ++++--- Projects/FeatureDependency/Project.swift | 14 +++--- Projects/FirebaseInterface/Project.swift | 10 ++-- Projects/FirebaseModule/Project.swift | 16 +++---- Projects/MainFeature/Project.swift | 22 ++++----- Projects/NetworkService/Project.swift | 13 +++-- Projects/ThirdPartyLibs/Project.swift | 19 ++++---- 18 files changed, 149 insertions(+), 173 deletions(-) diff --git a/Projects/App/Project.swift b/Projects/App/Project.swift index 48b11a3d..d5a8cf26 100644 --- a/Projects/App/Project.swift +++ b/Projects/App/Project.swift @@ -1,36 +1,17 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "App", - moduleType: .app, - entitlementsPath: .relativeToManifest("App.entitlements"), - hasResource: true, - appExtensionTarget: [ -// Project.appExtensionTarget( -// name: "Widget", -// plist: .extendingDefault( -// with: .widgetInfoPlist -// ), -// resources: [ -// "Resources/Model.xcdatamodeld", -// "Resources/total_stationList.json", -// "Widget/Resources/**", -// ], -// entitlements: .file( -// path: .relativeToRoot( -// "Projects/App/Widget.entitlements" -// ) -// ), -// dependencies: [ -// .mainFeature, -// .data, -// ] -// ) - ], - dependencies: [ - .MainFeature, - .Data, - .FirebaseModule - ] -) +let project = Project(name: "App") { + App(name: "App") { + MainFeature() + Data() + FirebaseModule() + } +// WidgetExtension(name: "Widget") { +// MainFeature() +// Data() +// } + AppScheme(name: "App") + UnitTestsScheme(targetName: "App") + UITestsScheme(targetName: "App") +} diff --git a/Projects/Core/Project.swift b/Projects/Core/Project.swift index 4c2430df..470841b5 100644 --- a/Projects/Core/Project.swift +++ b/Projects/Core/Project.swift @@ -1,10 +1,8 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "Core", - moduleType: .dynamicFramework, - dependencies: [ - .ThirdPartyLibs - ] -) +let project = Project(name: "Core") { + Core { + ThirdPartyLibs() + } +} diff --git a/Projects/CoreDataService/Project.swift b/Projects/CoreDataService/Project.swift index dc83eb74..6694b524 100644 --- a/Projects/CoreDataService/Project.swift +++ b/Projects/CoreDataService/Project.swift @@ -1,10 +1,8 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "CoreDataService", - moduleType: .dynamicFramework, - dependencies: [ - .Domain - ] -) +let project = Project(name: "CoreDataService") { + CoreDataService { + Domain() + } +} diff --git a/Projects/Data/Project.swift b/Projects/Data/Project.swift index 7d9dfbb4..2c39a700 100644 --- a/Projects/Data/Project.swift +++ b/Projects/Data/Project.swift @@ -1,18 +1,11 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "Data", - moduleType: .dynamicFramework, - dependencies: [ - .NetworkService, - .CoreDataService, - .FirebaseInterface - ], - coreDataModel: [ - .coreDataModel( - "../App/Resources/Model.xcdatamodeld", - currentVersion: "Model_v2" - ) - ] -) +let project = Project(name: "Data") { + Data { + Domain() + NetworkService() + CoreDataService() + FirebaseInterface() + } +} diff --git a/Projects/DesignSystem/Project.swift b/Projects/DesignSystem/Project.swift index a705afef..a5b496bd 100644 --- a/Projects/DesignSystem/Project.swift +++ b/Projects/DesignSystem/Project.swift @@ -1,18 +1,8 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "DesignSystem", - moduleType: .dynamicFramework, - hasResource: true, - dependencies: [ - .SPM.Lottie - ], - resourceSynthesizers: [ - .custom( - name: "Lottie", - parser: .json, - extensions: ["lottie"] - ), - ] -) +let project = Project(name: "DesignSystem") { + DesignSystem() { + Lottie() + } +} diff --git a/Projects/Domain/Project.swift b/Projects/Domain/Project.swift index d5100fd8..bccde979 100644 --- a/Projects/Domain/Project.swift +++ b/Projects/Domain/Project.swift @@ -1,10 +1,8 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "Domain", - moduleType: .dynamicFramework, - dependencies: [ - .Core - ] -) +let project = Project(name: "Domain") { + Domain { + Core() + } +} diff --git a/Projects/Feature/AlarmFeature/Project.swift b/Projects/Feature/AlarmFeature/Project.swift index d5da448a..0d700a20 100644 --- a/Projects/Feature/AlarmFeature/Project.swift +++ b/Projects/Feature/AlarmFeature/Project.swift @@ -1,10 +1,15 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( +let project = Project( name: "AlarmFeature", - moduleType: .feature, - dependencies: [ - .FeatureDependency - ] -) + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "AlarmFeature") { + FeatureDependency() + } + SampleApp(name: "AlarmFeature") { + Feature(name: "AlarmFeature") + } + SampleAppScheme(name: "AlarmFeature") +} diff --git a/Projects/Feature/BusStopFeature/Project.swift b/Projects/Feature/BusStopFeature/Project.swift index 133b4149..951ec6da 100644 --- a/Projects/Feature/BusStopFeature/Project.swift +++ b/Projects/Feature/BusStopFeature/Project.swift @@ -1,10 +1,15 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( +let project = Project( name: "BusStopFeature", - moduleType: .feature, - dependencies: [ - .FeatureDependency - ] -) + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "BusStopFeature") { + FeatureDependency() + } + SampleApp(name: "BusStopFeature") { + Feature(name: "BusStopFeature") + } + SampleAppScheme(name: "BusStopFeature") +} diff --git a/Projects/Feature/HomeFeature/Project.swift b/Projects/Feature/HomeFeature/Project.swift index 97c96991..ad79536e 100644 --- a/Projects/Feature/HomeFeature/Project.swift +++ b/Projects/Feature/HomeFeature/Project.swift @@ -1,10 +1,15 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( +let project = Project( name: "HomeFeature", - moduleType: .feature, - dependencies: [ - .FeatureDependency - ] -) + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "HomeFeature") { + FeatureDependency() + } + SampleApp(name: "HomeFeature") { + Feature(name: "HomeFeature") + } + SampleAppScheme(name: "HomeFeature") +} diff --git a/Projects/Feature/NearMapFeature/Project.swift b/Projects/Feature/NearMapFeature/Project.swift index 077b267e..30c9f30d 100644 --- a/Projects/Feature/NearMapFeature/Project.swift +++ b/Projects/Feature/NearMapFeature/Project.swift @@ -1,10 +1,15 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( +let project = Project( name: "NearMapFeature", - moduleType: .feature, - dependencies: [ - .FeatureDependency - ] -) + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "NearMapFeature") { + FeatureDependency() + } + SampleApp(name: "NearMapFeature") { + Feature(name: "NearMapFeature") + } + SampleAppScheme(name: "NearMapFeature") +} diff --git a/Projects/Feature/SearchFeature/Project.swift b/Projects/Feature/SearchFeature/Project.swift index 5db71008..69c10522 100644 --- a/Projects/Feature/SearchFeature/Project.swift +++ b/Projects/Feature/SearchFeature/Project.swift @@ -1,10 +1,15 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( +let project = Project( name: "SearchFeature", - moduleType: .feature, - dependencies: [ - .FeatureDependency - ] -) + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "SearchFeature") { + FeatureDependency() + } + SampleApp(name: "SearchFeature") { + Feature(name: "SearchFeature") + } + SampleAppScheme(name: "SearchFeature") +} diff --git a/Projects/Feature/SettingsFeature/Project.swift b/Projects/Feature/SettingsFeature/Project.swift index 9161f4da..40cef516 100644 --- a/Projects/Feature/SettingsFeature/Project.swift +++ b/Projects/Feature/SettingsFeature/Project.swift @@ -1,10 +1,15 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( +let project = Project( name: "SettingsFeature", - moduleType: .feature, - dependencies: [ - .FeatureDependency - ] -) + options: .options(automaticSchemesOptions: .disabled) +) { + Feature(name: "SettingsFeature") { + FeatureDependency() + } + SampleApp(name: "SettingsFeature") { + Feature(name: "SettingsFeature") + } + SampleAppScheme(name: "SettingsFeature") +} diff --git a/Projects/FeatureDependency/Project.swift b/Projects/FeatureDependency/Project.swift index a5df79ea..28c122cf 100644 --- a/Projects/FeatureDependency/Project.swift +++ b/Projects/FeatureDependency/Project.swift @@ -1,11 +1,9 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "FeatureDependency", - moduleType: .dynamicFramework, - dependencies: [ - .DesignSystem, - .Domain - ] -) +let project = Project(name: "FeatureDependency") { + FeatureDependency() { + DesignSystem() + Domain() + } +} diff --git a/Projects/FirebaseInterface/Project.swift b/Projects/FirebaseInterface/Project.swift index 366845c9..60a19da4 100644 --- a/Projects/FirebaseInterface/Project.swift +++ b/Projects/FirebaseInterface/Project.swift @@ -8,10 +8,6 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "FirebaseInterface", - moduleType: .dynamicFramework, - dependencies: [ - ] -) - +let project = Project(name: "FirebaseInterface") { + FirebaseInterface() +} diff --git a/Projects/FirebaseModule/Project.swift b/Projects/FirebaseModule/Project.swift index 1832389c..e54f60fa 100644 --- a/Projects/FirebaseModule/Project.swift +++ b/Projects/FirebaseModule/Project.swift @@ -8,12 +8,10 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "FirebaseModule", - moduleType: .staticFramework, - dependencies: [ - .FirebaseInterface, - .SPM.FirebaseAnalytics, - .SPM.FirebaseMessaging - ] -) +let project = Project(name: "FirebaseModule") { + FirebaseModule { + FirebaseInterface() + FirebaseAnalytics() + FirebaseMessaging() + } +} diff --git a/Projects/MainFeature/Project.swift b/Projects/MainFeature/Project.swift index 8bce78ad..eef62d46 100644 --- a/Projects/MainFeature/Project.swift +++ b/Projects/MainFeature/Project.swift @@ -1,15 +1,13 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "MainFeature", - moduleType: .dynamicFramework, - dependencies: [ - .Home, - .Alarm, - .Settings, - .BusStop, - .Search, - .NearMap - ] -) +let project = Project(name: "MainFeature") { + MainFeature { + Feature(name: "HomeFeature") + Feature(name: "AlarmFeature") + Feature(name: "SettingsFeature") + Feature(name: "BusStopFeature") + Feature(name: "SearchFeature") + Feature(name: "NearMapFeature") + } +} diff --git a/Projects/NetworkService/Project.swift b/Projects/NetworkService/Project.swift index dc517d02..b84952b3 100644 --- a/Projects/NetworkService/Project.swift +++ b/Projects/NetworkService/Project.swift @@ -1,10 +1,9 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "NetworkService", - moduleType: .dynamicFramework, - dependencies: [ - .Domain, - ] -) +let project = Project(name: "NetworkService") { + NetworkService { + // TODO: Domain 의존성 제거, RxSwift를 의존하도록, Core / Data 의존성 필요 여부 체크 + Domain() + } +} diff --git a/Projects/ThirdPartyLibs/Project.swift b/Projects/ThirdPartyLibs/Project.swift index 25d82100..657dc538 100644 --- a/Projects/ThirdPartyLibs/Project.swift +++ b/Projects/ThirdPartyLibs/Project.swift @@ -1,13 +1,12 @@ import ProjectDescription import ProjectDescriptionHelpers -let project = Project.makeProject( - name: "ThirdPartyLibs", - moduleType: .dynamicFramework, - dependencies: [ - .XCFramework.NMapsGeometry, - .XCFramework.NMapsMap, - .SPM.RxSwift, - .SPM.RxCocoa - ] -) +let project = Project(name: "ThirdPartyLibs") { + ThirdPartyLibs() { + // TODO: NaverMap을 사용하지 않는 모듈에서 의존성하지 않도록 + NMapsGeometry() + NMapsMap() + RxSwift() + RxCocoa() + } +} From 4a375c4de2ba832eb1b6725b88b9e83888d3c62b Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 6 Apr 2025 18:29:21 +0900 Subject: [PATCH 12/28] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TargetBuildable/TargetBuildable.swift | 2 +- .../Environment.swift | 26 +- .../ProjectDescriptionHelpers/InfoPlist.swift | 6 + .../ProjectDescriptionHelpers/XCConfig.swift | 4 +- Tuist/ProjectDescriptionHelpers/Path+.swift | 22 -- .../Project+Target.swift | 23 -- .../Project+Templates.swift | 237 ------------------ .../TargetDependency+Dependency.swift | 31 --- .../TargetDependency+Feature.swift | 21 -- .../TargetDependency+Module.swift | 27 -- 10 files changed, 11 insertions(+), 388 deletions(-) delete mode 100644 Tuist/ProjectDescriptionHelpers/Path+.swift delete mode 100644 Tuist/ProjectDescriptionHelpers/Project+Target.swift delete mode 100644 Tuist/ProjectDescriptionHelpers/Project+Templates.swift delete mode 100644 Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift delete mode 100644 Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift delete mode 100644 Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift index 2b74f03d..1108877e 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetBuildable.swift @@ -32,7 +32,7 @@ public protocol TargetBuildable { public extension TargetBuildable { var destinations: Destinations { .iOS } var productName: String? { nil } - var deploymentTargets: DeploymentTargets? { .deploymentTargets } + var deploymentTargets: DeploymentTargets? { .iOS(.targetVersion) } var infoPlist: InfoPlist? { .default } var sources: SourceFilesList? { nil } var resources: ResourceFileElements? { nil } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift index b602b82e..72327099 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Environment.swift @@ -13,6 +13,8 @@ public extension String { static let displayName: Self = "버스어디" static let organizationName = "Pepsi-Club" static let teamId = "T4W7695R5C" + static let targetVersion: Self = "16.0" + static let bundleID: Self = "com.\(organizationName).\(appName)" /// 앱스토어에 게시할 때마다 증가해줘야 하는 버전 static let marketingVersion: Self = "1.3.0" /// 개발자가 내부적으로 확인하기 위한 용도 (날짜를 사용하기도 함 - 2023.12.8.1 ) @@ -25,27 +27,3 @@ public extension String { return formatter.string(from: date) } } - -public extension String { - static let bundleID: Self = "com.\(organizationName).\(appName)" - static let targetVersion: Self = "16.0" -} - -extension Plist.Value { - static let bundleDisplayName: Self = .string(.displayName) - static let bundleShortVersionString: Self = .string(.marketingVersion) - static let bundleVersion: Self = .string(.buildVersion) -} - -extension SettingValue { - static let marketingVersion: Self = .string(.marketingVersion) - static let currentProjectVersion: Self = .string(.buildVersion) -} - -public extension DeploymentTargets { - static let deploymentTargets: Self = .iOS(.targetVersion) -} - -public extension Platform { - static let platform: Self = .iOS -} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift index 49a62959..343e64f1 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift @@ -44,6 +44,12 @@ public extension InfoPlist { ) } +extension Plist.Value { + static let bundleDisplayName: Self = .string(.displayName) + static let bundleShortVersionString: Self = .string(.marketingVersion) + static let bundleVersion: Self = .string(.buildVersion) +} + public extension [String: Plist.Value] { static let secrets: Self = [ "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift index d3614258..47a38f5d 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/XCConfig.swift @@ -84,8 +84,8 @@ public extension SettingsDictionary { merging( [ "VERSIONING_SYSTEM": .string("apple-generic"), - "CURRENT_PROJECT_VERSION": .currentProjectVersion, - "MARKETING_VERSION": .marketingVersion + "CURRENT_PROJECT_VERSION": .string(.buildVersion), + "MARKETING_VERSION": .string(.marketingVersion) ] ) } diff --git a/Tuist/ProjectDescriptionHelpers/Path+.swift b/Tuist/ProjectDescriptionHelpers/Path+.swift deleted file mode 100644 index c7b556ac..00000000 --- a/Tuist/ProjectDescriptionHelpers/Path+.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// Path+.swift -// ProjectDescriptionHelpers -// -// Created by gnksbm on 3/30/25. -// - -import ProjectDescription - -extension Path { - static func relativeToFrameworks(_ name: String) -> Path { - .relativeToRoot("Frameworks/\(name).xcframework") - } - - static func relativeToProjects(_ name: String) -> Path { - .relativeToRoot("Projects/\(name)") - } - - static func relativeToFeature(_ name: String) -> Path { - .relativeToRoot("Projects/Feature/\(name)Feature") - } -} diff --git a/Tuist/ProjectDescriptionHelpers/Project+Target.swift b/Tuist/ProjectDescriptionHelpers/Project+Target.swift deleted file mode 100644 index cf01e485..00000000 --- a/Tuist/ProjectDescriptionHelpers/Project+Target.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// Scripts.swift -// ProjectDescriptionHelpers -// -// Created by gnksbm on 2023/11/19. -// - -import ProjectDescription - -public enum ModuleType { - case app, dynamicFramework, staticFramework, feature - - var product: Product { - switch self { - case .app: - return .app - case .dynamicFramework: - return .framework - case .staticFramework, .feature: - return .staticFramework - } - } -} diff --git a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift b/Tuist/ProjectDescriptionHelpers/Project+Templates.swift deleted file mode 100644 index 1b854372..00000000 --- a/Tuist/ProjectDescriptionHelpers/Project+Templates.swift +++ /dev/null @@ -1,237 +0,0 @@ -// -// Project+Templates.swift -// Config -// -// Created by gnksbm on 2023/11/19. -// - -import ProjectDescription -import EnvironmentPlugin - -public extension Project { - // MARK: Refact - static func makeProject( - name: String, - moduleType: ModuleType, - entitlementsPath: Path? = nil, - isTestable: Bool = false, - hasResource: Bool = false, - appExtensionTarget: [Target] = [], - packages: [Package] = [], - dependencies: [TargetDependency], - coreDataModel: [CoreDataModel] = [], - resourceSynthesizers: [ResourceSynthesizer] = [] - ) -> Self { - var schemes = [Scheme]() - var targets = [Target]() - var targetModule: Target - var entitlements: Entitlements? - if let entitlementsPath { - entitlements = .file(path: entitlementsPath) - } - switch moduleType { - case .app: - targetModule = appTarget( - name: name, - entitlements: entitlements, - dependencies: dependencies + appExtensionTarget.map { - TargetDependency.target(name: $0.name) - } - ) - let uiTestsTarget = uiTestTarget( - name: name, - dependencies: [.target(targetModule)] - ) - targets.append(uiTestsTarget) - appExtensionTarget.forEach { - targets.append($0) - } - schemes.append(.moduleScheme(name: name)) - schemes.append(.uiTestsScheme(name: name)) - case .dynamicFramework, .staticFramework: - targetModule = frameworkTarget( - name: name, - entitlements: entitlements, - hasResource: hasResource, - productType: moduleType.product, - dependencies: dependencies, - coreDataModel: coreDataModel - ) - case .feature: - targetModule = frameworkTarget( - name: name, - entitlements: entitlements, - hasResource: hasResource, - productType: moduleType.product, - isPresentation: true, - dependencies: dependencies, - coreDataModel: coreDataModel - ) -// let demoTarget = demoAppTarget( -// name: name, -// dependencies: [.target(targetModule)] -// ) -// targets.append(demoTarget) -// schemes.append(.moduleScheme(name: demoTarget.name)) - } - targets.append(targetModule) -// if isTestable { -// let test = unitTestTarget( -// name: name, -// dependencies: [.target(targetModule)] -// ) -// targets.append(test) -// } - return Project( - name: name, - organizationName: .organizationName, - packages: packages, - targets: targets, - schemes: schemes - ) - } - - private static func appTarget( - name: String, - entitlements: Entitlements?, - dependencies: [TargetDependency] - ) -> Target { - Target.target( - name: name, - destinations: .iOS, - product: .app, - bundleId: .bundleID, - deploymentTargets: .deploymentTargets, - infoPlist: .appInfoPlist, - sources: ["Sources/**"], - resources: ["Resources/**"], - entitlements: entitlements, - scripts: [.swiftLint], - dependencies: dependencies, - settings: .appDebug - ) - } - - private static func demoAppTarget( - name: String, - entitlements: Entitlements? = nil, - dependencies: [TargetDependency] - ) -> Target { - Target.target( - name: "\(name)Demo", - destinations: .iOS, - product: .app, - bundleId: "\(String.bundleID).\(name)Demo", - deploymentTargets: .deploymentTargets, - infoPlist: .demoAppInfoPlist(name: name), - sources: ["Demo/**"], - entitlements: entitlements, - scripts: [.featureSwiftLint], - dependencies: dependencies, - settings: .appDebug - ) - } - - private static func frameworkTarget( - name: String, - entitlements: Entitlements?, - hasResource: Bool, - productType: Product, - isPresentation: Bool = false, - dependencies: [TargetDependency], - coreDataModel: [CoreDataModel] - ) -> Target { - let scripts: [TargetScript] = isPresentation ? - [.featureSwiftLint] : [.swiftLint] - return Target.target( - name: name, - destinations: .iOS, - product: productType, - bundleId: .bundleID + ".\(name)", - deploymentTargets: .deploymentTargets, - infoPlist: .frameworkInfoPlist, - sources: ["Sources/**"], - resources: hasResource ? ["Resources/**"] : nil, - entitlements: entitlements, - scripts: scripts, - dependencies: dependencies, - settings: .frameworkDebug, - coreDataModels: coreDataModel - ) - } - - static func appExtensionTarget( - name: String, - plist: InfoPlist?, - resources: ResourceFileElements? = nil, - entitlements: Entitlements? = nil, - dependencies: [TargetDependency] - ) -> Target { - Target.target( - name: name, - destinations: .iOS, - product: .appExtension, - bundleId: .bundleID + ".\(name)", - deploymentTargets: .deploymentTargets, - infoPlist: plist, - sources: ["\(name)/**"], - resources: resources, - entitlements: entitlements, - scripts: [.swiftLint], - dependencies: dependencies, - settings: .settings( - base: .init() - .setCodeSignManual() - .setProvisioning(), - configurations: [ - .debug( - name: .debug, - xcconfig: .relativeToRoot("XCConfig/\(name)_Debug.xcconfig") - ), - .release( - name: .release, - xcconfig: .relativeToRoot("XCConfig/\(name)_Release.xcconfig") - ), - ] - ) - ) - } - - private static func unitTestTarget( - name: String, - isFeature: Bool = false, - dependencies: [TargetDependency] - ) -> Target { - Target.target( - name: "\(name)Tests", - destinations: .iOS, - product: .unitTests, - bundleId: .bundleID + ".\(name)Test", - deploymentTargets: .deploymentTargets, - infoPlist: .frameworkInfoPlist, - sources: ["Tests/**"], - scripts: isFeature ? [.featureSwiftLint] : [.swiftLint], - dependencies: dependencies, - settings: .test - ) - } - - private static func uiTestTarget( - name: String, - isFeature: Bool = false, - dependencies: [TargetDependency] - ) -> Target { - Target.target( - name: "\(name)UITests", - destinations: .iOS, - product: .uiTests, - bundleId: .bundleID + ".\(name)Test", - deploymentTargets: .deploymentTargets, - infoPlist: .frameworkInfoPlist, - sources: ["Tests/**"], - scripts: isFeature ? [.featureSwiftLint] : [.swiftLint], - dependencies: dependencies, - settings: .test - ) - } -} diff --git a/Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift b/Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift deleted file mode 100644 index 1db67b61..00000000 --- a/Tuist/ProjectDescriptionHelpers/TargetDependency+Dependency.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// TargetDependency+Dependency.swift -// ProjectDescriptionHelpers -// -// Created by gnksbm on 3/30/25. -// - -import ProjectDescription - -public extension TargetDependency { - struct SPM { } - struct XCFramework { } - - private static func localXCFramework(name: String) -> TargetDependency { - .xcframework(path: .relativeToFrameworks(name)) - } -} - -public extension TargetDependency.SPM { - static let RxSwift: TargetDependency = .external(name: "RxSwift") - static let RxCocoa: TargetDependency = .external(name: "RxCocoa") - static let Lottie: TargetDependency = .external(name: "Lottie") - static let FirebaseAnalytics: TargetDependency = .external(name: "FirebaseAnalytics") - static let FirebaseMessaging: TargetDependency = .external(name: "FirebaseMessaging") -} - -public extension TargetDependency.XCFramework { - static let NMapsGeometry: TargetDependency = .localXCFramework(name: "NMapsGeometry") - static let NMapsMap: TargetDependency = .localXCFramework(name: "NMapsMap") -} - diff --git a/Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift b/Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift deleted file mode 100644 index a808a8c7..00000000 --- a/Tuist/ProjectDescriptionHelpers/TargetDependency+Feature.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// TargetDependency+Feature.swift -// ProjectDescriptionHelpers -// -// Created by gnksbm on 3/30/25. -// - -import ProjectDescription - -public extension TargetDependency { - private static func feature(name: String) -> TargetDependency { - .project(target: "\(name)Feature", path: .relativeToFeature(name)) - } - - static let Home: TargetDependency = .feature(name: "Home") - static let Alarm: TargetDependency = .feature(name: "Alarm") - static let Settings: TargetDependency = .feature(name: "Settings") - static let BusStop: TargetDependency = .feature(name: "BusStop") - static let Search: TargetDependency = .feature(name: "Search") - static let NearMap: TargetDependency = .feature(name: "NearMap") -} diff --git a/Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift b/Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift deleted file mode 100644 index 2e6a7049..00000000 --- a/Tuist/ProjectDescriptionHelpers/TargetDependency+Module.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// TargetDependency+Module.swift -// ProjectDescriptionHelpers -// -// Created by gnksbm on 3/30/25. -// - -import ProjectDescription - -public extension TargetDependency { - private static func module(name: String) -> TargetDependency { - .project(target: name, path: .relativeToProjects(name)) - } - - static let App: TargetDependency = .module(name: "App") - static let MainFeature: TargetDependency = .module(name: "MainFeature") - static let FeatureDependency: TargetDependency = .module(name: "FeatureDependency") - static let Core: TargetDependency = .module(name: "Core") - static let Data: TargetDependency = .module(name: "Data") - static let Domain: TargetDependency = .module(name: "Domain") - static let NetworkService: TargetDependency = .module(name: "NetworkService") - static let CoreDataService: TargetDependency = .module(name: "CoreDataService") - static let DesignSystem: TargetDependency = .module(name: "DesignSystem") - static let ThirdPartyLibs: TargetDependency = .module(name: "ThirdPartyLibs") - static let FirebaseModule: TargetDependency = .module(name: "FirebaseModule") - static let FirebaseInterface: TargetDependency = .module(name: "FirebaseInterface") -} From f6840d590f7ccdecfdf2b6f965d1e8fe6477538c Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Mon, 7 Apr 2025 01:32:09 +0900 Subject: [PATCH 13/28] =?UTF-8?q?fix:=20Github=20Action=20Tuist=204=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pull_request_test.yml | 21 ++++++++++++--------- .github/workflows/upload_testflight.yml | 22 +++++++++++----------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/.github/workflows/pull_request_test.yml b/.github/workflows/pull_request_test.yml index 67a7f93b..44a55e46 100644 --- a/.github/workflows/pull_request_test.yml +++ b/.github/workflows/pull_request_test.yml @@ -30,18 +30,21 @@ jobs: - name: Get swift version run: swift --version - - - name: Install Tuist - run: curl -Ls https://install.tuist.io|bash + + - name: Mise + use: jdx/mise-action@v2 + - name: Install Tuist + run: mise install tuist@$4.33.0 + + - name: Tuist version + run: mise use -g tuist@4.33.0 + + - name: Setup Project + run: make init + - name: Install SwiftLint run: brew install swiftlint - - name: Tuist Clean - run: tuist clean - - - name: Tuist Fetch - run: tuist fetch - - name: Tuist Build Test run: tuist build App diff --git a/.github/workflows/upload_testflight.yml b/.github/workflows/upload_testflight.yml index 6760ffc5..836b98bc 100644 --- a/.github/workflows/upload_testflight.yml +++ b/.github/workflows/upload_testflight.yml @@ -39,22 +39,22 @@ jobs: uses: swift-actions/setup-swift@v2 with: swift-version: "5.10" + + - name: Mise + use: jdx/mise-action@v2 - name: Install Tuist - run: curl -Ls https://install.tuist.io|bash - + run: mise install tuist@$4.33.0 + + - name: Tuist version + run: mise use -g tuist@4.33.0 + + - name: Setup Project + run: make init + - name: Install Fastlane run: brew install fastlane - - name: Tuist clean - run: tuist clean - - - name: Tuist fetch - run: tuist fetch - - - name: Tuist generate - run: tuist generate - - name: Fastlane Upload Testflight run: fastlane tf_remote env: From ef99cf6cd8bf649c1d2b7eed3742f24522bced0e Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Mon, 7 Apr 2025 01:34:25 +0900 Subject: [PATCH 14/28] =?UTF-8?q?fix:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pull_request_test.yml | 2 +- .github/workflows/upload_testflight.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request_test.yml b/.github/workflows/pull_request_test.yml index 44a55e46..82ca5a73 100644 --- a/.github/workflows/pull_request_test.yml +++ b/.github/workflows/pull_request_test.yml @@ -35,7 +35,7 @@ jobs: use: jdx/mise-action@v2 - name: Install Tuist - run: mise install tuist@$4.33.0 + run: mise install tuist@4.33.0 - name: Tuist version run: mise use -g tuist@4.33.0 diff --git a/.github/workflows/upload_testflight.yml b/.github/workflows/upload_testflight.yml index 836b98bc..e625fbac 100644 --- a/.github/workflows/upload_testflight.yml +++ b/.github/workflows/upload_testflight.yml @@ -44,7 +44,7 @@ jobs: use: jdx/mise-action@v2 - name: Install Tuist - run: mise install tuist@$4.33.0 + run: mise install tuist@4.33.0 - name: Tuist version run: mise use -g tuist@4.33.0 From aaf6f6d02111579c4571a20e1787209765aa528d Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Mon, 7 Apr 2025 01:37:05 +0900 Subject: [PATCH 15/28] =?UTF-8?q?fix:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pull_request_test.yml | 2 +- .github/workflows/upload_testflight.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request_test.yml b/.github/workflows/pull_request_test.yml index 82ca5a73..5f66a322 100644 --- a/.github/workflows/pull_request_test.yml +++ b/.github/workflows/pull_request_test.yml @@ -32,7 +32,7 @@ jobs: run: swift --version - name: Mise - use: jdx/mise-action@v2 + uses: jdx/mise-action@v2 - name: Install Tuist run: mise install tuist@4.33.0 diff --git a/.github/workflows/upload_testflight.yml b/.github/workflows/upload_testflight.yml index e625fbac..4e169208 100644 --- a/.github/workflows/upload_testflight.yml +++ b/.github/workflows/upload_testflight.yml @@ -41,7 +41,7 @@ jobs: swift-version: "5.10" - name: Mise - use: jdx/mise-action@v2 + uses: jdx/mise-action@v2 - name: Install Tuist run: mise install tuist@4.33.0 From 9f15d37a61706e6a73ea232c6beada7fc6fcad50 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Fri, 11 Apr 2025 00:26:50 +0900 Subject: [PATCH 16/28] =?UTF-8?q?fix:=20Tuist=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tuist/ProjectDescriptionHelpers/{ => Module}/Local/Core.swift | 0 .../{ => Module}/Local/CoreDataService.swift | 0 Tuist/ProjectDescriptionHelpers/{ => Module}/Local/Data.swift | 0 .../{ => Module}/Local/DesignSystem.swift | 0 Tuist/ProjectDescriptionHelpers/{ => Module}/Local/Domain.swift | 0 .../{ => Module}/Local/FeatureDependency.swift | 0 .../{ => Module}/Local/FirebaseInterface.swift | 0 .../{ => Module}/Local/MainFeature.swift | 0 .../{ => Module}/Local/NetworkService.swift | 0 .../{ => Module}/Local/ThirdPartyLibs.swift | 0 .../{ => Module}/SPM/FirebaseAnalytics.swift | 0 .../{ => Module}/SPM/FirebaseMessaging.swift | 0 Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/Lottie.swift | 0 Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/RxCocoa.swift | 0 Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/RxSwift.swift | 0 .../{ => Module}/XCFramework/NMapsGeometry.swift | 0 .../{ => Module}/XCFramework/NMapsMap.swift | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/Core.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/CoreDataService.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/Data.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/DesignSystem.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/Domain.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/FeatureDependency.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/FirebaseInterface.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/MainFeature.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/NetworkService.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/Local/ThirdPartyLibs.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/FirebaseAnalytics.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/FirebaseMessaging.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/Lottie.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/RxCocoa.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/SPM/RxSwift.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/XCFramework/NMapsGeometry.swift (100%) rename Tuist/ProjectDescriptionHelpers/{ => Module}/XCFramework/NMapsMap.swift (100%) diff --git a/Tuist/ProjectDescriptionHelpers/Local/Core.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/Core.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/CoreDataService.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/CoreDataService.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/Data.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/Data.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/DesignSystem.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/DesignSystem.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/Domain.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/Domain.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/FeatureDependency.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/FeatureDependency.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/FirebaseInterface.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/FirebaseInterface.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/MainFeature.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/MainFeature.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/NetworkService.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/NetworkService.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift diff --git a/Tuist/ProjectDescriptionHelpers/Local/ThirdPartyLibs.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/Local/ThirdPartyLibs.swift rename to Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift diff --git a/Tuist/ProjectDescriptionHelpers/SPM/FirebaseAnalytics.swift b/Tuist/ProjectDescriptionHelpers/Module/SPM/FirebaseAnalytics.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/SPM/FirebaseAnalytics.swift rename to Tuist/ProjectDescriptionHelpers/Module/SPM/FirebaseAnalytics.swift diff --git a/Tuist/ProjectDescriptionHelpers/SPM/FirebaseMessaging.swift b/Tuist/ProjectDescriptionHelpers/Module/SPM/FirebaseMessaging.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/SPM/FirebaseMessaging.swift rename to Tuist/ProjectDescriptionHelpers/Module/SPM/FirebaseMessaging.swift diff --git a/Tuist/ProjectDescriptionHelpers/SPM/Lottie.swift b/Tuist/ProjectDescriptionHelpers/Module/SPM/Lottie.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/SPM/Lottie.swift rename to Tuist/ProjectDescriptionHelpers/Module/SPM/Lottie.swift diff --git a/Tuist/ProjectDescriptionHelpers/SPM/RxCocoa.swift b/Tuist/ProjectDescriptionHelpers/Module/SPM/RxCocoa.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/SPM/RxCocoa.swift rename to Tuist/ProjectDescriptionHelpers/Module/SPM/RxCocoa.swift diff --git a/Tuist/ProjectDescriptionHelpers/SPM/RxSwift.swift b/Tuist/ProjectDescriptionHelpers/Module/SPM/RxSwift.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/SPM/RxSwift.swift rename to Tuist/ProjectDescriptionHelpers/Module/SPM/RxSwift.swift diff --git a/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsGeometry.swift b/Tuist/ProjectDescriptionHelpers/Module/XCFramework/NMapsGeometry.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/XCFramework/NMapsGeometry.swift rename to Tuist/ProjectDescriptionHelpers/Module/XCFramework/NMapsGeometry.swift diff --git a/Tuist/ProjectDescriptionHelpers/XCFramework/NMapsMap.swift b/Tuist/ProjectDescriptionHelpers/Module/XCFramework/NMapsMap.swift similarity index 100% rename from Tuist/ProjectDescriptionHelpers/XCFramework/NMapsMap.swift rename to Tuist/ProjectDescriptionHelpers/Module/XCFramework/NMapsMap.swift From 71cbb792b16f83c657eb23269a798250eb2efec6 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Fri, 11 Apr 2025 00:53:50 +0900 Subject: [PATCH 17/28] =?UTF-8?q?feat:=20Script=20=EC=82=AC=EC=9A=A9=20?= =?UTF-8?q?=ED=98=95=ED=83=9C=20TargetScriptBuildable=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TargetBuildable/Target/App.swift | 8 ++- .../TargetBuildable/Target/Feature.swift | 8 ++- .../TargetBuildable/Target/SampleApp.swift | 3 +- .../Target/WidgetExtension.swift | 8 ++- .../TargetInterface/FrameworkTarget.swift | 10 ++- .../PreTargetScriptBuildable.swift | 51 +++++++++++++++ .../TargetScriptBuildable.swift | 10 +++ .../Builder/TargetBuilder.swift | 12 +++- .../Builder/TargetComponentBuilder.swift | 65 +++++++++++++++++++ .../Builder/TargetDependencyBuilder.swift | 49 -------------- .../ProjectDescriptionHelpers/Scheme.swift | 56 ---------------- .../ProjectDescriptionHelpers/Scripts.swift | 21 ------ Projects/App/Project.swift | 2 + Projects/Feature/AlarmFeature/Project.swift | 1 + Projects/Feature/BusStopFeature/Project.swift | 1 + Projects/Feature/HomeFeature/Project.swift | 1 + Projects/Feature/NearMapFeature/Project.swift | 1 + Projects/Feature/SearchFeature/Project.swift | 1 + .../Feature/SettingsFeature/Project.swift | 1 + .../Module/Local/Core.swift | 2 +- .../Module/Local/CoreDataService.swift | 2 +- .../Module/Local/Data.swift | 2 +- .../Module/Local/DesignSystem.swift | 2 +- .../Module/Local/Domain.swift | 2 +- .../Module/Local/FeatureDependency.swift | 2 +- .../Module/Local/FirebaseInterface.swift | 4 +- .../Module/Local/MainFeature.swift | 2 +- .../Module/Local/NetworkService.swift | 2 +- .../Module/Local/ThirdPartyLibs.swift | 2 +- .../TargetScript/FeatureSwiftLintScript.swift | 13 ++++ .../TargetScript/SwiftLintScript.swift | 13 ++++ 31 files changed, 206 insertions(+), 151 deletions(-) create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/PreTargetScriptBuildable.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/TargetScriptBuildable.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift delete mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift delete mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift delete mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scripts.swift create mode 100644 Tuist/ProjectDescriptionHelpers/TargetScript/FeatureSwiftLintScript.swift create mode 100644 Tuist/ProjectDescriptionHelpers/TargetScript/SwiftLintScript.swift diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift index d833de66..2fb494e9 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift @@ -14,7 +14,7 @@ public struct App: TargetBuildable { public let infoPlist: InfoPlist? = .appInfoPlist public let sources: SourceFilesList? = ["Sources/**"] public let resources: ResourceFileElements? = ["Resources/**"] - public let scripts: [TargetScript] = [.swiftLint] + public let scripts: [TargetScript] public let settings: Settings? = .appDebug public var entitlements: Entitlements? { @@ -23,9 +23,11 @@ public struct App: TargetBuildable { public init( name: String, - @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder + @TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder ) { + let builder = builder() self.name = name - self.dependencies = builder().buildTargetDependency() + self.dependencies = builder.buildTargetDependency() + self.scripts = builder.buildTargetScript() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift index 2d4e0497..2bed01cb 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift @@ -13,7 +13,7 @@ public struct Feature: ImplementTarget { public let product: Product = .staticFramework public let infoPlist: InfoPlist = .frameworkInfoPlist public let settings: Settings = .frameworkDebug - public var scripts: [TargetScript] = [.featureSwiftLint] + public let scripts: [TargetScript] public var resources: ResourceFileElements? { hasResource ? ["Resources/**"] : nil } public var targetDependencyPath: Path { @@ -23,10 +23,12 @@ public struct Feature: ImplementTarget { public init( name: String, hasResource: Bool = false, - @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() } + @TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() } ) { + let builder = builder() self.name = name self.hasResource = hasResource - self.dependencies = builder().buildTargetDependency() + self.dependencies = builder.buildTargetDependency() + self.scripts = builder.buildTargetScript() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift index 6eb0de6c..6fb6d50d 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift @@ -12,14 +12,13 @@ public struct SampleApp: BundleIDSuffixTarget { public let product: Product = .app public let bundleId: String = .bundleID + ".Demo" public let sources: SourceFilesList? = ["Demo/**"] - public let scripts: [TargetScript] = [.featureSwiftLint] public let settings: Settings? = .appDebug public var infoPlist: InfoPlist? { .demoAppInfoPlist(name: name) } public init( name: String, - @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder + @TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder ) { self.name = name + "SampleApp" self.dependencies = builder().buildTargetDependency() diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift index 7d3ec8ce..8c293f3d 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift @@ -10,7 +10,7 @@ public struct WidgetExtension: AppExtensionTarget { public let dependencies: [TargetDependency] public let infoPlist: InfoPlist? = .extendingDefault(with: .widgetInfoPlist) - public let scripts: [TargetScript] = [.swiftLint] + public let scripts: [TargetScript] public var sources: SourceFilesList? { ["\(name)/**"] } public var resources: ResourceFileElements? { @@ -44,9 +44,11 @@ public struct WidgetExtension: AppExtensionTarget { public init( name: String, - @TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder + @TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder ) { + let builder = builder() self.name = name - self.dependencies = builder().buildTargetDependency() + self.dependencies = builder.buildTargetDependency() + self.scripts = builder.buildTargetScript() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift index b1a6b0a7..70bc3487 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/FrameworkTarget.swift @@ -8,6 +8,14 @@ public protocol FrameworkTarget: ImplementTarget, TypeNameContains { } public extension FrameworkTarget { - var scripts: [TargetScript] { [.swiftLint] } + var scripts: [TargetScript] { + [ + TargetScript.pre( + path: .relativeToRoot("Scripts/SwiftLintRunScript.sh"), + name: "SwiftLintShell", + basedOnDependencyAnalysis: false + ) + ] + } var targetDependencyPath: Path { .relativeToRoot("Projects/\(name)") } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/PreTargetScriptBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/PreTargetScriptBuildable.swift new file mode 100644 index 00000000..9a0bd07d --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/PreTargetScriptBuildable.swift @@ -0,0 +1,51 @@ +// +// PreTargetScriptBuildable.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +public protocol PreTargetScriptBuildable: TargetScriptBuildable { + var path: Path { get } + var arguments: [String] { get } + var name: String { get } + var inputPaths: [FileListGlob] { get } + var inputFileListPaths: [Path] { get } + var outputPaths: [Path] { get } + var outputFileListPaths: [Path] { get } + var basedOnDependencyAnalysis: Bool? { get } + var runForInstallBuildsOnly: Bool { get } + var shellPath: String { get } + var dependencyFile: Path? { get } +} + +public extension PreTargetScriptBuildable { + var arguments: [String] { [] } + var inputPaths: [FileListGlob] { [] } + var inputFileListPaths: [Path] { [] } + var outputPaths: [Path] { [] } + var outputFileListPaths: [Path] { [] } + var basedOnDependencyAnalysis: Bool? { false } + var runForInstallBuildsOnly: Bool { false } + var shellPath: String { "/bin/sh" } + var dependencyFile: Path? { nil } +} + +public extension PreTargetScriptBuildable { + func buildTargetScript() -> [TargetScript] { + [ + .pre( + path: path, + name: name, + inputPaths: inputPaths, + inputFileListPaths: inputFileListPaths, + outputPaths: outputPaths, + outputFileListPaths: outputFileListPaths, + basedOnDependencyAnalysis: basedOnDependencyAnalysis, + runForInstallBuildsOnly: runForInstallBuildsOnly, + shellPath: shellPath, + dependencyFile: dependencyFile + ) + ] + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/TargetScriptBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/TargetScriptBuildable.swift new file mode 100644 index 00000000..41973aa8 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetScriptBuildable/TargetScriptBuildable.swift @@ -0,0 +1,10 @@ +// +// TargetScriptBuildable.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +public protocol TargetScriptBuildable { + func buildTargetScript() -> [TargetScript] +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift index 60693286..8b9bd992 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetBuilder.swift @@ -7,8 +7,16 @@ @resultBuilder public struct TargetBuilder { - var dependencyBuildable: [TargetDependencyBuildable] = .init() - var targetBuildable: [TargetBuildable] = .init() + let dependencyBuildable: [TargetDependencyBuildable] + let targetBuildable: [TargetBuildable] + + init( + dependencyBuildable: [TargetDependencyBuildable] = [], + targetBuildable: [TargetBuildable] = [] + ) { + self.dependencyBuildable = dependencyBuildable + self.targetBuildable = targetBuildable + } } // MARK: TargetBuilder diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift new file mode 100644 index 00000000..991238cd --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift @@ -0,0 +1,65 @@ +// +// TargetComponentBuilder.swift +// EnvironmentPlugin +// +// Created by gnksbm on 3/31/25. +// + +@resultBuilder +public struct TargetComponentBuilder { + let dependencyBuildables: [TargetDependencyBuildable] + let targetScriptBuildables: [TargetScriptBuildable] + + public init( + dependencyBuildables: [TargetDependencyBuildable] = [], + targetScriptBuildables: [TargetScriptBuildable] = [] + ) { + self.dependencyBuildables = dependencyBuildables + self.targetScriptBuildables = targetScriptBuildables + } +} + +// MARK: TargetComponentBuilder +public extension TargetComponentBuilder { + static func buildBlock() -> TargetComponentBuilder { + .init() + } + + static func buildExpression(_ expression: TargetComponentBuilder...) -> TargetComponentBuilder { + .init(dependencyBuildables: expression.flatMap { $0.dependencyBuildables }) + } + + static func buildPartialBlock(first: TargetComponentBuilder) -> TargetComponentBuilder { + first + } + + static func buildPartialBlock(accumulated: TargetComponentBuilder, next: TargetComponentBuilder) -> TargetComponentBuilder { + .init(dependencyBuildables: accumulated.dependencyBuildables + next.dependencyBuildables) + } +} + +// MARK: TargetDependencyBuildable +public extension TargetComponentBuilder { + static func buildExpression(_ expression: TargetDependencyBuildable) -> TargetComponentBuilder { + .init(dependencyBuildables: [expression]) + } +} + +extension TargetComponentBuilder: TargetDependencyBuildable { + public func buildTargetDependency() -> [TargetDependency] { + dependencyBuildables.flatMap { $0.buildTargetDependency() } + } +} + +// MARK: TargetScriptBuildable +public extension TargetComponentBuilder { + static func buildExpression(_ expression: TargetScriptBuildable) -> TargetComponentBuilder { + .init(targetScriptBuildables: [expression]) + } +} + +extension TargetComponentBuilder: TargetScriptBuildable { + public func buildTargetScript() -> [TargetScript] { + targetScriptBuildables.flatMap { $0.buildTargetScript() } + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift deleted file mode 100644 index fe8783b7..00000000 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetDependencyBuilder.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// TargetDependencyBuilder.swift -// EnvironmentPlugin -// -// Created by gnksbm on 3/31/25. -// - -@resultBuilder -public struct TargetDependencyBuilder { - var dependencyBuildable: [TargetDependencyBuildable] = .init() - - public init() { } - - init(dependencyBuildable: [TargetDependencyBuildable]) { - self.dependencyBuildable = dependencyBuildable - } -} - -// MARK: TargetDependencyBuilder -public extension TargetDependencyBuilder { - static func buildBlock() -> TargetDependencyBuilder { - .init() - } - - static func buildExpression(_ expression: TargetDependencyBuilder...) -> TargetDependencyBuilder { - .init(dependencyBuildable: expression.flatMap { $0.dependencyBuildable }) - } - - static func buildPartialBlock(first: TargetDependencyBuilder) -> TargetDependencyBuilder { - first - } - - static func buildPartialBlock(accumulated: TargetDependencyBuilder, next: TargetDependencyBuilder) -> TargetDependencyBuilder { - .init(dependencyBuildable: accumulated.dependencyBuildable + next.dependencyBuildable) - } -} - -// MARK: TargetDependencyBuildable -public extension TargetDependencyBuilder { - static func buildExpression(_ expression: TargetDependencyBuildable) -> TargetDependencyBuilder { - .init(dependencyBuildable: [expression]) - } -} - -extension TargetDependencyBuilder: TargetDependencyBuildable { - public func buildTargetDependency() -> [TargetDependency] { - dependencyBuildable.flatMap { $0.buildTargetDependency() } - } -} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift deleted file mode 100644 index 8fbd02b7..00000000 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scheme.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// Scheme.swift -// EnvironmentPlugin -// -// Created by gnksbm on 2024/01/13. -// - -import ProjectDescription - -public extension Scheme { - static func moduleScheme(name: String) -> Self { - Scheme.scheme( - name: name, - shared: true, - buildAction: .buildAction(targets: ["\(name)"]), - testAction: .targets( - ["\(name)Tests"], - configuration: .debug, - options: .options( - coverage: true, - codeCoverageTargets: ["\(name)"] - ) - ), - runAction: .runAction( - configuration: .debug, - arguments: .arguments( - launchArguments: [ - .launchArgument( - name: "-FIRDebugEnabled", - isEnabled: true - ) - ] - ) - ), - archiveAction: .archiveAction(configuration: .release) - ) - } - - static func uiTestsScheme(name: String) -> Self { - Scheme.scheme( - name: "\(name)UITests", - shared: true, - buildAction: .buildAction(targets: ["\(name)"]), - testAction: .targets( - ["\(name)UITests"], - configuration: .debug, - options: .options( - coverage: true, - codeCoverageTargets: ["\(name)UITests"] - ) - ), - runAction: .runAction(configuration: .debug), - archiveAction: .archiveAction(configuration: .release) - ) - } -} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scripts.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scripts.swift deleted file mode 100644 index 65263d80..00000000 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Scripts.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// Scripts.swift -// ProjectDescriptionHelpers -// -// Created by gnksbm on 2023/11/19. -// - -import ProjectDescription - -public extension TargetScript { - static let swiftLint = TargetScript.pre( - path: .relativeToRoot("Scripts/SwiftLintRunScript.sh"), - name: "SwiftLintShell", - basedOnDependencyAnalysis: false - ) - static let featureSwiftLint = TargetScript.pre( - path: .relativeToRoot("Scripts/FeatureSwiftLintRunScript.sh"), - name: "SwiftLintShell", - basedOnDependencyAnalysis: false - ) -} diff --git a/Projects/App/Project.swift b/Projects/App/Project.swift index d5a8cf26..bc756a6d 100644 --- a/Projects/App/Project.swift +++ b/Projects/App/Project.swift @@ -6,10 +6,12 @@ let project = Project(name: "App") { MainFeature() Data() FirebaseModule() + SwiftLintScript() } // WidgetExtension(name: "Widget") { // MainFeature() // Data() +// SwiftLintScript() // } AppScheme(name: "App") UnitTestsScheme(targetName: "App") diff --git a/Projects/Feature/AlarmFeature/Project.swift b/Projects/Feature/AlarmFeature/Project.swift index 0d700a20..a4d0835c 100644 --- a/Projects/Feature/AlarmFeature/Project.swift +++ b/Projects/Feature/AlarmFeature/Project.swift @@ -7,6 +7,7 @@ let project = Project( ) { Feature(name: "AlarmFeature") { FeatureDependency() + FeatureSwiftLintScript() } SampleApp(name: "AlarmFeature") { Feature(name: "AlarmFeature") diff --git a/Projects/Feature/BusStopFeature/Project.swift b/Projects/Feature/BusStopFeature/Project.swift index 951ec6da..5e2d03f0 100644 --- a/Projects/Feature/BusStopFeature/Project.swift +++ b/Projects/Feature/BusStopFeature/Project.swift @@ -7,6 +7,7 @@ let project = Project( ) { Feature(name: "BusStopFeature") { FeatureDependency() + FeatureSwiftLintScript() } SampleApp(name: "BusStopFeature") { Feature(name: "BusStopFeature") diff --git a/Projects/Feature/HomeFeature/Project.swift b/Projects/Feature/HomeFeature/Project.swift index ad79536e..ea8de5dc 100644 --- a/Projects/Feature/HomeFeature/Project.swift +++ b/Projects/Feature/HomeFeature/Project.swift @@ -7,6 +7,7 @@ let project = Project( ) { Feature(name: "HomeFeature") { FeatureDependency() + FeatureSwiftLintScript() } SampleApp(name: "HomeFeature") { Feature(name: "HomeFeature") diff --git a/Projects/Feature/NearMapFeature/Project.swift b/Projects/Feature/NearMapFeature/Project.swift index 30c9f30d..e1cd1151 100644 --- a/Projects/Feature/NearMapFeature/Project.swift +++ b/Projects/Feature/NearMapFeature/Project.swift @@ -7,6 +7,7 @@ let project = Project( ) { Feature(name: "NearMapFeature") { FeatureDependency() + FeatureSwiftLintScript() } SampleApp(name: "NearMapFeature") { Feature(name: "NearMapFeature") diff --git a/Projects/Feature/SearchFeature/Project.swift b/Projects/Feature/SearchFeature/Project.swift index 69c10522..68aa167a 100644 --- a/Projects/Feature/SearchFeature/Project.swift +++ b/Projects/Feature/SearchFeature/Project.swift @@ -7,6 +7,7 @@ let project = Project( ) { Feature(name: "SearchFeature") { FeatureDependency() + FeatureSwiftLintScript() } SampleApp(name: "SearchFeature") { Feature(name: "SearchFeature") diff --git a/Projects/Feature/SettingsFeature/Project.swift b/Projects/Feature/SettingsFeature/Project.swift index 40cef516..d52094d9 100644 --- a/Projects/Feature/SettingsFeature/Project.swift +++ b/Projects/Feature/SettingsFeature/Project.swift @@ -7,6 +7,7 @@ let project = Project( ) { Feature(name: "SettingsFeature") { FeatureDependency() + FeatureSwiftLintScript() } SampleApp(name: "SettingsFeature") { Feature(name: "SettingsFeature") diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift index 10efe1e9..8b7c6130 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift @@ -9,7 +9,7 @@ public struct Core: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift index 0d11cbed..02f54890 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift @@ -9,7 +9,7 @@ public struct CoreDataService: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift index 2626652b..7495584f 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift @@ -15,7 +15,7 @@ public struct Data: FrameworkTarget { ) ] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift index abae57d6..e13da1d4 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift @@ -10,7 +10,7 @@ public struct DesignSystem: FrameworkTarget { public let dependencies: [TargetDependency] public let resources: ResourceFileElements? = ["Resources/**"] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift index a957acc4..d7de43bc 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift @@ -9,7 +9,7 @@ public struct Domain: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift index e5585b6e..c9f736e4 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift @@ -9,7 +9,7 @@ public struct FeatureDependency: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift index 24b893a2..4d3d9475 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift @@ -10,7 +10,7 @@ public struct FirebaseInterface: FrameworkTarget { public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } @@ -20,7 +20,7 @@ public struct FirebaseModule: FrameworkTarget { public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift index cf2dc569..909697e3 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift @@ -9,7 +9,7 @@ public struct MainFeature: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift index 1fe0e2f5..9379bb75 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift @@ -9,7 +9,7 @@ public struct NetworkService: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift index 4b2068c1..a325e93c 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift @@ -9,7 +9,7 @@ public struct ThirdPartyLibs: FrameworkTarget { public let product: Product = .framework public let dependencies: [TargetDependency] - public init(@TargetDependencyBuilder dependencies builder: () -> TargetDependencyBuilder = { .init() }) { + public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { self.dependencies = builder().buildTargetDependency() } } diff --git a/Tuist/ProjectDescriptionHelpers/TargetScript/FeatureSwiftLintScript.swift b/Tuist/ProjectDescriptionHelpers/TargetScript/FeatureSwiftLintScript.swift new file mode 100644 index 00000000..3579f847 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/TargetScript/FeatureSwiftLintScript.swift @@ -0,0 +1,13 @@ +// +// FeatureSwiftLintScript.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +public struct FeatureSwiftLintScript: PreTargetScriptBuildable { + public let path: Path = .relativeToRoot("Scripts/FeatureSwiftLintRunScript.sh") + public let name: String = "SwiftLintShell" + + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/TargetScript/SwiftLintScript.swift b/Tuist/ProjectDescriptionHelpers/TargetScript/SwiftLintScript.swift new file mode 100644 index 00000000..50debf59 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/TargetScript/SwiftLintScript.swift @@ -0,0 +1,13 @@ +// +// SwiftLintScript.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +public struct SwiftLintScript: PreTargetScriptBuildable { + public let path: Path = .relativeToRoot("Scripts/SwiftLintRunScript.sh") + public let name: String = "SwiftLintShell" + + public init() { } +} From 1e2d7f0fd2c52076f0856bfe56a59f6f167d20f6 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 17 Apr 2025 22:36:10 +0900 Subject: [PATCH 18/28] =?UTF-8?q?feat:=20InfoPlist=20=EC=82=AC=EC=9A=A9=20?= =?UTF-8?q?=ED=98=95=ED=83=9C=20InfoPlistBuildable=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InfoPlist/UIKitInfoPlist.swift | 30 ++++ .../InfoPlist/WhereMyBusInfoPlist.swift | 16 ++ .../InfoPlistBuildable.swift | 28 ++++ .../TargetBuildable/Target/App.swift | 3 +- .../TargetBuildable/Target/Feature.swift | 3 +- .../TargetBuildable/Target/SampleApp.swift | 6 +- .../TargetBuildable/Target/UnitTests.swift | 13 +- .../Target/WidgetExtension.swift | 3 +- .../TargetInterface/ImplementTarget.swift | 1 - .../TargetInterface/InterfaceTarget.swift | 1 - .../TargetInterface/TestingTarget.swift | 1 - .../TargetInterface/TestsTarget.swift | 1 - .../Builder/TargetComponentBuilder.swift | 22 ++- .../Foundation/TypeBuilder.swift | 15 ++ .../ProjectDescriptionHelpers/InfoPlist.swift | 152 ------------------ Projects/App/Project.swift | 3 + Projects/Core/Project.swift | 1 + Projects/CoreDataService/Project.swift | 1 + Projects/Data/Project.swift | 1 + Projects/DesignSystem/Project.swift | 1 + Projects/Domain/Project.swift | 1 + Projects/Feature/AlarmFeature/Project.swift | 5 + Projects/Feature/BusStopFeature/Project.swift | 5 + Projects/Feature/HomeFeature/Project.swift | 5 + Projects/Feature/NearMapFeature/Project.swift | 5 + Projects/Feature/SearchFeature/Project.swift | 5 + .../Feature/SettingsFeature/Project.swift | 5 + Projects/FeatureDependency/Project.swift | 1 + Projects/FirebaseInterface/Project.swift | 4 +- Projects/FirebaseModule/Project.swift | 1 + Projects/MainFeature/Project.swift | 1 + Projects/NetworkService/Project.swift | 1 + Projects/ThirdPartyLibs/Project.swift | 1 + .../InfoPlist/AppInfoPlist.swift | 44 +++++ .../InfoPlist/FrameworkInfoPlist.swift | 27 ++++ .../NotificationServiceInfoPlist.swift | 37 +++++ .../InfoPlist/SecretInfoPlist.swift | 22 +++ .../InfoPlist/WidgetInfoPlist.swift | 37 +++++ .../Module/Local/Core.swift | 5 +- .../Module/Local/CoreDataService.swift | 5 +- .../Module/Local/Data.swift | 6 +- .../Module/Local/DesignSystem.swift | 5 +- .../Module/Local/Domain.swift | 5 +- .../Module/Local/FeatureDependency.swift | 5 +- .../Module/Local/FirebaseInterface.swift | 10 +- .../Module/Local/MainFeature.swift | 5 +- .../Module/Local/NetworkService.swift | 5 +- .../Module/Local/ThirdPartyLibs.swift | 5 +- 48 files changed, 388 insertions(+), 177 deletions(-) create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/UIKitInfoPlist.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift create mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeBuilder.swift delete mode 100644 Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift create mode 100644 Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift create mode 100644 Tuist/ProjectDescriptionHelpers/InfoPlist/FrameworkInfoPlist.swift create mode 100644 Tuist/ProjectDescriptionHelpers/InfoPlist/NotificationServiceInfoPlist.swift create mode 100644 Tuist/ProjectDescriptionHelpers/InfoPlist/SecretInfoPlist.swift create mode 100644 Tuist/ProjectDescriptionHelpers/InfoPlist/WidgetInfoPlist.swift diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/UIKitInfoPlist.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/UIKitInfoPlist.swift new file mode 100644 index 00000000..565c2955 --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/UIKitInfoPlist.swift @@ -0,0 +1,30 @@ +// +// UIKitInfoPlist.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +import Foundation + +public struct UIKitInfoPlist: InfoPlistBuildable { + public var dictionary: [String : ProjectDescription.Plist.Value] { + [ + "UILaunchStoryboardName": "LaunchScreen.storyboard", + "UIApplicationSceneManifest": [ + "UIApplicationSupportsMultipleScenes": false, + "UISceneConfigurations": [ + "UIWindowSceneSessionRoleApplication": [ + [ + "UISceneConfigurationName": "Default Configuration", + "UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate" + ], + ] + ] + ], + "UISupportedInterfaceOrientations": ["UIInterfaceOrientationPortrait"] + ] + } + + public init() { } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift new file mode 100644 index 00000000..26b60f3c --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlist/WhereMyBusInfoPlist.swift @@ -0,0 +1,16 @@ +// +// WhereMyBusInfoPlist.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +import Foundation + + + + + + + + diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift new file mode 100644 index 00000000..aef1b07c --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift @@ -0,0 +1,28 @@ +// +// InfoPlistBuildable.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +import ProjectDescription + +public protocol InfoPlistBuildable { + var dictionary: [String: Plist.Value] { get } +} + +extension InfoPlistBuildable { + func buildInfoPlist() -> InfoPlist { + .dictionary(dictionary) + } +} + +extension Array where Element == any InfoPlistBuildable { + func buildInfoPlist() -> InfoPlist { + .dictionary( + reduce([String: Plist.Value]()) { partialResult, next in + partialResult.merging(next.dictionary) { _, new in new } + } + ) + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift index 2fb494e9..f87561b8 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/App.swift @@ -11,7 +11,7 @@ public struct App: TargetBuildable { public let product: Product = .app public let bundleId: String = .bundleID - public let infoPlist: InfoPlist? = .appInfoPlist + public let infoPlist: InfoPlist? public let sources: SourceFilesList? = ["Sources/**"] public let resources: ResourceFileElements? = ["Resources/**"] public let scripts: [TargetScript] @@ -29,5 +29,6 @@ public struct App: TargetBuildable { self.name = name self.dependencies = builder.buildTargetDependency() self.scripts = builder.buildTargetScript() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift index 2bed01cb..a5056157 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/Feature.swift @@ -11,7 +11,7 @@ public struct Feature: ImplementTarget { public let dependencies: [TargetDependency] public let product: Product = .staticFramework - public let infoPlist: InfoPlist = .frameworkInfoPlist + public let infoPlist: InfoPlist? public let settings: Settings = .frameworkDebug public let scripts: [TargetScript] @@ -30,5 +30,6 @@ public struct Feature: ImplementTarget { self.hasResource = hasResource self.dependencies = builder.buildTargetDependency() self.scripts = builder.buildTargetScript() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift index 6fb6d50d..cdb2650e 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/SampleApp.swift @@ -14,13 +14,15 @@ public struct SampleApp: BundleIDSuffixTarget { public let sources: SourceFilesList? = ["Demo/**"] public let settings: Settings? = .appDebug - public var infoPlist: InfoPlist? { .demoAppInfoPlist(name: name) } + public var infoPlist: InfoPlist? public init( name: String, @TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder ) { + let builder = builder() self.name = name + "SampleApp" - self.dependencies = builder().buildTargetDependency() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift index 3c9f6f3c..11664afc 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/UnitTests.swift @@ -6,15 +6,22 @@ // public struct UnitTests: TestsTarget { - public var name: String - + public let name: String + public let infoPlist: InfoPlist? + public let dependencies: [TargetDependency] public let product: Product = .unitTests public var bundleId: String { "\(name).Tests" } - public init(name: String) { + public init( + name: String, + @TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder + ) { + let builder = builder() self.name = name + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift index 8c293f3d..7141be03 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/Target/WidgetExtension.swift @@ -9,7 +9,7 @@ public struct WidgetExtension: AppExtensionTarget { public let name: String public let dependencies: [TargetDependency] - public let infoPlist: InfoPlist? = .extendingDefault(with: .widgetInfoPlist) + public let infoPlist: InfoPlist? public let scripts: [TargetScript] public var sources: SourceFilesList? { ["\(name)/**"] } @@ -50,5 +50,6 @@ public struct WidgetExtension: AppExtensionTarget { self.name = name self.dependencies = builder.buildTargetDependency() self.scripts = builder.buildTargetScript() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift index e9da247b..f06415a6 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/ImplementTarget.swift @@ -9,6 +9,5 @@ public protocol ImplementTarget: BundleIDSuffixTarget, LocalDependency { } public extension ImplementTarget { var sources: SourceFilesList? { ["Sources/**"] } - var infoPlist: InfoPlist { .frameworkInfoPlist } var settings: Settings { .frameworkDebug } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift index 3f6a8b6e..7a154312 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift @@ -9,6 +9,5 @@ public protocol InterfaceTarget: BundleIDSuffixTarget, LocalDependency { } extension InterfaceTarget { var product: Product { .framework } - var infoPlist: InfoPlist { .frameworkInfoPlist } var settings: Settings { .frameworkDebug } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift index 4f659b66..6c09a6d7 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestingTarget.swift @@ -8,6 +8,5 @@ public protocol TestingTarget: TargetBuildable { } public extension TestingTarget { - var infoPlist: InfoPlist? { .frameworkInfoPlist } var sources: SourceFilesList? { ["Testing/**"] } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift index 79b2123e..fec24ff9 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/TestsTarget.swift @@ -8,7 +8,6 @@ public protocol TestsTarget: TargetBuildable { } public extension TestsTarget { - var infoPlist: InfoPlist? { .frameworkInfoPlist } var sources: SourceFilesList? { ["Tests/**"] } var settings: Settings? { .settings( diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift index 991238cd..08840268 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift @@ -9,13 +9,16 @@ public struct TargetComponentBuilder { let dependencyBuildables: [TargetDependencyBuildable] let targetScriptBuildables: [TargetScriptBuildable] + let infoPlistBuildables: [InfoPlistBuildable] public init( dependencyBuildables: [TargetDependencyBuildable] = [], - targetScriptBuildables: [TargetScriptBuildable] = [] + targetScriptBuildables: [TargetScriptBuildable] = [], + infoPlistBuildables: [InfoPlistBuildable] = [] ) { self.dependencyBuildables = dependencyBuildables self.targetScriptBuildables = targetScriptBuildables + self.infoPlistBuildables = infoPlistBuildables } } @@ -63,3 +66,20 @@ extension TargetComponentBuilder: TargetScriptBuildable { targetScriptBuildables.flatMap { $0.buildTargetScript() } } } + +// MARK: InfoPlistBuildable +public extension TargetComponentBuilder { + static func buildExpression(_ expression: InfoPlistBuildable) -> TargetComponentBuilder { + .init(infoPlistBuildables: [expression]) + } +} + +extension TargetComponentBuilder: InfoPlistBuildable { + public var dictionary: [String : ProjectDescription.Plist.Value] { + [:] + } + + public func buildInfoPlist() -> InfoPlist { + buildInfoPlist() + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeBuilder.swift new file mode 100644 index 00000000..51f4ea5e --- /dev/null +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Foundation/TypeBuilder.swift @@ -0,0 +1,15 @@ +// +// TypeBuilder.swift +// EnvironmentPlugin +// +// Created by gnksbm on 4/11/25. +// + +import Foundation + +@resultBuilder +struct TypeBuilder { + static func buildBlock(_ components: T...) -> [T] { + components + } +} diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift deleted file mode 100644 index 343e64f1..00000000 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/InfoPlist.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// InfoPlist.swift -// AppStore -// -// Created by gnksbm on 2023/11/19. -// Copyright © 2023 https://github.com/gnksbm/Clone_AppStore. All rights reserved. -// - -import ProjectDescription - -public extension InfoPlist { - static let appInfoPlist: Self = .extendingDefault( - with: .baseInfoPlist - .merging(.additionalInfoPlist) { oldValue, newValue in - newValue - } - .merging(.secrets) { oldValue, newValue in - newValue - } - ) - - static func demoAppInfoPlist(name: String) -> Self { - .extendingDefault( - with: .baseInfoPlist - .merging(.additionalInfoPlist) { oldValue, newValue in - newValue - } - .merging(.secrets) { oldValue, newValue in - newValue - } - .merging([ - "CFBundleDisplayName": "\(name)" - ]) { oldValue, newValue in - newValue - } - ) - } - - static let frameworkInfoPlist: Self = .extendingDefault( - with: .framework - .merging(.secrets) { oldValue, newValue in - newValue - } - ) -} - -extension Plist.Value { - static let bundleDisplayName: Self = .string(.displayName) - static let bundleShortVersionString: Self = .string(.marketingVersion) - static let bundleVersion: Self = .string(.buildVersion) -} - -public extension [String: Plist.Value] { - static let secrets: Self = [ - "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", - "NMFClientId": "$(NAVERMAP_CLIENT_ID)", - "TERMS_OF_PRIVACY_URL": "$(TERMS_OF_PRIVACY_URL)", - "LOCATION_PRIVACY_URL": "$(LOCATION_PRIVACY_URL)", - "INQUIRY_URL": "$(INQUIRY_URL)", - "APPSTORE_ID": "$(APPSTORE_ID)", - "DOMAIN_URL": "$(DOMAIN_URL)", - ] - - static let additionalInfoPlist: Self = [ - "FirebaseAppDelegateProxyEnabled": false, - "ITSAppUsesNonExemptEncryption": "NO", - "NSAppTransportSecurity": [ - "NSExceptionDomains": [ - "ws.bus.go.kr": [ - "NSIncludesSubdomains": true, - "NSExceptionAllowsInsecureHTTPLoads": true, - ] - ] - ], - "UIBackgroundModes": [ - "fetch", - "processing", - "remote-notification" - ], - "BGTaskSchedulerPermittedIdentifiers" : [.string(.bundleID)], - "NSLocationWhenInUseUsageDescription" : "주변 정류장을 찾기 위해 권한이 필요합니다.", - "NSLocationAlwaysAndWhenInUseUsageDescription" : "주변 정류장을 찾기 위해 권한이 필요합니다." - ] - - static let baseInfoPlist: Self = [ - "CFBundleDisplayName": .bundleDisplayName, - "CFBundleShortVersionString": .bundleShortVersionString, - "CFBundleVersion": .bundleVersion, - "UILaunchStoryboardName": "LaunchScreen.storyboard", - "UIApplicationSceneManifest": [ - "UIApplicationSupportsMultipleScenes": false, - "UISceneConfigurations": [ - "UIWindowSceneSessionRoleApplication": [ - [ - "UISceneConfigurationName": "Default Configuration", - "UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate" - ], - ] - ] - ], - "UISupportedInterfaceOrientations": ["UIInterfaceOrientationPortrait"], - ] - - static let notificationInfoPlist: Self = [ - "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", - "CFBundleShortVersionString": .bundleShortVersionString, - "CFBundleVersion": .bundleVersion, - "CFBundleDisplayName": .bundleDisplayName, - "NSExtension": [ - "NSExtensionPointIdentifier": "com.apple.usernotifications.service", - "NSExtensionPrincipalClass": "$(PRODUCT_MODULE_NAME).NotificationService" - ], - "NSAppTransportSecurity": [ - "NSExceptionDomains": [ - "ws.bus.go.kr": [ - "NSIncludesSubdomains": true, - "NSExceptionAllowsInsecureHTTPLoads": true, - ] - ] - ], - ] - - static let widgetInfoPlist: Self = [ - "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", - "CFBundleShortVersionString": .bundleShortVersionString, - "CFBundleVersion": .bundleVersion, - "CFBundleDisplayName": .bundleDisplayName, - "CFBundlePackageType": "$(PRODUCT_BUNDLE_PACKAGE_TYPE)", - "NSExtension": [ - "NSExtensionPointIdentifier": "com.apple.widgetkit-extension", - ], - "NSAppTransportSecurity": [ - "NSExceptionDomains": [ - "ws.bus.go.kr": [ - "NSIncludesSubdomains": true, - "NSExceptionAllowsInsecureHTTPLoads": true, - ] - ] - ], - ] - - static let framework: Self = [ - "CFBundleDevelopmentRegion": "$(DEVELOPMENT_LANGUAGE)", - "CFBundleExecutable": "$(EXECUTABLE_NAME)", - "CFBundleIdentifier": "$(PRODUCT_BUNDLE_IDENTIFIER)", - "CFBundleInfoDictionaryVersion": "6.0", - "CFBundleName": "$(PRODUCT_NAME)", - "CFBundlePackageType": "FMWK", - "CFBundleShortVersionString": .bundleShortVersionString, - "CFBundleVersion": .bundleVersion, - ] -} diff --git a/Projects/App/Project.swift b/Projects/App/Project.swift index bc756a6d..5a68de13 100644 --- a/Projects/App/Project.swift +++ b/Projects/App/Project.swift @@ -7,6 +7,9 @@ let project = Project(name: "App") { Data() FirebaseModule() SwiftLintScript() + UIKitInfoPlist() + AppInfoPlist(displayName: .displayName, marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } // WidgetExtension(name: "Widget") { // MainFeature() diff --git a/Projects/Core/Project.swift b/Projects/Core/Project.swift index 470841b5..310acd42 100644 --- a/Projects/Core/Project.swift +++ b/Projects/Core/Project.swift @@ -4,5 +4,6 @@ import ProjectDescriptionHelpers let project = Project(name: "Core") { Core { ThirdPartyLibs() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/CoreDataService/Project.swift b/Projects/CoreDataService/Project.swift index 6694b524..fff4082c 100644 --- a/Projects/CoreDataService/Project.swift +++ b/Projects/CoreDataService/Project.swift @@ -4,5 +4,6 @@ import ProjectDescriptionHelpers let project = Project(name: "CoreDataService") { CoreDataService { Domain() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/Data/Project.swift b/Projects/Data/Project.swift index 2c39a700..ef6f50a4 100644 --- a/Projects/Data/Project.swift +++ b/Projects/Data/Project.swift @@ -7,5 +7,6 @@ let project = Project(name: "Data") { NetworkService() CoreDataService() FirebaseInterface() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/DesignSystem/Project.swift b/Projects/DesignSystem/Project.swift index a5b496bd..768f03ff 100644 --- a/Projects/DesignSystem/Project.swift +++ b/Projects/DesignSystem/Project.swift @@ -4,5 +4,6 @@ import ProjectDescriptionHelpers let project = Project(name: "DesignSystem") { DesignSystem() { Lottie() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/Domain/Project.swift b/Projects/Domain/Project.swift index bccde979..38c9ca34 100644 --- a/Projects/Domain/Project.swift +++ b/Projects/Domain/Project.swift @@ -4,5 +4,6 @@ import ProjectDescriptionHelpers let project = Project(name: "Domain") { Domain { Core() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/Feature/AlarmFeature/Project.swift b/Projects/Feature/AlarmFeature/Project.swift index a4d0835c..f022bc2b 100644 --- a/Projects/Feature/AlarmFeature/Project.swift +++ b/Projects/Feature/AlarmFeature/Project.swift @@ -8,9 +8,14 @@ let project = Project( Feature(name: "AlarmFeature") { FeatureDependency() FeatureSwiftLintScript() + FrameworkInfoPlist(marketingVersion: .marketingVersion) + SecretInfoPlist() } SampleApp(name: "AlarmFeature") { Feature(name: "AlarmFeature") + UIKitInfoPlist() + AppInfoPlist(displayName: "AlarmFeatureSampleApp", marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } SampleAppScheme(name: "AlarmFeature") } diff --git a/Projects/Feature/BusStopFeature/Project.swift b/Projects/Feature/BusStopFeature/Project.swift index 5e2d03f0..d74e0340 100644 --- a/Projects/Feature/BusStopFeature/Project.swift +++ b/Projects/Feature/BusStopFeature/Project.swift @@ -8,9 +8,14 @@ let project = Project( Feature(name: "BusStopFeature") { FeatureDependency() FeatureSwiftLintScript() + FrameworkInfoPlist(marketingVersion: .marketingVersion) + SecretInfoPlist() } SampleApp(name: "BusStopFeature") { Feature(name: "BusStopFeature") + UIKitInfoPlist() + AppInfoPlist(displayName: "BusStopFeatureSampleApp", marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } SampleAppScheme(name: "BusStopFeature") } diff --git a/Projects/Feature/HomeFeature/Project.swift b/Projects/Feature/HomeFeature/Project.swift index ea8de5dc..12a07337 100644 --- a/Projects/Feature/HomeFeature/Project.swift +++ b/Projects/Feature/HomeFeature/Project.swift @@ -8,9 +8,14 @@ let project = Project( Feature(name: "HomeFeature") { FeatureDependency() FeatureSwiftLintScript() + FrameworkInfoPlist(marketingVersion: .marketingVersion) + SecretInfoPlist() } SampleApp(name: "HomeFeature") { Feature(name: "HomeFeature") + UIKitInfoPlist() + AppInfoPlist(displayName: "HomeFeatureSampleApp", marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } SampleAppScheme(name: "HomeFeature") } diff --git a/Projects/Feature/NearMapFeature/Project.swift b/Projects/Feature/NearMapFeature/Project.swift index e1cd1151..f665aac7 100644 --- a/Projects/Feature/NearMapFeature/Project.swift +++ b/Projects/Feature/NearMapFeature/Project.swift @@ -8,9 +8,14 @@ let project = Project( Feature(name: "NearMapFeature") { FeatureDependency() FeatureSwiftLintScript() + FrameworkInfoPlist(marketingVersion: .marketingVersion) + SecretInfoPlist() } SampleApp(name: "NearMapFeature") { Feature(name: "NearMapFeature") + UIKitInfoPlist() + AppInfoPlist(displayName: "NearMapFeatureSampleApp", marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } SampleAppScheme(name: "NearMapFeature") } diff --git a/Projects/Feature/SearchFeature/Project.swift b/Projects/Feature/SearchFeature/Project.swift index 68aa167a..afa50e6f 100644 --- a/Projects/Feature/SearchFeature/Project.swift +++ b/Projects/Feature/SearchFeature/Project.swift @@ -8,9 +8,14 @@ let project = Project( Feature(name: "SearchFeature") { FeatureDependency() FeatureSwiftLintScript() + FrameworkInfoPlist(marketingVersion: .marketingVersion) + SecretInfoPlist() } SampleApp(name: "SearchFeature") { Feature(name: "SearchFeature") + UIKitInfoPlist() + AppInfoPlist(displayName: "SearchFeatureSampleApp", marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } SampleAppScheme(name: "SearchFeature") } diff --git a/Projects/Feature/SettingsFeature/Project.swift b/Projects/Feature/SettingsFeature/Project.swift index d52094d9..63413b5b 100644 --- a/Projects/Feature/SettingsFeature/Project.swift +++ b/Projects/Feature/SettingsFeature/Project.swift @@ -8,9 +8,14 @@ let project = Project( Feature(name: "SettingsFeature") { FeatureDependency() FeatureSwiftLintScript() + FrameworkInfoPlist(marketingVersion: .marketingVersion) + SecretInfoPlist() } SampleApp(name: "SettingsFeature") { Feature(name: "SettingsFeature") + UIKitInfoPlist() + AppInfoPlist(displayName: "SettingsFeatureSampleApp", marketingVersion: .marketingVersion, buildVersion: .buildVersion) + SecretInfoPlist() } SampleAppScheme(name: "SettingsFeature") } diff --git a/Projects/FeatureDependency/Project.swift b/Projects/FeatureDependency/Project.swift index 28c122cf..fd2eb611 100644 --- a/Projects/FeatureDependency/Project.swift +++ b/Projects/FeatureDependency/Project.swift @@ -5,5 +5,6 @@ let project = Project(name: "FeatureDependency") { FeatureDependency() { DesignSystem() Domain() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/FirebaseInterface/Project.swift b/Projects/FirebaseInterface/Project.swift index 60a19da4..8b70bdbc 100644 --- a/Projects/FirebaseInterface/Project.swift +++ b/Projects/FirebaseInterface/Project.swift @@ -9,5 +9,7 @@ import ProjectDescription import ProjectDescriptionHelpers let project = Project(name: "FirebaseInterface") { - FirebaseInterface() + FirebaseInterface { + FrameworkInfoPlist(marketingVersion: .marketingVersion) + } } diff --git a/Projects/FirebaseModule/Project.swift b/Projects/FirebaseModule/Project.swift index e54f60fa..661edc0c 100644 --- a/Projects/FirebaseModule/Project.swift +++ b/Projects/FirebaseModule/Project.swift @@ -13,5 +13,6 @@ let project = Project(name: "FirebaseModule") { FirebaseInterface() FirebaseAnalytics() FirebaseMessaging() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/MainFeature/Project.swift b/Projects/MainFeature/Project.swift index eef62d46..6a259eae 100644 --- a/Projects/MainFeature/Project.swift +++ b/Projects/MainFeature/Project.swift @@ -9,5 +9,6 @@ let project = Project(name: "MainFeature") { Feature(name: "BusStopFeature") Feature(name: "SearchFeature") Feature(name: "NearMapFeature") + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/NetworkService/Project.swift b/Projects/NetworkService/Project.swift index b84952b3..270e8420 100644 --- a/Projects/NetworkService/Project.swift +++ b/Projects/NetworkService/Project.swift @@ -5,5 +5,6 @@ let project = Project(name: "NetworkService") { NetworkService { // TODO: Domain 의존성 제거, RxSwift를 의존하도록, Core / Data 의존성 필요 여부 체크 Domain() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Projects/ThirdPartyLibs/Project.swift b/Projects/ThirdPartyLibs/Project.swift index 657dc538..8a5bc6b4 100644 --- a/Projects/ThirdPartyLibs/Project.swift +++ b/Projects/ThirdPartyLibs/Project.swift @@ -8,5 +8,6 @@ let project = Project(name: "ThirdPartyLibs") { NMapsMap() RxSwift() RxCocoa() + FrameworkInfoPlist(marketingVersion: .marketingVersion) } } diff --git a/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift b/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift new file mode 100644 index 00000000..a2299997 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift @@ -0,0 +1,44 @@ +// +// AppInfoPlist.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/11/25. +// + +public struct AppInfoPlist: InfoPlistBuildable { + let displayName: String + let marketingVersion: String + let buildVersion: String + + public var dictionary: [String : Plist.Value] { + [ + "CFBundleDisplayName": .string(displayName), + "CFBundleShortVersionString": .string(marketingVersion), + "CFBundleVersion": .string(.buildVersion), + "FirebaseAppDelegateProxyEnabled": false, + "ITSAppUsesNonExemptEncryption": "NO", + "NSAppTransportSecurity": [ + "NSExceptionDomains": [ + "ws.bus.go.kr": [ + "NSIncludesSubdomains": true, + "NSExceptionAllowsInsecureHTTPLoads": true, + ] + ] + ], + "UIBackgroundModes": [ + "fetch", + "processing", + "remote-notification" + ], + "BGTaskSchedulerPermittedIdentifiers" : [.string(.bundleID)], + "NSLocationWhenInUseUsageDescription" : "주변 정류장을 찾기 위해 권한이 필요합니다.", + "NSLocationAlwaysAndWhenInUseUsageDescription" : "주변 정류장을 찾기 위해 권한이 필요합니다." + ] + } + + public init(displayName: String, marketingVersion: String, buildVersion: String) { + self.displayName = displayName + self.marketingVersion = marketingVersion + self.buildVersion = buildVersion + } +} diff --git a/Tuist/ProjectDescriptionHelpers/InfoPlist/FrameworkInfoPlist.swift b/Tuist/ProjectDescriptionHelpers/InfoPlist/FrameworkInfoPlist.swift new file mode 100644 index 00000000..b566fe13 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/InfoPlist/FrameworkInfoPlist.swift @@ -0,0 +1,27 @@ +// +// FrameworkInfoPlist.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/11/25. +// + +public struct FrameworkInfoPlist: InfoPlistBuildable { + let marketingVersion: String + + public var dictionary: [String : Plist.Value] { + [ + "CFBundleShortVersionString": .string(marketingVersion), + "CFBundleVersion": .string("1"), + "CFBundleDevelopmentRegion": "$(DEVELOPMENT_LANGUAGE)", + "CFBundleExecutable": "$(EXECUTABLE_NAME)", + "CFBundleIdentifier": "$(PRODUCT_BUNDLE_IDENTIFIER)", + "CFBundleInfoDictionaryVersion": "6.0", + "CFBundleName": "$(PRODUCT_NAME)", + "CFBundlePackageType": "FMWK", + ] + } + + public init(marketingVersion: String) { + self.marketingVersion = marketingVersion + } +} diff --git a/Tuist/ProjectDescriptionHelpers/InfoPlist/NotificationServiceInfoPlist.swift b/Tuist/ProjectDescriptionHelpers/InfoPlist/NotificationServiceInfoPlist.swift new file mode 100644 index 00000000..fcbe53c1 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/InfoPlist/NotificationServiceInfoPlist.swift @@ -0,0 +1,37 @@ +// +// NotificationServiceInfoPlist.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/11/25. +// + +public struct NotificationServiceInfoPlist: InfoPlistBuildable { + let displayName: String + let marketingVersion: String + + public var dictionary: [String : Plist.Value] { + [ + "CFBundleDisplayName": .string(displayName), + "CFBundleShortVersionString": .string(marketingVersion), + "CFBundleVersion": .string("1"), + "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", + "NSExtension": [ + "NSExtensionPointIdentifier": "com.apple.usernotifications.service", + "NSExtensionPrincipalClass": "$(PRODUCT_MODULE_NAME).NotificationService" + ], + "NSAppTransportSecurity": [ + "NSExceptionDomains": [ + "ws.bus.go.kr": [ + "NSIncludesSubdomains": true, + "NSExceptionAllowsInsecureHTTPLoads": true, + ] + ] + ], + ] + } + + public init(displayName: String, marketingVersion: String) { + self.displayName = displayName + self.marketingVersion = marketingVersion + } +} diff --git a/Tuist/ProjectDescriptionHelpers/InfoPlist/SecretInfoPlist.swift b/Tuist/ProjectDescriptionHelpers/InfoPlist/SecretInfoPlist.swift new file mode 100644 index 00000000..f5eb39c3 --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/InfoPlist/SecretInfoPlist.swift @@ -0,0 +1,22 @@ +// +// SecretInfoPlist.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/11/25. +// + +public struct SecretInfoPlist: InfoPlistBuildable { + public var dictionary: [String : Plist.Value] { + [ + "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", + "NMFClientId": "$(NAVERMAP_CLIENT_ID)", + "TERMS_OF_PRIVACY_URL": "$(TERMS_OF_PRIVACY_URL)", + "LOCATION_PRIVACY_URL": "$(LOCATION_PRIVACY_URL)", + "INQUIRY_URL": "$(INQUIRY_URL)", + "APPSTORE_ID": "$(APPSTORE_ID)", + "DOMAIN_URL": "$(DOMAIN_URL)", + ] + } + + public init() { } +} diff --git a/Tuist/ProjectDescriptionHelpers/InfoPlist/WidgetInfoPlist.swift b/Tuist/ProjectDescriptionHelpers/InfoPlist/WidgetInfoPlist.swift new file mode 100644 index 00000000..0c4c024b --- /dev/null +++ b/Tuist/ProjectDescriptionHelpers/InfoPlist/WidgetInfoPlist.swift @@ -0,0 +1,37 @@ +// +// WidgetInfoPlist.swift +// ProjectDescriptionHelpers +// +// Created by gnksbm on 4/11/25. +// + +public struct WidgetInfoPlist: InfoPlistBuildable { + let displayName: String + let marketingVersion: String + + public var dictionary: [String : Plist.Value] { + [ + "CFBundleDisplayName": .string(displayName), + "CFBundleShortVersionString": .string(marketingVersion), + "CFBundleVersion": .string("1"), + "DATA_GO_KR_API_KEY": "$(DATA_GO_KR_API_KEY)", + "CFBundlePackageType": "$(PRODUCT_BUNDLE_PACKAGE_TYPE)", + "NSExtension": [ + "NSExtensionPointIdentifier": "com.apple.widgetkit-extension", + ], + "NSAppTransportSecurity": [ + "NSExceptionDomains": [ + "ws.bus.go.kr": [ + "NSIncludesSubdomains": true, + "NSExceptionAllowsInsecureHTTPLoads": true, + ] + ] + ], + ] + } + + public init(displayName: String, marketingVersion: String) { + self.displayName = displayName + self.marketingVersion = marketingVersion + } +} diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift index 8b7c6130..769f0447 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/Core.swift @@ -7,9 +7,12 @@ public struct Core: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift index 02f54890..faff1b07 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/CoreDataService.swift @@ -7,9 +7,12 @@ public struct CoreDataService: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift index 7495584f..ccc32a5a 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/Data.swift @@ -7,7 +7,9 @@ public struct Data: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] + public let coreDataModels: [CoreDataModel] = [ .coreDataModel( "../App/Resources/Model.xcdatamodeld", @@ -16,6 +18,8 @@ public struct Data: FrameworkTarget { ] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift index e13da1d4..d491fcdc 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/DesignSystem.swift @@ -7,10 +7,13 @@ public struct DesignSystem: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public let resources: ResourceFileElements? = ["Resources/**"] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift index d7de43bc..b4af00c3 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/Domain.swift @@ -7,9 +7,12 @@ public struct Domain: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift index c9f736e4..b928b9cd 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/FeatureDependency.swift @@ -7,9 +7,12 @@ public struct FeatureDependency: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift index 4d3d9475..9bff9a79 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/FirebaseInterface.swift @@ -8,19 +8,25 @@ public struct FirebaseInterface: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } public struct FirebaseModule: FrameworkTarget { public let product: Product = .staticFramework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift index 909697e3..b3deb03b 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/MainFeature.swift @@ -7,9 +7,12 @@ public struct MainFeature: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift index 9379bb75..b7e1c55e 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/NetworkService.swift @@ -7,9 +7,12 @@ public struct NetworkService: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } diff --git a/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift b/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift index a325e93c..717629b7 100644 --- a/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift +++ b/Tuist/ProjectDescriptionHelpers/Module/Local/ThirdPartyLibs.swift @@ -7,9 +7,12 @@ public struct ThirdPartyLibs: FrameworkTarget { public let product: Product = .framework + public let infoPlist: InfoPlist? public let dependencies: [TargetDependency] public init(@TargetComponentBuilder dependencies builder: () -> TargetComponentBuilder = { .init() }) { - self.dependencies = builder().buildTargetDependency() + let builder = builder() + self.dependencies = builder.buildTargetDependency() + self.infoPlist = builder.buildInfoPlist() } } From c3bb9b24f8147acad2d1f48f345b3fc42ecca1a4 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 17 Apr 2025 22:48:32 +0900 Subject: [PATCH 19/28] =?UTF-8?q?fix:=20Tuist=20gen=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Builder/TargetComponentBuilder.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift index 08840268..f492b41d 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift @@ -80,6 +80,6 @@ extension TargetComponentBuilder: InfoPlistBuildable { } public func buildInfoPlist() -> InfoPlist { - buildInfoPlist() + infoPlistBuildables.buildInfoPlist() } } From f5c2aa14b732fae6df4962f153a5254204fc48f9 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Sun, 4 May 2025 23:11:36 +0900 Subject: [PATCH 20/28] =?UTF-8?q?fix:=20Tuist=20Plist=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InfoPlistBuildable/InfoPlistBuildable.swift | 14 ++++++-------- .../Builder/TargetComponentBuilder.swift | 12 ++++++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift index aef1b07c..cf27f273 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/InfoPlistBuildable/InfoPlistBuildable.swift @@ -11,18 +11,16 @@ public protocol InfoPlistBuildable { var dictionary: [String: Plist.Value] { get } } -extension InfoPlistBuildable { +public extension InfoPlistBuildable { func buildInfoPlist() -> InfoPlist { .dictionary(dictionary) } } -extension Array where Element == any InfoPlistBuildable { - func buildInfoPlist() -> InfoPlist { - .dictionary( - reduce([String: Plist.Value]()) { partialResult, next in - partialResult.merging(next.dictionary) { _, new in new } - } - ) +extension Array: InfoPlistBuildable where Element == any InfoPlistBuildable { + public var dictionary: [String : Plist.Value] { + reduce([String : Plist.Value]()) { partialResult, next in + partialResult.merging(next.dictionary) { _, new in new } + } } } diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift index f492b41d..83be39fa 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Builder/TargetComponentBuilder.swift @@ -29,7 +29,11 @@ public extension TargetComponentBuilder { } static func buildExpression(_ expression: TargetComponentBuilder...) -> TargetComponentBuilder { - .init(dependencyBuildables: expression.flatMap { $0.dependencyBuildables }) + .init( + dependencyBuildables: expression.flatMap { $0.dependencyBuildables }, + targetScriptBuildables: expression.flatMap { $0.targetScriptBuildables }, + infoPlistBuildables: expression.flatMap { $0.infoPlistBuildables } + ) } static func buildPartialBlock(first: TargetComponentBuilder) -> TargetComponentBuilder { @@ -37,7 +41,11 @@ public extension TargetComponentBuilder { } static func buildPartialBlock(accumulated: TargetComponentBuilder, next: TargetComponentBuilder) -> TargetComponentBuilder { - .init(dependencyBuildables: accumulated.dependencyBuildables + next.dependencyBuildables) + .init( + dependencyBuildables: accumulated.dependencyBuildables + next.dependencyBuildables, + targetScriptBuildables: accumulated.targetScriptBuildables + next.targetScriptBuildables, + infoPlistBuildables: accumulated.infoPlistBuildables + next.infoPlistBuildables + ) } } From c526210285cd31dc5853c5ddf629566c45d32158 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:06:52 +0900 Subject: [PATCH 21/28] =?UTF-8?q?fix:=20=EB=88=84=EB=9D=BD=EB=90=9C=20App?= =?UTF-8?q?=20Plist=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InfoPlist/AppInfoPlist.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift b/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift index a2299997..4d4c8987 100644 --- a/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift +++ b/Tuist/ProjectDescriptionHelpers/InfoPlist/AppInfoPlist.swift @@ -15,6 +15,21 @@ public struct AppInfoPlist: InfoPlistBuildable { "CFBundleDisplayName": .string(displayName), "CFBundleShortVersionString": .string(marketingVersion), "CFBundleVersion": .string(.buildVersion), + "CFBundleExecutable": "$(EXECUTABLE_NAME)", + "CFBundleIdentifier": "$(PRODUCT_BUNDLE_IDENTIFIER)", + "UILaunchStoryboardName": "LaunchScreen.storyboard", + "UIApplicationSceneManifest": [ + "UIApplicationSupportsMultipleScenes": false, + "UISceneConfigurations": [ + "UIWindowSceneSessionRoleApplication": [ + [ + "UISceneConfigurationName": "Default Configuration", + "UISceneDelegateClassName": "$(PRODUCT_MODULE_NAME).SceneDelegate" + ], + ] + ] + ], + "UISupportedInterfaceOrientations": ["UIInterfaceOrientationPortrait"], "FirebaseAppDelegateProxyEnabled": false, "ITSAppUsesNonExemptEncryption": "NO", "NSAppTransportSecurity": [ From 6c298f5a8b9efdcc304be8490d7898556def4a82 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:07:07 +0900 Subject: [PATCH 22/28] =?UTF-8?q?fix:=20=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=EC=A0=9C=EC=96=B4=EC=9E=90=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TargetBuildable/TargetInterface/InterfaceTarget.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift index 7a154312..3d3b5a7b 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/TargetBuildable/TargetInterface/InterfaceTarget.swift @@ -7,7 +7,7 @@ public protocol InterfaceTarget: BundleIDSuffixTarget, LocalDependency { } -extension InterfaceTarget { +public extension InterfaceTarget { var product: Product { .framework } var settings: Settings { .frameworkDebug } } From 6f0a76c4dad41be2c01de1f7cf440dc240f5d400 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:07:18 +0900 Subject: [PATCH 23/28] =?UTF-8?q?fix:=20fastlane=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastlane/README.md | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/fastlane/README.md b/fastlane/README.md index 86c9c296..48a5a01f 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -15,29 +15,13 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do ## iOS -### ios regenerate +### ios sync ```sh -[bundle exec] fastlane ios regenerate +[bundle exec] fastlane ios sync ``` -Regenerate - -### ios getig - -```sh -[bundle exec] fastlane ios getig -``` - -Download Ignored - -### ios setpj - -```sh -[bundle exec] fastlane ios setpj -``` - -Set Project +인증서 가져오기 ### ios tf_local From cfd7f7727e2f876c2c95d3731e3c5c5230dc0561 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:11:38 +0900 Subject: [PATCH 24/28] =?UTF-8?q?feat:=20Makefile=20=EC=9D=B8=EC=A6=9D?= =?UTF-8?q?=EC=84=9C=20=EA=B0=B1=EC=8B=A0=20=EC=BB=A4=EB=A9=98=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ff393517..3b6d982f 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,11 @@ fetch: gen: tuist generate --no-open +sign: getig + fastlane sync + getig: - @echo "Select config source:" + @echo "Git 토큰을 어디서 불러올까요?" @echo " 1) global" @echo " 2) local" @read -p "Enter choice [1 or 2]: " choice; \ From dd584024bc243f6f1f3cd03aa891ea657a1bed0b Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:40:57 +0900 Subject: [PATCH 25/28] =?UTF-8?q?fix:=20firebase=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=A5=BC=20=EB=A7=8E=EC=9D=B4=20=EC=B6=9C=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Buildable/SchemeBuildable/Scheme/AppScheme.swift | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift index 8d865b7e..91c0aab7 100644 --- a/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift +++ b/Plugins/EnvironmentPlugin/ProjectDescriptionHelpers/Buildable/SchemeBuildable/Scheme/AppScheme.swift @@ -27,10 +27,8 @@ public struct AppScheme: SchemeBuildable { configuration: .debug, arguments: .arguments( launchArguments: [ - .launchArgument( - name: "-FIRDebugEnabled", - isEnabled: true - ) + .launchArgument(name: "-FIRDebugDisabled", isEnabled: true), + .launchArgument(name: "-noFIRAnalyticsDebugEnabled", isEnabled: true) ] ) ) From 59fcc7257ff82fd4036d87edfaf3896b2378e336 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:41:22 +0900 Subject: [PATCH 26/28] =?UTF-8?q?fix:=20FCM=20=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EC=9D=B4=20=EC=98=AC=EB=B0=94=EB=A5=B8=20?= =?UTF-8?q?=EC=88=9C=EC=84=9C=EB=A1=9C=20=EB=8F=99=EC=9E=91=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/FirebaseModule/Sources/FirebaseSDK.swift | 9 +++------ .../FirebaseModule/Sources/MessagingDelegateProxy.swift | 5 ++++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Projects/FirebaseModule/Sources/FirebaseSDK.swift b/Projects/FirebaseModule/Sources/FirebaseSDK.swift index 96fd3019..cd0d4d3b 100644 --- a/Projects/FirebaseModule/Sources/FirebaseSDK.swift +++ b/Projects/FirebaseModule/Sources/FirebaseSDK.swift @@ -19,16 +19,13 @@ public final class FirebaseSDK { guard let options = FirebaseOptions(contentsOfFile: plistFilePath) else { throw FirebaseSDKError.invalidFilePath } + FirebaseConfiguration.shared.setLoggerLevel(.min) FirebaseApp.configure(options: options) application.registerForRemoteNotifications() } - public static func didRegisterForRemoteNotificationsWithDeviceToken( - deviceToken: Data - ) async -> String? { - Messaging.messaging().delegate = proxy - Messaging.messaging().apnsToken = deviceToken - return await proxy.requestFCMToken() + public static func didRegisterForRemoteNotificationsWithDeviceToken(deviceToken: Data) async -> String? { + await proxy.requestFCMToken(deviceToken: deviceToken) } enum FirebaseSDKError: Error { diff --git a/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift b/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift index 652260f9..4ad8c289 100644 --- a/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift +++ b/Projects/FirebaseModule/Sources/MessagingDelegateProxy.swift @@ -6,13 +6,16 @@ // Copyright © 2025 Pepsi-Club. All rights reserved. // +import Firebase import FirebaseMessaging final class MessagingDelegateProxy: NSObject, MessagingDelegate { private var continuation: CheckedContinuation? - func requestFCMToken() async -> String? { + func requestFCMToken(deviceToken: Data) async -> String? { await withCheckedContinuation { continuation in + Messaging.messaging().delegate = self + Messaging.messaging().apnsToken = deviceToken self.continuation = continuation } } From dd5ba0b07b974ff6e418fd7549cb03f10f844a84 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 00:46:07 +0900 Subject: [PATCH 27/28] =?UTF-8?q?fix:=20=EB=A1=9C=EB=9D=A0=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=9E=84=EC=8B=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tuist/Package.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tuist/Package.swift b/Tuist/Package.swift index 9eb8558c..f2b29182 100644 --- a/Tuist/Package.swift +++ b/Tuist/Package.swift @@ -18,6 +18,7 @@ let packageSettings = PackageSettings( "RxSwift": .framework, "RxCocoa": .framework, "RxCocoaRuntime": .framework, + "Lottie": .framework, ], targetSettings: [:] ) From 848db2894318fb8e3f2455db417271d5e5eb0546 Mon Sep 17 00:00:00 2001 From: Geonseob Kim <109283556+gnksbm@users.noreply.github.com> Date: Thu, 26 Jun 2025 01:00:17 +0900 Subject: [PATCH 28/28] =?UTF-8?q?fix:=20ignore=20=ED=8C=8C=EC=9D=BC=20fetc?= =?UTF-8?q?h=20=EC=BB=A4=EB=A9=98=EB=93=9C=20rabbit=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 3b6d982f..8821d635 100644 --- a/Makefile +++ b/Makefile @@ -6,25 +6,14 @@ fetch: gen: tuist generate --no-open -sign: getig - fastlane sync - -getig: - @echo "Git 토큰을 어디서 불러올까요?" - @echo " 1) global" - @echo " 2) local" - @read -p "Enter choice [1 or 2]: " choice; \ - if [ "$$choice" = "1" ]; then \ - echo "Using GITHUB_ACCESS_TOKEN from global config"; \ - GITHUB_ACCESS_TOKEN=$$(git config --global user.password); \ - elif [ "$$choice" = "2" ]; then \ - echo "Using GITHUB_ACCESS_TOKEN from local config"; \ - GITHUB_ACCESS_TOKEN=$$(git config user.password); \ - else \ - echo "Invalid choice: $$choice. Aborting..."; \ - exit 1; \ +sign: + @GIT_TOKEN=$$(git config user.password || git config --global user.password); \ + if [ -z "$$GIT_TOKEN" ]; then \ + echo "❌ Git token not found."; \ + exit 1; \ fi; \ - $(MAKE) download-privates token=$$GITHUB_ACCESS_TOKEN + $(MAKE) download-privates token=$$GIT_TOKEN && \ + fastlane sync clean: rm -rf **/**/**/*.xcodeproj @@ -51,9 +40,9 @@ clean_xcode_cache: BASE_URL = https://raw.githubusercontent.com/Pepsi-Club/WhereMyBus-ignored/main define download_file - @echo "Downloading $(3) to $(1) using token: $(2)" + @echo "📥 Downloading $(3) to $(1)" mkdir -p $(1) - curl -H "Authorization: token $(2)" -o $(1)/$(3) $(BASE_URL)/$(3) + curl -sS -H "Authorization: token $(2)" -o $(1)/$(3) $(BASE_URL)/$(3) endef .PHONY: download-privates