From 7ae3be1f2fd02560878bcc92643032cbb8b6d298 Mon Sep 17 00:00:00 2001 From: Paul Solt Date: Wed, 21 May 2025 16:56:30 -0400 Subject: [PATCH] Adds Swift Package Manager support and removes Cocoapods. * Updated Github Workflow and added build.sh for testing via Terminal. * Added GARS-Demo project using local SPM package * Updated Unit to GridUnit to fix build issues with SPM package name --- .github/workflows/build-test.yml | 21 - .github/workflows/build.yml | 19 +- CHANGELOG.md | 7 +- Package.resolved | 33 + Package.swift | 35 + Podfile | 15 - README.md | 43 +- app/GARS-Demo.xcodeproj/project.pbxproj | 382 ++++++++ .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/1024.png | Bin .../AppIcon.appiconset/120-1.png | Bin .../AppIcon.appiconset/120.png | Bin .../AppIcon.appiconset/152.png | Bin .../AppIcon.appiconset/167.png | Bin .../AppIcon.appiconset/180.png | Bin .../Assets.xcassets/AppIcon.appiconset/20.png | Bin .../Assets.xcassets/AppIcon.appiconset/29.png | Bin .../AppIcon.appiconset/40-1.png | Bin .../AppIcon.appiconset/40-2.png | Bin .../Assets.xcassets/AppIcon.appiconset/40.png | Bin .../AppIcon.appiconset/58-1.png | Bin .../Assets.xcassets/AppIcon.appiconset/58.png | Bin .../Assets.xcassets/AppIcon.appiconset/60.png | Bin .../Assets.xcassets/AppIcon.appiconset/76.png | Bin .../AppIcon.appiconset/80-1.png | Bin .../Assets.xcassets/AppIcon.appiconset/80.png | Bin .../Assets.xcassets/AppIcon.appiconset/87.png | Bin .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../center.imageset/Contents.json | 0 .../center.imageset/ic_add_black_24dp-1.png | Bin .../center.imageset/ic_add_black_24dp-2.png | Bin .../center.imageset/ic_add_black_24dp.png | Bin .../layers.imageset/Contents.json | 0 .../baseline_layers_black_24-1.png | Bin .../baseline_layers_black_24-2.png | Bin .../baseline_layers_black_24.png | Bin .../search.imageset/Contents.json | 0 .../baseline_search_black_24-1.png | Bin .../baseline_search_black_24-2.png | Bin .../baseline_search_black_24.png | Bin app/{ => GARS-Demo}/ContentView.swift | 4 +- .../Preview Assets.xcassets/Contents.json | 0 app/{ => GARS-Demo}/appApp.swift | 0 app/README.md | 2 +- build.sh | 16 + gars-ios.podspec | 22 - gars-ios.xcodeproj/project.pbxproj | 888 ------------------ .../xcshareddata/xcschemes/gars-ios.xcscheme | 91 -- gars-ios/GARS.swift | 10 +- gars-ios/GARSConstants.swift | 2 +- gars-ios/GARSUtils.swift | 2 +- gars-ios/features/GARSLine.swift | 2 +- gars-ios/grid/GARSLabeler.swift | 2 +- gars-ios/grid/Grid.swift | 4 +- gars-ios/grid/GridLabel.swift | 2 +- gars-ios/grid/GridLabeler.swift | 4 +- gars-ios/grid/GridRange.swift | 2 +- gars-ios/grid/Grids.swift | 3 +- gars-ios/grid/ZoomGrids.swift | 2 +- gars-ios/property/GARSProperties.swift | 18 +- gars-ios/tile/GARSTileOverlay.swift | 2 +- gars-iosTests/GARSTestCase.swift | 6 +- gars-iosTests/GARSUtilsTestCase.swift | 2 +- gars-iosTests/ReadmeTestCase.swift | 4 +- 65 files changed, 547 insertions(+), 1098 deletions(-) delete mode 100644 .github/workflows/build-test.yml create mode 100644 Package.resolved create mode 100644 Package.swift delete mode 100644 Podfile create mode 100644 app/GARS-Demo.xcodeproj/project.pbxproj rename app/{ => GARS-Demo}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/1024.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/120-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/120.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/152.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/167.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/180.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/20.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/29.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/40-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/40-2.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/40.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/58-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/58.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/60.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/76.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/80-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/80.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/87.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename app/{ => GARS-Demo}/Assets.xcassets/Contents.json (100%) rename app/{ => GARS-Demo}/Assets.xcassets/center.imageset/Contents.json (100%) rename app/{ => GARS-Demo}/Assets.xcassets/center.imageset/ic_add_black_24dp-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/center.imageset/ic_add_black_24dp-2.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/center.imageset/ic_add_black_24dp.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/layers.imageset/Contents.json (100%) rename app/{ => GARS-Demo}/Assets.xcassets/layers.imageset/baseline_layers_black_24-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/layers.imageset/baseline_layers_black_24-2.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/layers.imageset/baseline_layers_black_24.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/search.imageset/Contents.json (100%) rename app/{ => GARS-Demo}/Assets.xcassets/search.imageset/baseline_search_black_24-1.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/search.imageset/baseline_search_black_24-2.png (100%) rename app/{ => GARS-Demo}/Assets.xcassets/search.imageset/baseline_search_black_24.png (100%) rename app/{ => GARS-Demo}/ContentView.swift (99%) rename app/{ => GARS-Demo}/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename app/{ => GARS-Demo}/appApp.swift (100%) create mode 100755 build.sh delete mode 100644 gars-ios.podspec delete mode 100644 gars-ios.xcodeproj/project.pbxproj delete mode 100644 gars-ios.xcodeproj/xcshareddata/xcschemes/gars-ios.xcscheme diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml deleted file mode 100644 index d716218..0000000 --- a/.github/workflows/build-test.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Build & Test - -on: - push: - branches: - - master - pull_request: - -jobs: - - build: - - runs-on: macOS-latest - - steps: - - name: Checkout Repository - uses: actions/checkout@v3 - - name: Install - run: pod install - - name: Build & Test - run: xcodebuild test -workspace gars-ios.xcworkspace -scheme gars-ios -destination 'platform=iOS Simulator,OS=latest,name=iPhone 14' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 758f86c..c17dd24 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,8 +13,19 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 - - name: Install - run: pod install + uses: actions/checkout@v4 - name: Build - run: xcodebuild build-for-testing -workspace gars-ios.xcworkspace -scheme gars-ios -destination 'platform=iOS Simulator,OS=latest,name=iPhone 14' + run: | + iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') + if [ -z "$iphone_names" ]; then echo "Error: No iPhone simulators found."; exit 1; fi + latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) + echo "latest_iphone: $latest_iphone" + xcodebuild build -scheme GARS -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" + + - name: Test + run: | + iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') + if [ -z "$iphone_names" ]; then echo "Error: No iPhone simulators found."; exit 1; fi + latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) + echo "latest_iphone: $latest_iphone" + xcodebuild test -scheme GARS -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" diff --git a/CHANGELOG.md b/CHANGELOG.md index 84c3331..303e554 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,12 @@ Adheres to [Semantic Versioning](http://semver.org/). --- -## 1.1.6 (TBD) +## 2.0.0 (6-6-2025) -* TBD +* Adds Swift Package Manager support and removes Cocoapods (deprecated) +* Builds against new Grid 2.0.0 (grid-ios) and SimpleFeatures 5.0.0 (sf-ios) with new enum symbols exposed to Swift +* Updated Unit to GridUnit to prevent name clashes in MGRS and GARS with Foundation.Unit and Grid class names. +* Updated app demo project using SPM ## [1.1.5](https://github.com/ngageoint/gars-ios/releases/tag/1.1.5) (04-08-2024) diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..14deedd --- /dev/null +++ b/Package.resolved @@ -0,0 +1,33 @@ +{ + "originHash" : "deeaf1dbd838485ae0ce2944ca5b06d53b05ddaac0f890f0e643131d5940b452", + "pins" : [ + { + "identity" : "color-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ngageoint/color-ios", + "state" : { + "revision" : "1c588dafaf599a32d9adc29880264281dfbf286f", + "version" : "2.0.0" + } + }, + { + "identity" : "grid-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ngageoint/grid-ios", + "state" : { + "revision" : "9370e0042a6c78588486d345ab1133f450889508", + "version" : "2.0.0" + } + }, + { + "identity" : "simple-features-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ngageoint/simple-features-ios", + "state" : { + "revision" : "615127133c83122077dcf71daa53a9a93f05a347", + "version" : "5.0.0" + } + } + ], + "version" : 3 +} diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..5bcbd48 --- /dev/null +++ b/Package.swift @@ -0,0 +1,35 @@ +// swift-tools-version: 5.10 + +import PackageDescription + +let package = Package( + name: "GARS", + platforms: [.macOS(.v11), .iOS(.v13)], + products: [ + .library( + name: "GARS", + targets: ["GARS"]) + ], + dependencies: [ + .package(url: "https://github.com/ngageoint/grid-ios", from: "2.0.0") + ], + targets: [ + .target( + name: "GARS", + dependencies: [ + .product(name: "Grid", package: "grid-ios") + ], + path: "gars-ios", + resources: [ + .copy("gars.plist"), + ] + ), + .testTarget( + name: "GARSTests", + dependencies: [ + "GARS" + ], + path: "gars-iosTests" + ) + ] +) diff --git a/Podfile b/Podfile deleted file mode 100644 index 1af10bd..0000000 --- a/Podfile +++ /dev/null @@ -1,15 +0,0 @@ -source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '12.0' -use_frameworks! - -target 'gars-ios' do - pod 'grid-ios', '~> 1.0.7' - - target 'gars-iosTests' do - inherit! :complete - end - - target 'app' do - inherit! :complete - end -end diff --git a/README.md b/README.md index 3437bb0..aacd917 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ View the latest [Appledoc](http://ngageoint.github.io/gars-ios/docs/api/) ```swift -import gars_ios +import GARS ``` @@ -165,7 +165,7 @@ if zoomGrids.hasGrids() { ```objectivec -#import "gars_ios-Swift.h" +#import "GARS-Swift.h" ``` @@ -178,36 +178,37 @@ MKTileOverlay *tileOverlay = [[GARSTileOverlay alloc] init]; ### Build ### -[![Build & Test](https://github.com/ngageoint/gars-ios/workflows/Build%20&%20Test/badge.svg)](https://github.com/ngageoint/gars-ios/actions/workflows/build-test.yml) +[![Build](https://github.com/ngageoint/gars-ios/workflows/Build/badge.svg)](https://github.com/ngageoint/gars-ios/actions/workflows/build.yml) -Build this repository using Xcode and/or CocoaPods: +Build and Test (Uses UIKit, so we build with xcodebuild instead of SPM). - pod install + ./build.sh -Open gars-ios.xcworkspace in Xcode or build from command line: +You can build and test if you open the Package.swift in Xcode. - xcodebuild -workspace 'gars-ios.xcworkspace' -scheme gars-ios build - -Run tests from Xcode or from command line: - - xcodebuild test -workspace 'gars-ios.xcworkspace' -scheme gars-ios -destination 'platform=iOS Simulator,name=iPhone 15' ### Include Library ### -Include this repository by specifying it in a Podfile using a supported option. - -Pull from [CocoaPods](https://cocoapods.org/pods/gars-ios): - - pod 'gars-ios', '~> 1.1.5' +Use this library via SPM in your Package.swift: -Pull from GitHub: + dependencies: [ + .package(url: "https://github.com/ngageoint/gars-ios.git", branch: "release/2.0.0"), + ] + +Or as a tagged release: - pod 'gars-ios', :git => 'https://github.com/ngageoint/gars-ios.git', :branch => 'master' - pod 'gars-ios', :git => 'https://github.com/ngageoint/gars-ios.git', :tag => '1.1.5' + dependencies: [ + .package(url: "https://github.com/ngageoint/gars-ios.git", from: "2.0.0"), + ] -Include as local project: +Reference it in your Package.swift target: - pod 'gars-ios', :path => '../gars-ios' + .target( + name: "MyApp", + dependencies: [ + .product(name: "GARS", package: "gars-ios"), + ], + ), ### Remote Dependencies ### diff --git a/app/GARS-Demo.xcodeproj/project.pbxproj b/app/GARS-Demo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2e0f731 --- /dev/null +++ b/app/GARS-Demo.xcodeproj/project.pbxproj @@ -0,0 +1,382 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + BD6E57592DDF851200C046FD /* GARS in Frameworks */ = {isa = PBXBuildFile; productRef = BD6E57582DDF851200C046FD /* GARS */; }; + BD6E57652DDFB33A00C046FD /* GARS in Frameworks */ = {isa = PBXBuildFile; productRef = BD6E57642DDFB33A00C046FD /* GARS */; }; + BD6E57672DDFB36B00C046FD /* GARS in Frameworks */ = {isa = PBXBuildFile; productRef = BD6E57662DDFB36B00C046FD /* GARS */; }; + BD6E576A2DDFB37B00C046FD /* GARS in Frameworks */ = {isa = PBXBuildFile; productRef = BD6E57692DDFB37B00C046FD /* GARS */; }; + BD6E576D2DDFB3F300C046FD /* GARS in Frameworks */ = {isa = PBXBuildFile; productRef = BD6E576C2DDFB3F300C046FD /* GARS */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + BD6E573E2DDF84D000C046FD /* GARS-Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "GARS-Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + BD6E57402DDF84D000C046FD /* GARS-Demo */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = "GARS-Demo"; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + BD6E573B2DDF84D000C046FD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BD6E576D2DDFB3F300C046FD /* GARS in Frameworks */, + BD6E57592DDF851200C046FD /* GARS in Frameworks */, + BD6E576A2DDFB37B00C046FD /* GARS in Frameworks */, + BD6E57652DDFB33A00C046FD /* GARS in Frameworks */, + BD6E57672DDFB36B00C046FD /* GARS in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + BD6E57352DDF84D000C046FD = { + isa = PBXGroup; + children = ( + BD6E57402DDF84D000C046FD /* GARS-Demo */, + BD6E573F2DDF84D000C046FD /* Products */, + ); + sourceTree = ""; + }; + BD6E573F2DDF84D000C046FD /* Products */ = { + isa = PBXGroup; + children = ( + BD6E573E2DDF84D000C046FD /* GARS-Demo.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + BD6E573D2DDF84D000C046FD /* GARS-Demo */ = { + isa = PBXNativeTarget; + buildConfigurationList = BD6E574C2DDF84D100C046FD /* Build configuration list for PBXNativeTarget "GARS-Demo" */; + buildPhases = ( + BD6E573A2DDF84D000C046FD /* Sources */, + BD6E573B2DDF84D000C046FD /* Frameworks */, + BD6E573C2DDF84D000C046FD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + BD6E57402DDF84D000C046FD /* GARS-Demo */, + ); + name = "GARS-Demo"; + packageProductDependencies = ( + BD6E57582DDF851200C046FD /* GARS */, + BD6E57642DDFB33A00C046FD /* GARS */, + BD6E57662DDFB36B00C046FD /* GARS */, + BD6E57692DDFB37B00C046FD /* GARS */, + BD6E576C2DDFB3F300C046FD /* GARS */, + ); + productName = "GARS-Demo"; + productReference = BD6E573E2DDF84D000C046FD /* GARS-Demo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BD6E57362DDF84D000C046FD /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1620; + LastUpgradeCheck = 1620; + TargetAttributes = { + BD6E573D2DDF84D000C046FD = { + CreatedOnToolsVersion = 16.2; + LastSwiftMigration = 1620; + }; + }; + }; + buildConfigurationList = BD6E57392DDF84D000C046FD /* Build configuration list for PBXProject "GARS-Demo" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = BD6E57352DDF84D000C046FD; + minimizedProjectReferenceProxies = 1; + packageReferences = ( + BD6E576B2DDFB3F300C046FD /* XCLocalSwiftPackageReference "../../gars-ios" */, + ); + preferredProjectObjectVersion = 77; + productRefGroup = BD6E573F2DDF84D000C046FD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + BD6E573D2DDF84D000C046FD /* GARS-Demo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + BD6E573C2DDF84D000C046FD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + BD6E573A2DDF84D000C046FD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + BD6E574A2DDF84D100C046FD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.2; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + BD6E574B2DDF84D100C046FD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.2; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + BD6E574D2DDF84D100C046FD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"GARS-Demo/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "mil.nga.GARS-Demo"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + BD6E574E2DDF84D100C046FD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"GARS-Demo/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "mil.nga.GARS-Demo"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + BD6E57392DDF84D000C046FD /* Build configuration list for PBXProject "GARS-Demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BD6E574A2DDF84D100C046FD /* Debug */, + BD6E574B2DDF84D100C046FD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BD6E574C2DDF84D100C046FD /* Build configuration list for PBXNativeTarget "GARS-Demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BD6E574D2DDF84D100C046FD /* Debug */, + BD6E574E2DDF84D100C046FD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + BD6E576B2DDFB3F300C046FD /* XCLocalSwiftPackageReference "../../gars-ios" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = "../../gars-ios"; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + BD6E57582DDF851200C046FD /* GARS */ = { + isa = XCSwiftPackageProductDependency; + productName = GARS; + }; + BD6E57642DDFB33A00C046FD /* GARS */ = { + isa = XCSwiftPackageProductDependency; + productName = GARS; + }; + BD6E57662DDFB36B00C046FD /* GARS */ = { + isa = XCSwiftPackageProductDependency; + productName = GARS; + }; + BD6E57692DDFB37B00C046FD /* GARS */ = { + isa = XCSwiftPackageProductDependency; + productName = GARS; + }; + BD6E576C2DDFB3F300C046FD /* GARS */ = { + isa = XCSwiftPackageProductDependency; + productName = GARS; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = BD6E57362DDF84D000C046FD /* Project object */; +} diff --git a/app/Assets.xcassets/AccentColor.colorset/Contents.json b/app/GARS-Demo/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from app/Assets.xcassets/AccentColor.colorset/Contents.json rename to app/GARS-Demo/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/app/Assets.xcassets/AppIcon.appiconset/1024.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/1024.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/1024.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/1024.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/120-1.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/120-1.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/120-1.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/120-1.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/120.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/120.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/120.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/120.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/152.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/152.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/152.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/152.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/167.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/167.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/167.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/167.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/180.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/180.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/180.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/180.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/20.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/20.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/20.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/20.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/29.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/29.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/29.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/29.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/40-1.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/40-1.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/40-1.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/40-1.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/40-2.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/40-2.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/40-2.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/40-2.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/40.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/40.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/40.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/40.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/58-1.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/58-1.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/58-1.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/58-1.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/58.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/58.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/58.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/58.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/60.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/60.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/60.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/60.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/76.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/76.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/76.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/76.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/80-1.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/80-1.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/80-1.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/80-1.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/80.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/80.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/80.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/80.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/87.png b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/87.png similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/87.png rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/87.png diff --git a/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from app/Assets.xcassets/AppIcon.appiconset/Contents.json rename to app/GARS-Demo/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/app/Assets.xcassets/Contents.json b/app/GARS-Demo/Assets.xcassets/Contents.json similarity index 100% rename from app/Assets.xcassets/Contents.json rename to app/GARS-Demo/Assets.xcassets/Contents.json diff --git a/app/Assets.xcassets/center.imageset/Contents.json b/app/GARS-Demo/Assets.xcassets/center.imageset/Contents.json similarity index 100% rename from app/Assets.xcassets/center.imageset/Contents.json rename to app/GARS-Demo/Assets.xcassets/center.imageset/Contents.json diff --git a/app/Assets.xcassets/center.imageset/ic_add_black_24dp-1.png b/app/GARS-Demo/Assets.xcassets/center.imageset/ic_add_black_24dp-1.png similarity index 100% rename from app/Assets.xcassets/center.imageset/ic_add_black_24dp-1.png rename to app/GARS-Demo/Assets.xcassets/center.imageset/ic_add_black_24dp-1.png diff --git a/app/Assets.xcassets/center.imageset/ic_add_black_24dp-2.png b/app/GARS-Demo/Assets.xcassets/center.imageset/ic_add_black_24dp-2.png similarity index 100% rename from app/Assets.xcassets/center.imageset/ic_add_black_24dp-2.png rename to app/GARS-Demo/Assets.xcassets/center.imageset/ic_add_black_24dp-2.png diff --git a/app/Assets.xcassets/center.imageset/ic_add_black_24dp.png b/app/GARS-Demo/Assets.xcassets/center.imageset/ic_add_black_24dp.png similarity index 100% rename from app/Assets.xcassets/center.imageset/ic_add_black_24dp.png rename to app/GARS-Demo/Assets.xcassets/center.imageset/ic_add_black_24dp.png diff --git a/app/Assets.xcassets/layers.imageset/Contents.json b/app/GARS-Demo/Assets.xcassets/layers.imageset/Contents.json similarity index 100% rename from app/Assets.xcassets/layers.imageset/Contents.json rename to app/GARS-Demo/Assets.xcassets/layers.imageset/Contents.json diff --git a/app/Assets.xcassets/layers.imageset/baseline_layers_black_24-1.png b/app/GARS-Demo/Assets.xcassets/layers.imageset/baseline_layers_black_24-1.png similarity index 100% rename from app/Assets.xcassets/layers.imageset/baseline_layers_black_24-1.png rename to app/GARS-Demo/Assets.xcassets/layers.imageset/baseline_layers_black_24-1.png diff --git a/app/Assets.xcassets/layers.imageset/baseline_layers_black_24-2.png b/app/GARS-Demo/Assets.xcassets/layers.imageset/baseline_layers_black_24-2.png similarity index 100% rename from app/Assets.xcassets/layers.imageset/baseline_layers_black_24-2.png rename to app/GARS-Demo/Assets.xcassets/layers.imageset/baseline_layers_black_24-2.png diff --git a/app/Assets.xcassets/layers.imageset/baseline_layers_black_24.png b/app/GARS-Demo/Assets.xcassets/layers.imageset/baseline_layers_black_24.png similarity index 100% rename from app/Assets.xcassets/layers.imageset/baseline_layers_black_24.png rename to app/GARS-Demo/Assets.xcassets/layers.imageset/baseline_layers_black_24.png diff --git a/app/Assets.xcassets/search.imageset/Contents.json b/app/GARS-Demo/Assets.xcassets/search.imageset/Contents.json similarity index 100% rename from app/Assets.xcassets/search.imageset/Contents.json rename to app/GARS-Demo/Assets.xcassets/search.imageset/Contents.json diff --git a/app/Assets.xcassets/search.imageset/baseline_search_black_24-1.png b/app/GARS-Demo/Assets.xcassets/search.imageset/baseline_search_black_24-1.png similarity index 100% rename from app/Assets.xcassets/search.imageset/baseline_search_black_24-1.png rename to app/GARS-Demo/Assets.xcassets/search.imageset/baseline_search_black_24-1.png diff --git a/app/Assets.xcassets/search.imageset/baseline_search_black_24-2.png b/app/GARS-Demo/Assets.xcassets/search.imageset/baseline_search_black_24-2.png similarity index 100% rename from app/Assets.xcassets/search.imageset/baseline_search_black_24-2.png rename to app/GARS-Demo/Assets.xcassets/search.imageset/baseline_search_black_24-2.png diff --git a/app/Assets.xcassets/search.imageset/baseline_search_black_24.png b/app/GARS-Demo/Assets.xcassets/search.imageset/baseline_search_black_24.png similarity index 100% rename from app/Assets.xcassets/search.imageset/baseline_search_black_24.png rename to app/GARS-Demo/Assets.xcassets/search.imageset/baseline_search_black_24.png diff --git a/app/ContentView.swift b/app/GARS-Demo/ContentView.swift similarity index 99% rename from app/ContentView.swift rename to app/GARS-Demo/ContentView.swift index 172d97f..e1c521d 100644 --- a/app/ContentView.swift +++ b/app/GARS-Demo/ContentView.swift @@ -7,8 +7,8 @@ import SwiftUI import MapKit -import gars_ios -import grid_ios +import GARS +import Grid struct ContentView: View { diff --git a/app/Preview Content/Preview Assets.xcassets/Contents.json b/app/GARS-Demo/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from app/Preview Content/Preview Assets.xcassets/Contents.json rename to app/GARS-Demo/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/app/appApp.swift b/app/GARS-Demo/appApp.swift similarity index 100% rename from app/appApp.swift rename to app/GARS-Demo/appApp.swift diff --git a/app/README.md b/app/README.md index 3cfb6b1..53b3074 100644 --- a/app/README.md +++ b/app/README.md @@ -10,6 +10,6 @@ The GARS App is written in SwiftUI and provides a Global Area Reference System m [Build](https://github.com/ngageoint/gars-ios#build) this repository -Open `gars-ios.xcworkspace` in Xcode +Open `GARS-Demo` in Xcode Start the `app` scheme diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..020f028 --- /dev/null +++ b/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# Find iPhone Simulator +iphone_names=$(xcrun simctl list devices available --json | jq -r '.devices | to_entries[] | .value[] | select(.name | test("^iPhone [0-9]+")) | .name') +if [ -z "$iphone_names" ]; then echo "Error: No iPhone simulators found."; exit 1; fi + +latest_iphone=$(echo "$iphone_names" | sort | tail -n 1) +echo "latest_iphone: $latest_iphone" + +# Build +xcodebuild build -scheme GARS -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" + +# Test +xcodebuild test -scheme GARS -destination "platform=iOS Simulator,OS=latest,name=$latest_iphone" diff --git a/gars-ios.podspec b/gars-ios.podspec deleted file mode 100644 index afc33df..0000000 --- a/gars-ios.podspec +++ /dev/null @@ -1,22 +0,0 @@ -Pod::Spec.new do |s| - s.name = 'gars-ios' - s.version = '1.1.6' - s.license = {:type => 'MIT', :file => 'LICENSE' } - s.summary = 'iOS SDK for Global Area Reference System (GARS)' - s.homepage = 'https://github.com/ngageoint/gars-ios' - s.authors = { 'NGA' => '', 'BIT Systems' => '', 'Brian Osborn' => 'bosborn@caci.com' } - s.social_media_url = 'https://twitter.com/NGA_GEOINT' - s.source = { :git => 'https://github.com/ngageoint/gars-ios.git', :tag => s.version } - s.requires_arc = true - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } - - s.platform = :ios, '12.0' - s.ios.deployment_target = '12.0' - - s.source_files = 'gars-ios/**/*.swift' - - s.resource_bundle = { 'gars-ios' => ['gars-ios/**/gars*.plist'] } - s.frameworks = 'Foundation' - - s.dependency 'grid-ios', '~> 1.0.7' -end diff --git a/gars-ios.xcodeproj/project.pbxproj b/gars-ios.xcodeproj/project.pbxproj deleted file mode 100644 index acbb679..0000000 --- a/gars-ios.xcodeproj/project.pbxproj +++ /dev/null @@ -1,888 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 55; - objects = { - -/* Begin PBXBuildFile section */ - 04281FF62899BD7F00026382 /* gars_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04281FED2899BD7F00026382 /* gars_ios.framework */; }; - 04281FFC2899BD7F00026382 /* gars_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 04281FF02899BD7F00026382 /* gars_ios.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0428203428A28C4800026382 /* GARSConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0428203328A28C4800026382 /* GARSConstants.swift */; }; - 0428203728A298A600026382 /* GARSLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0428203628A298A600026382 /* GARSLine.swift */; }; - 04F520EC28A2BFD3004C6D8C /* GridType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520EB28A2BFD3004C6D8C /* GridType.swift */; }; - 04F520EF28A2F015004C6D8C /* GARSProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520EE28A2F015004C6D8C /* GARSProperties.swift */; }; - 04F520F128A2F4FA004C6D8C /* gars.plist in Resources */ = {isa = PBXBuildFile; fileRef = 04F520F028A2F4FA004C6D8C /* gars.plist */; }; - 04F520F328A2FDC0004C6D8C /* BandNumberRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520F228A2FDC0004C6D8C /* BandNumberRange.swift */; }; - 04F520F528A3C48E004C6D8C /* GARSUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520F428A3C48E004C6D8C /* GARSUtils.swift */; }; - 04F520F728A3CB72004C6D8C /* BandLettersRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520F628A3CB72004C6D8C /* BandLettersRange.swift */; }; - 04F520F928A3EE12004C6D8C /* GridRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520F828A3EE12004C6D8C /* GridRange.swift */; }; - 04F520FB28A42A05004C6D8C /* GARS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520FA28A42A05004C6D8C /* GARS.swift */; }; - 04F520FD28A44B51004C6D8C /* ZoomGrids.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520FC28A44B51004C6D8C /* ZoomGrids.swift */; }; - 04F520FF28A44D33004C6D8C /* GridLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F520FE28A44D33004C6D8C /* GridLabel.swift */; }; - 04F5210128A44E5A004C6D8C /* GARSLabeler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210028A44E5A004C6D8C /* GARSLabeler.swift */; }; - 04F5210328A44EAB004C6D8C /* GridLabeler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210228A44EAB004C6D8C /* GridLabeler.swift */; }; - 04F5210528A44F27004C6D8C /* Grids.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210428A44F27004C6D8C /* Grids.swift */; }; - 04F5210728A44F61004C6D8C /* Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210628A44F61004C6D8C /* Grid.swift */; }; - 04F5210B28A53150004C6D8C /* GARSTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210A28A53150004C6D8C /* GARSTestCase.swift */; }; - 04F5210D28A566B6004C6D8C /* GARSUtilsTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210C28A566B6004C6D8C /* GARSUtilsTestCase.swift */; }; - 04F5210F28A570DB004C6D8C /* ReadmeTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5210E28A570DB004C6D8C /* ReadmeTestCase.swift */; }; - 04F5211328AAD9EB004C6D8C /* GARSTileOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5211228AAD9EB004C6D8C /* GARSTileOverlay.swift */; }; - 04F5214028AE50EB004C6D8C /* appApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5213F28AE50EB004C6D8C /* appApp.swift */; }; - 04F5214228AE50EB004C6D8C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F5214128AE50EB004C6D8C /* ContentView.swift */; }; - 04F5214428AE50ED004C6D8C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04F5214328AE50ED004C6D8C /* Assets.xcassets */; }; - 04F5214728AE50ED004C6D8C /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04F5214628AE50ED004C6D8C /* Preview Assets.xcassets */; }; - 04F5214B28AE6843004C6D8C /* gars_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04281FED2899BD7F00026382 /* gars_ios.framework */; }; - 3C4D02AC93B567611301AF4B /* Pods_gars_ios_app.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57AFABEFB265F4FCD511D677 /* Pods_gars_ios_app.framework */; }; - 3E31C5C3A1BED7E561A734E9 /* Pods_gars_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 119573E9C3501EC325BEC3E4 /* Pods_gars_ios.framework */; }; - C711E585DD24F5A13CA3528A /* Pods_gars_ios_gars_iosTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68849929730CAFC68EFDCDAE /* Pods_gars_ios_gars_iosTests.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 04281FF72899BD7F00026382 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 04281FE42899BD7F00026382 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 04281FEC2899BD7F00026382; - remoteInfo = "gars-ios"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 04281FED2899BD7F00026382 /* gars_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = gars_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 04281FF02899BD7F00026382 /* gars_ios.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = gars_ios.h; sourceTree = ""; }; - 04281FF52899BD7F00026382 /* gars-iosTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "gars-iosTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0428203328A28C4800026382 /* GARSConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSConstants.swift; sourceTree = ""; }; - 0428203628A298A600026382 /* GARSLine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSLine.swift; sourceTree = ""; }; - 04F520EB28A2BFD3004C6D8C /* GridType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridType.swift; sourceTree = ""; }; - 04F520EE28A2F015004C6D8C /* GARSProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSProperties.swift; sourceTree = ""; }; - 04F520F028A2F4FA004C6D8C /* gars.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = gars.plist; sourceTree = ""; }; - 04F520F228A2FDC0004C6D8C /* BandNumberRange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BandNumberRange.swift; sourceTree = ""; }; - 04F520F428A3C48E004C6D8C /* GARSUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSUtils.swift; sourceTree = ""; }; - 04F520F628A3CB72004C6D8C /* BandLettersRange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BandLettersRange.swift; sourceTree = ""; }; - 04F520F828A3EE12004C6D8C /* GridRange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridRange.swift; sourceTree = ""; }; - 04F520FA28A42A05004C6D8C /* GARS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARS.swift; sourceTree = ""; }; - 04F520FC28A44B51004C6D8C /* ZoomGrids.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZoomGrids.swift; sourceTree = ""; }; - 04F520FE28A44D33004C6D8C /* GridLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridLabel.swift; sourceTree = ""; }; - 04F5210028A44E5A004C6D8C /* GARSLabeler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSLabeler.swift; sourceTree = ""; }; - 04F5210228A44EAB004C6D8C /* GridLabeler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridLabeler.swift; sourceTree = ""; }; - 04F5210428A44F27004C6D8C /* Grids.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Grids.swift; sourceTree = ""; }; - 04F5210628A44F61004C6D8C /* Grid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Grid.swift; sourceTree = ""; }; - 04F5210A28A53150004C6D8C /* GARSTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSTestCase.swift; sourceTree = ""; }; - 04F5210C28A566B6004C6D8C /* GARSUtilsTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = GARSUtilsTestCase.swift; path = "gars-iosTests/GARSUtilsTestCase.swift"; sourceTree = SOURCE_ROOT; }; - 04F5210E28A570DB004C6D8C /* ReadmeTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ReadmeTestCase.swift; path = "gars-iosTests/ReadmeTestCase.swift"; sourceTree = SOURCE_ROOT; }; - 04F5211228AAD9EB004C6D8C /* GARSTileOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GARSTileOverlay.swift; sourceTree = ""; }; - 04F5213D28AE50EB004C6D8C /* GARS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GARS.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 04F5213F28AE50EB004C6D8C /* appApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = appApp.swift; sourceTree = ""; }; - 04F5214128AE50EB004C6D8C /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - 04F5214328AE50ED004C6D8C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 04F5214628AE50ED004C6D8C /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 119573E9C3501EC325BEC3E4 /* Pods_gars_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_gars_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3295100FC695C71079321C28 /* Pods-gars-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-ios.release.xcconfig"; path = "Target Support Files/Pods-gars-ios/Pods-gars-ios.release.xcconfig"; sourceTree = ""; }; - 43F6D866DB2D2299E81BE1D4 /* Pods-gars-ios-gars-iosTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-ios-gars-iosTests.debug.xcconfig"; path = "Target Support Files/Pods-gars-ios-gars-iosTests/Pods-gars-ios-gars-iosTests.debug.xcconfig"; sourceTree = ""; }; - 449E8DB981E6CC3061EE3115 /* Pods-gars-iosTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-iosTests.release.xcconfig"; path = "Target Support Files/Pods-gars-iosTests/Pods-gars-iosTests.release.xcconfig"; sourceTree = ""; }; - 4E9E5249E3C73D594F06BCAF /* Pods-gars-ios-gars-iosTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-ios-gars-iosTests.release.xcconfig"; path = "Target Support Files/Pods-gars-ios-gars-iosTests/Pods-gars-ios-gars-iosTests.release.xcconfig"; sourceTree = ""; }; - 57AFABEFB265F4FCD511D677 /* Pods_gars_ios_app.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_gars_ios_app.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D58E6BA97BDC5648771260C /* Pods-gars-ios-app.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-ios-app.release.xcconfig"; path = "Target Support Files/Pods-gars-ios-app/Pods-gars-ios-app.release.xcconfig"; sourceTree = ""; }; - 68849929730CAFC68EFDCDAE /* Pods_gars_ios_gars_iosTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_gars_ios_gars_iosTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6DA3F5E5DB70A8B01B8E6657 /* Pods-gars-ios-app.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-ios-app.debug.xcconfig"; path = "Target Support Files/Pods-gars-ios-app/Pods-gars-ios-app.debug.xcconfig"; sourceTree = ""; }; - 92880B6C95E606EF80A8E4FC /* Pods-gars-iosTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-iosTests.debug.xcconfig"; path = "Target Support Files/Pods-gars-iosTests/Pods-gars-iosTests.debug.xcconfig"; sourceTree = ""; }; - E851D60405F0F6192D5968E0 /* Pods-gars-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-gars-ios.debug.xcconfig"; path = "Target Support Files/Pods-gars-ios/Pods-gars-ios.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 04281FEA2899BD7F00026382 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3E31C5C3A1BED7E561A734E9 /* Pods_gars_ios.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 04281FF22899BD7F00026382 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 04281FF62899BD7F00026382 /* gars_ios.framework in Frameworks */, - C711E585DD24F5A13CA3528A /* Pods_gars_ios_gars_iosTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 04F5213A28AE50EB004C6D8C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 04F5214B28AE6843004C6D8C /* gars_ios.framework in Frameworks */, - 3C4D02AC93B567611301AF4B /* Pods_gars_ios_app.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 04281FE32899BD7F00026382 = { - isa = PBXGroup; - children = ( - 04281FEF2899BD7F00026382 /* gars-ios */, - 04281FF92899BD7F00026382 /* gars-iosTests */, - 04F5213E28AE50EB004C6D8C /* app */, - 04281FEE2899BD7F00026382 /* Products */, - 893E1AC857AF11139CB60595 /* Pods */, - 6F74DC420EB3232760614D11 /* Frameworks */, - ); - sourceTree = ""; - }; - 04281FEE2899BD7F00026382 /* Products */ = { - isa = PBXGroup; - children = ( - 04281FED2899BD7F00026382 /* gars_ios.framework */, - 04281FF52899BD7F00026382 /* gars-iosTests.xctest */, - 04F5213D28AE50EB004C6D8C /* GARS.app */, - ); - name = Products; - sourceTree = ""; - }; - 04281FEF2899BD7F00026382 /* gars-ios */ = { - isa = PBXGroup; - children = ( - 04281FF02899BD7F00026382 /* gars_ios.h */, - 04F520FA28A42A05004C6D8C /* GARS.swift */, - 0428203328A28C4800026382 /* GARSConstants.swift */, - 04F520F428A3C48E004C6D8C /* GARSUtils.swift */, - 0428203528A2988F00026382 /* features */, - 04F520EA28A2BFB4004C6D8C /* grid */, - 04F520ED28A2EFC3004C6D8C /* property */, - 04F5211128AAD9C4004C6D8C /* tile */, - 04F520F028A2F4FA004C6D8C /* gars.plist */, - ); - path = "gars-ios"; - sourceTree = ""; - }; - 04281FF92899BD7F00026382 /* gars-iosTests */ = { - isa = PBXGroup; - children = ( - 04F5210A28A53150004C6D8C /* GARSTestCase.swift */, - 04F5210C28A566B6004C6D8C /* GARSUtilsTestCase.swift */, - 04F5210E28A570DB004C6D8C /* ReadmeTestCase.swift */, - ); - path = "gars-iosTests"; - sourceTree = ""; - }; - 0428203528A2988F00026382 /* features */ = { - isa = PBXGroup; - children = ( - 0428203628A298A600026382 /* GARSLine.swift */, - ); - path = features; - sourceTree = ""; - }; - 04F520EA28A2BFB4004C6D8C /* grid */ = { - isa = PBXGroup; - children = ( - 04F520F628A3CB72004C6D8C /* BandLettersRange.swift */, - 04F520F228A2FDC0004C6D8C /* BandNumberRange.swift */, - 04F5210028A44E5A004C6D8C /* GARSLabeler.swift */, - 04F5210628A44F61004C6D8C /* Grid.swift */, - 04F520FE28A44D33004C6D8C /* GridLabel.swift */, - 04F5210228A44EAB004C6D8C /* GridLabeler.swift */, - 04F520F828A3EE12004C6D8C /* GridRange.swift */, - 04F5210428A44F27004C6D8C /* Grids.swift */, - 04F520EB28A2BFD3004C6D8C /* GridType.swift */, - 04F520FC28A44B51004C6D8C /* ZoomGrids.swift */, - ); - path = grid; - sourceTree = ""; - }; - 04F520ED28A2EFC3004C6D8C /* property */ = { - isa = PBXGroup; - children = ( - 04F520EE28A2F015004C6D8C /* GARSProperties.swift */, - ); - path = property; - sourceTree = ""; - }; - 04F5211128AAD9C4004C6D8C /* tile */ = { - isa = PBXGroup; - children = ( - 04F5211228AAD9EB004C6D8C /* GARSTileOverlay.swift */, - ); - path = tile; - sourceTree = ""; - }; - 04F5213E28AE50EB004C6D8C /* app */ = { - isa = PBXGroup; - children = ( - 04F5213F28AE50EB004C6D8C /* appApp.swift */, - 04F5214128AE50EB004C6D8C /* ContentView.swift */, - 04F5214328AE50ED004C6D8C /* Assets.xcassets */, - 04F5214528AE50ED004C6D8C /* Preview Content */, - ); - path = app; - sourceTree = ""; - }; - 04F5214528AE50ED004C6D8C /* Preview Content */ = { - isa = PBXGroup; - children = ( - 04F5214628AE50ED004C6D8C /* Preview Assets.xcassets */, - ); - path = "Preview Content"; - sourceTree = ""; - }; - 6F74DC420EB3232760614D11 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 119573E9C3501EC325BEC3E4 /* Pods_gars_ios.framework */, - 68849929730CAFC68EFDCDAE /* Pods_gars_ios_gars_iosTests.framework */, - 57AFABEFB265F4FCD511D677 /* Pods_gars_ios_app.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 893E1AC857AF11139CB60595 /* Pods */ = { - isa = PBXGroup; - children = ( - E851D60405F0F6192D5968E0 /* Pods-gars-ios.debug.xcconfig */, - 3295100FC695C71079321C28 /* Pods-gars-ios.release.xcconfig */, - 43F6D866DB2D2299E81BE1D4 /* Pods-gars-ios-gars-iosTests.debug.xcconfig */, - 4E9E5249E3C73D594F06BCAF /* Pods-gars-ios-gars-iosTests.release.xcconfig */, - 92880B6C95E606EF80A8E4FC /* Pods-gars-iosTests.debug.xcconfig */, - 449E8DB981E6CC3061EE3115 /* Pods-gars-iosTests.release.xcconfig */, - 6DA3F5E5DB70A8B01B8E6657 /* Pods-gars-ios-app.debug.xcconfig */, - 5D58E6BA97BDC5648771260C /* Pods-gars-ios-app.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 04281FE82899BD7F00026382 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 04281FFC2899BD7F00026382 /* gars_ios.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 04281FEC2899BD7F00026382 /* gars-ios */ = { - isa = PBXNativeTarget; - buildConfigurationList = 04281FFF2899BD7F00026382 /* Build configuration list for PBXNativeTarget "gars-ios" */; - buildPhases = ( - B993E02F2C99A4D637D2A1D2 /* [CP] Check Pods Manifest.lock */, - 04281FE82899BD7F00026382 /* Headers */, - 04281FE92899BD7F00026382 /* Sources */, - 04281FEA2899BD7F00026382 /* Frameworks */, - 04281FEB2899BD7F00026382 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "gars-ios"; - productName = "gars-ios"; - productReference = 04281FED2899BD7F00026382 /* gars_ios.framework */; - productType = "com.apple.product-type.framework"; - }; - 04281FF42899BD7F00026382 /* gars-iosTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 042820022899BD7F00026382 /* Build configuration list for PBXNativeTarget "gars-iosTests" */; - buildPhases = ( - 321F54B66A477D58A760C00E /* [CP] Check Pods Manifest.lock */, - 04281FF12899BD7F00026382 /* Sources */, - 04281FF22899BD7F00026382 /* Frameworks */, - 04281FF32899BD7F00026382 /* Resources */, - BCAE3C0A4C5A4D2D98CF5CD1 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 04281FF82899BD7F00026382 /* PBXTargetDependency */, - ); - name = "gars-iosTests"; - productName = "gars-iosTests"; - productReference = 04281FF52899BD7F00026382 /* gars-iosTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 04F5213C28AE50EB004C6D8C /* app */ = { - isa = PBXNativeTarget; - buildConfigurationList = 04F5214A28AE50ED004C6D8C /* Build configuration list for PBXNativeTarget "app" */; - buildPhases = ( - CACD82A92A43FC4E4A8CE1FB /* [CP] Check Pods Manifest.lock */, - 04F5213928AE50EB004C6D8C /* Sources */, - 04F5213A28AE50EB004C6D8C /* Frameworks */, - 04F5213B28AE50EB004C6D8C /* Resources */, - C2009388D6184989A1FB0D2F /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = app; - productName = app; - productReference = 04F5213D28AE50EB004C6D8C /* GARS.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 04281FE42899BD7F00026382 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1340; - LastUpgradeCheck = 1340; - TargetAttributes = { - 04281FEC2899BD7F00026382 = { - CreatedOnToolsVersion = 13.4.1; - LastSwiftMigration = 1340; - }; - 04281FF42899BD7F00026382 = { - CreatedOnToolsVersion = 13.4.1; - LastSwiftMigration = 1340; - }; - 04F5213C28AE50EB004C6D8C = { - CreatedOnToolsVersion = 13.4.1; - }; - }; - }; - buildConfigurationList = 04281FE72899BD7F00026382 /* Build configuration list for PBXProject "gars-ios" */; - compatibilityVersion = "Xcode 13.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 04281FE32899BD7F00026382; - productRefGroup = 04281FEE2899BD7F00026382 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 04281FEC2899BD7F00026382 /* gars-ios */, - 04281FF42899BD7F00026382 /* gars-iosTests */, - 04F5213C28AE50EB004C6D8C /* app */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 04281FEB2899BD7F00026382 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 04F520F128A2F4FA004C6D8C /* gars.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 04281FF32899BD7F00026382 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 04F5213B28AE50EB004C6D8C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 04F5214728AE50ED004C6D8C /* Preview Assets.xcassets in Resources */, - 04F5214428AE50ED004C6D8C /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 321F54B66A477D58A760C00E /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-gars-ios-gars-iosTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - B993E02F2C99A4D637D2A1D2 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-gars-ios-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - BCAE3C0A4C5A4D2D98CF5CD1 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-gars-ios-gars-iosTests/Pods-gars-ios-gars-iosTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-gars-ios-gars-iosTests/Pods-gars-ios-gars-iosTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-gars-ios-gars-iosTests/Pods-gars-ios-gars-iosTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - C2009388D6184989A1FB0D2F /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-gars-ios-app/Pods-gars-ios-app-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-gars-ios-app/Pods-gars-ios-app-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-gars-ios-app/Pods-gars-ios-app-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - CACD82A92A43FC4E4A8CE1FB /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-gars-ios-app-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 04281FE92899BD7F00026382 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 04F520FD28A44B51004C6D8C /* ZoomGrids.swift in Sources */, - 04F520EC28A2BFD3004C6D8C /* GridType.swift in Sources */, - 04F520EF28A2F015004C6D8C /* GARSProperties.swift in Sources */, - 04F5210328A44EAB004C6D8C /* GridLabeler.swift in Sources */, - 04F520F528A3C48E004C6D8C /* GARSUtils.swift in Sources */, - 0428203428A28C4800026382 /* GARSConstants.swift in Sources */, - 04F520FB28A42A05004C6D8C /* GARS.swift in Sources */, - 04F520FF28A44D33004C6D8C /* GridLabel.swift in Sources */, - 04F5210728A44F61004C6D8C /* Grid.swift in Sources */, - 04F520F328A2FDC0004C6D8C /* BandNumberRange.swift in Sources */, - 04F5210128A44E5A004C6D8C /* GARSLabeler.swift in Sources */, - 04F520F928A3EE12004C6D8C /* GridRange.swift in Sources */, - 04F520F728A3CB72004C6D8C /* BandLettersRange.swift in Sources */, - 04F5211328AAD9EB004C6D8C /* GARSTileOverlay.swift in Sources */, - 0428203728A298A600026382 /* GARSLine.swift in Sources */, - 04F5210528A44F27004C6D8C /* Grids.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 04281FF12899BD7F00026382 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 04F5210F28A570DB004C6D8C /* ReadmeTestCase.swift in Sources */, - 04F5210D28A566B6004C6D8C /* GARSUtilsTestCase.swift in Sources */, - 04F5210B28A53150004C6D8C /* GARSTestCase.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 04F5213928AE50EB004C6D8C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 04F5214228AE50EB004C6D8C /* ContentView.swift in Sources */, - 04F5214028AE50EB004C6D8C /* appApp.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 04281FF82899BD7F00026382 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 04281FEC2899BD7F00026382 /* gars-ios */; - targetProxy = 04281FF72899BD7F00026382 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 04281FFD2899BD7F00026382 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 04281FFE2899BD7F00026382 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 042820002899BD7F00026382 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E851D60405F0F6192D5968E0 /* Pods-gars-ios.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = mil.nga.gars; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 042820012899BD7F00026382 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3295100FC695C71079321C28 /* Pods-gars-ios.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = mil.nga.gars; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 042820032899BD7F00026382 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 43F6D866DB2D2299E81BE1D4 /* Pods-gars-ios-gars-iosTests.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "mil.nga.gars-iosTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 042820042899BD7F00026382 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4E9E5249E3C73D594F06BCAF /* Pods-gars-ios-gars-iosTests.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "mil.nga.gars-iosTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 04F5214828AE50ED004C6D8C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6DA3F5E5DB70A8B01B8E6657 /* Pods-gars-ios-app.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"app/Preview Content\""; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 15.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = mil.nga.app; - PRODUCT_NAME = GARS; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 04F5214928AE50ED004C6D8C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5D58E6BA97BDC5648771260C /* Pods-gars-ios-app.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"app/Preview Content\""; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - IPHONEOS_DEPLOYMENT_TARGET = 15.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = mil.nga.app; - PRODUCT_NAME = GARS; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 04281FE72899BD7F00026382 /* Build configuration list for PBXProject "gars-ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 04281FFD2899BD7F00026382 /* Debug */, - 04281FFE2899BD7F00026382 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 04281FFF2899BD7F00026382 /* Build configuration list for PBXNativeTarget "gars-ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 042820002899BD7F00026382 /* Debug */, - 042820012899BD7F00026382 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 042820022899BD7F00026382 /* Build configuration list for PBXNativeTarget "gars-iosTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 042820032899BD7F00026382 /* Debug */, - 042820042899BD7F00026382 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 04F5214A28AE50ED004C6D8C /* Build configuration list for PBXNativeTarget "app" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 04F5214828AE50ED004C6D8C /* Debug */, - 04F5214928AE50ED004C6D8C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 04281FE42899BD7F00026382 /* Project object */; -} diff --git a/gars-ios.xcodeproj/xcshareddata/xcschemes/gars-ios.xcscheme b/gars-ios.xcodeproj/xcshareddata/xcschemes/gars-ios.xcscheme deleted file mode 100644 index efb2250..0000000 --- a/gars-ios.xcodeproj/xcshareddata/xcschemes/gars-ios.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gars-ios/GARS.swift b/gars-ios/GARS.swift index 8e4d282..52a0e36 100644 --- a/gars-ios/GARS.swift +++ b/gars-ios/GARS.swift @@ -6,8 +6,8 @@ // import Foundation -import grid_ios -import sf_ios +import Grid +import SimpleFeatures import MapKit /** @@ -289,7 +289,7 @@ public class GARS: Hashable { * unit * @return GARS */ - public static func from(_ longitude: Double, _ latitude: Double, _ unit: grid_ios.Unit) -> GARS { + public static func from(_ longitude: Double, _ latitude: Double, _ unit: GridUnit) -> GARS { return from(GridPoint(longitude, latitude, unit)) } @@ -447,7 +447,7 @@ public class GARS: Hashable { * unit * @return GARS coordinate */ - public static func coordinate(_ longitude: Double, _ latitude: Double, _ unit: grid_ios.Unit) -> String { + public static func coordinate(_ longitude: Double, _ latitude: Double, _ unit: GridUnit) -> String { return from(longitude, latitude, unit).coordinate() } @@ -464,7 +464,7 @@ public class GARS: Hashable { * grid type precision * @return GARS coordinate */ - public static func coordinate(_ longitude: Double, _ latitude: Double, _ unit: grid_ios.Unit, _ type: GridType?) -> String { + public static func coordinate(_ longitude: Double, _ latitude: Double, _ unit: GridUnit, _ type: GridType?) -> String { return from(longitude, latitude, unit).coordinate(type) } diff --git a/gars-ios/GARSConstants.swift b/gars-ios/GARSConstants.swift index b8a80cc..c7597b7 100644 --- a/gars-ios/GARSConstants.swift +++ b/gars-ios/GARSConstants.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * Global Area Reference System Constants diff --git a/gars-ios/GARSUtils.swift b/gars-ios/GARSUtils.swift index 9bfbf55..a77be6f 100644 --- a/gars-ios/GARSUtils.swift +++ b/gars-ios/GARSUtils.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * Global Area Reference System utilities diff --git a/gars-ios/features/GARSLine.swift b/gars-ios/features/GARSLine.swift index 686ca1f..d40a406 100644 --- a/gars-ios/features/GARSLine.swift +++ b/gars-ios/features/GARSLine.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * Line between two points diff --git a/gars-ios/grid/GARSLabeler.swift b/gars-ios/grid/GARSLabeler.swift index 4ea0929..bcda337 100644 --- a/gars-ios/grid/GARSLabeler.swift +++ b/gars-ios/grid/GARSLabeler.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * GARS grid labeler diff --git a/gars-ios/grid/Grid.swift b/gars-ios/grid/Grid.swift index 4f8dc1b..3346b7b 100644 --- a/gars-ios/grid/Grid.swift +++ b/gars-ios/grid/Grid.swift @@ -6,8 +6,8 @@ // import Foundation -import grid_ios -import color_ios +import Grid +import Color /** * Grid diff --git a/gars-ios/grid/GridLabel.swift b/gars-ios/grid/GridLabel.swift index 69ba351..2dc5d49 100644 --- a/gars-ios/grid/GridLabel.swift +++ b/gars-ios/grid/GridLabel.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * GARS Grid Label diff --git a/gars-ios/grid/GridLabeler.swift b/gars-ios/grid/GridLabeler.swift index 2f6b650..93d93af 100644 --- a/gars-ios/grid/GridLabeler.swift +++ b/gars-ios/grid/GridLabeler.swift @@ -6,8 +6,8 @@ // import Foundation -import grid_ios -import color_ios +import Grid +import Color /** * Grid labeler diff --git a/gars-ios/grid/GridRange.swift b/gars-ios/grid/GridRange.swift index a03b696..1b4d9d7 100644 --- a/gars-ios/grid/GridRange.swift +++ b/gars-ios/grid/GridRange.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * Grid Range diff --git a/gars-ios/grid/Grids.swift b/gars-ios/grid/Grids.swift index a8fdce2..f6d8424 100644 --- a/gars-ios/grid/Grids.swift +++ b/gars-ios/grid/Grids.swift @@ -6,7 +6,8 @@ // import Foundation -import grid_ios +import Grid +import UIKit /** * Grids diff --git a/gars-ios/grid/ZoomGrids.swift b/gars-ios/grid/ZoomGrids.swift index 5b325e9..d9999af 100644 --- a/gars-ios/grid/ZoomGrids.swift +++ b/gars-ios/grid/ZoomGrids.swift @@ -6,7 +6,7 @@ // import Foundation -import grid_ios +import Grid /** * Zoom Level Matching Grids diff --git a/gars-ios/property/GARSProperties.swift b/gars-ios/property/GARSProperties.swift index adc4822..12c6d68 100644 --- a/gars-ios/property/GARSProperties.swift +++ b/gars-ios/property/GARSProperties.swift @@ -6,18 +6,13 @@ // import Foundation -import grid_ios +import Grid /** * GARS property loader */ public class GARSProperties: GridProperties { - /** - * Bundle Name - */ - public static let BUNDLE_NAME = "gars-ios.bundle" - /** * Properties Name */ @@ -26,7 +21,16 @@ public class GARSProperties: GridProperties { /** * Singleton instance */ - private static let _instance = GARSProperties(GARSProperties.self, BUNDLE_NAME, PROPERTIES_NAME) + private static let _instance: GARSProperties = { + guard let url = Bundle.module.url(forResource: PROPERTIES_NAME, withExtension: PropertyConstants.PROPERTY_LIST_TYPE) else { + fatalError("Unable to find required resource: \(PROPERTIES_NAME).\(PropertyConstants.PROPERTY_LIST_TYPE)") + } + + guard let data = try? Data(contentsOf: url) else { + fatalError("Unable to load required resource: \(url)") + } + return GARSProperties(data) + }() public static var instance: GARSProperties { get { diff --git a/gars-ios/tile/GARSTileOverlay.swift b/gars-ios/tile/GARSTileOverlay.swift index 444e124..1d2e57d 100644 --- a/gars-ios/tile/GARSTileOverlay.swift +++ b/gars-ios/tile/GARSTileOverlay.swift @@ -6,7 +6,7 @@ // import MapKit -import grid_ios +import Grid /** * GARS Tile Overlay diff --git a/gars-iosTests/GARSTestCase.swift b/gars-iosTests/GARSTestCase.swift index d59ceab..15ef2b3 100644 --- a/gars-iosTests/GARSTestCase.swift +++ b/gars-iosTests/GARSTestCase.swift @@ -6,9 +6,9 @@ // import XCTest -@testable import grid_ios -@testable import gars_ios -@testable import sf_ios +@testable import Grid +@testable import GARS +@testable import SimpleFeatures /** * GARS Test diff --git a/gars-iosTests/GARSUtilsTestCase.swift b/gars-iosTests/GARSUtilsTestCase.swift index b19ab53..e43ebe9 100644 --- a/gars-iosTests/GARSUtilsTestCase.swift +++ b/gars-iosTests/GARSUtilsTestCase.swift @@ -6,7 +6,7 @@ // import XCTest -@testable import gars_ios +@testable import GARS /** * GARS Utils Test diff --git a/gars-iosTests/ReadmeTestCase.swift b/gars-iosTests/ReadmeTestCase.swift index 7844a08..0789594 100644 --- a/gars-iosTests/ReadmeTestCase.swift +++ b/gars-iosTests/ReadmeTestCase.swift @@ -6,8 +6,8 @@ // import XCTest -@testable import grid_ios -@testable import gars_ios +@testable import Grid +@testable import GARS import MapKit /**