From 969f4e468c28ad9f94f38cb1a26abe0f5b9f8d50 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Mon, 26 Apr 2021 15:00:08 -0700 Subject: [PATCH 01/33] =?UTF-8?q?=F0=9F=93=A6=20Declare=20Swift=20Package?= =?UTF-8?q?=20dependencies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Brewfile | 2 - Brewfile.lock.json | 63 ------- Cartfile | 1 - Cartfile.private | 2 - Cartfile.resolved | 3 - Homebrew/mas-tap.rb | 3 - Homebrew/mas.rb | 3 - mas-cli.xcodeproj/project.pbxproj | 178 +++++++++--------- .../xcshareddata/swiftpm/Package.resolved | 45 +++++ script/bootstrap | 3 - script/bottle | 5 - script/brew_formula_update | 5 - script/brew_release_validate | 5 - script/build | 5 - script/clean | 1 - 15 files changed, 137 insertions(+), 187 deletions(-) delete mode 100644 Cartfile delete mode 100644 Cartfile.private delete mode 100644 Cartfile.resolved diff --git a/Brewfile b/Brewfile index 61f7eebc2..0afd05fc2 100644 --- a/Brewfile +++ b/Brewfile @@ -1,5 +1,3 @@ -brew "carthage" -brew "make" brew "shfmt" brew "swift-format" brew "swiftformat" diff --git a/Brewfile.lock.json b/Brewfile.lock.json index 796e61a09..8d0927dc3 100644 --- a/Brewfile.lock.json +++ b/Brewfile.lock.json @@ -1,69 +1,6 @@ { "entries": { "brew": { - "carthage": { - "version": "0.37.0", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/carthage/blobs/sha256:cd0c716682b5b094b82a589fb79def4eb696f70a3fd92423923a5cb86c2c79b3", - "sha256": "cd0c716682b5b094b82a589fb79def4eb696f70a3fd92423923a5cb86c2c79b3" - }, - "big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/carthage/blobs/sha256:0770b4dd885f3018031c2d27fc090a34027d5856a248f33fa2a415d58da74632", - "sha256": "0770b4dd885f3018031c2d27fc090a34027d5856a248f33fa2a415d58da74632" - }, - "catalina": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/carthage/blobs/sha256:8a07c198835cb179d4054313b199ce126e64bb9414eaaa91f55162a4aed63134", - "sha256": "8a07c198835cb179d4054313b199ce126e64bb9414eaaa91f55162a4aed63134" - }, - "mojave": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/carthage/blobs/sha256:7fb777ac169aa4cb05683f0f8bfb5b56dbb0b0e8b673df995ef2fb2bbe0d90d2", - "sha256": "7fb777ac169aa4cb05683f0f8bfb5b56dbb0b0e8b673df995ef2fb2bbe0d90d2" - } - } - } - }, - "make": { - "version": "4.3", - "bottle": { - "rebuild": 1, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_big_sur": { - "cellar": "/opt/homebrew/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/make/blobs/sha256:eab3fbc3688aecec0fe90b8d0fe3cb7beb84ed773ba0411fc2f855c66deaf882", - "sha256": "eab3fbc3688aecec0fe90b8d0fe3cb7beb84ed773ba0411fc2f855c66deaf882" - }, - "big_sur": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/make/blobs/sha256:2019ba646e4471d42e09c28a0992c59dd82e292bf8275b0b3bfcce3220ef9c1b", - "sha256": "2019ba646e4471d42e09c28a0992c59dd82e292bf8275b0b3bfcce3220ef9c1b" - }, - "catalina": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/make/blobs/sha256:39fc5ebff5ff708c2e3eea597b9f2eb79b910a122d30c3ac9bb93ebe313f030c", - "sha256": "39fc5ebff5ff708c2e3eea597b9f2eb79b910a122d30c3ac9bb93ebe313f030c" - }, - "mojave": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/make/blobs/sha256:0c0a08eef68bcd78b0345f5f57a6efffcc7be877bcb3b803f39ac8916b882477", - "sha256": "0c0a08eef68bcd78b0345f5f57a6efffcc7be877bcb3b803f39ac8916b882477" - }, - "high_sierra": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/make/blobs/sha256:429177235322c3209e1657bea36364cd84222075b636939f6ed93a1cd04aeb21", - "sha256": "429177235322c3209e1657bea36364cd84222075b636939f6ed93a1cd04aeb21" - } - } - } - }, "shfmt": { "version": "3.2.4", "bottle": { diff --git a/Cartfile b/Cartfile deleted file mode 100644 index 2e93317c2..000000000 --- a/Cartfile +++ /dev/null @@ -1 +0,0 @@ -github "Carthage/Commandant" diff --git a/Cartfile.private b/Cartfile.private deleted file mode 100644 index e95f845e7..000000000 --- a/Cartfile.private +++ /dev/null @@ -1,2 +0,0 @@ -github "Quick/Quick" -github "Quick/Nimble" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved deleted file mode 100644 index c2e80d1ed..000000000 --- a/Cartfile.resolved +++ /dev/null @@ -1,3 +0,0 @@ -github "Carthage/Commandant" "0.18.0" -github "Quick/Nimble" "v9.0.1" -github "Quick/Quick" "v3.1.2" diff --git a/Homebrew/mas-tap.rb b/Homebrew/mas-tap.rb index 68bd669c4..29eace251 100644 --- a/Homebrew/mas-tap.rb +++ b/Homebrew/mas-tap.rb @@ -18,7 +18,6 @@ class Mas < Formula sha256 cellar: :any, el_capitan: "d54d864976f78665d5175fd9e69ab81b3911fa28fd6ae627b61a18d55d68191a" end - depends_on "carthage" => :build depends_on :macos if Hardware::CPU.arm? depends_on xcode: ["12.2", :build] @@ -37,8 +36,6 @@ def install EOS ENV["XCODE_XCCONFIG_FILE"] = xcconfig - # Only build necessary dependencies - system "carthage", "bootstrap", "--platform", "macOS", "Commandant" system "script/install", prefix bash_completion.install "contrib/completion/mas-completion.bash" => "mas" diff --git a/Homebrew/mas.rb b/Homebrew/mas.rb index 232ad873b..3fd47cae3 100644 --- a/Homebrew/mas.rb +++ b/Homebrew/mas.rb @@ -13,7 +13,6 @@ class Mas < Formula sha256 cellar: :any, catalina: "2e7ffedf674543f98c2b95868b6a23db208cb2e6a3ec1ddbb3553ddab0cf9a68" end - depends_on "carthage" => :build depends_on :macos if Hardware::CPU.arm? depends_on xcode: ["12.2", :build] @@ -32,8 +31,6 @@ def install EOS ENV["XCODE_XCCONFIG_FILE"] = xcconfig - # Only build necessary dependencies - system "carthage", "bootstrap", "--platform", "macOS", "Commandant" system "script/install", prefix bash_completion.install "contrib/completion/mas-completion.bash" => "mas" diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj index ea3e8b041..30a3380c0 100644 --- a/mas-cli.xcodeproj/project.pbxproj +++ b/mas-cli.xcodeproj/project.pbxproj @@ -9,14 +9,8 @@ /* Begin PBXBuildFile section */ 60D8CF3624262F92005B4004 /* PurchaseCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D8CF3524262F92005B4004 /* PurchaseCommandSpec.swift */; }; 75FB3E761F9F7841005B6F20 /* Purchase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FB3E751F9F7841005B6F20 /* Purchase.swift */; }; - B537017421A0F85B00538F78 /* Commandant.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406B213F4DDD0044E445 /* Commandant.framework */; }; - B537017621A0F94200538F78 /* Commandant.framework in Copy Carthage Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406B213F4DDD0044E445 /* Commandant.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B5552928219A1BB900ACB4CA /* CommerceKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F83213A62173EF75008BA8A0 /* CommerceKit.framework */; }; B5552929219A1BC700ACB4CA /* StoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F83213A52173EF75008BA8A0 /* StoreFoundation.framework */; }; - B555292E219A218E00ACB4CA /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406A213F4DDD0044E445 /* Quick.framework */; }; - B555292F219A219100ACB4CA /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406C213F4DDD0044E445 /* Nimble.framework */; }; - B5552936219A23FF00ACB4CA /* Nimble.framework in Copy Carthage Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406C213F4DDD0044E445 /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - B5552937219A23FF00ACB4CA /* Quick.framework in Copy Carthage Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406A213F4DDD0044E445 /* Quick.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B55B3D9221ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55B3D9121ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift */; }; B576FDF321E03B780016B39D /* MasStoreSearchSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDF221E03B780016B39D /* MasStoreSearchSpec.swift */; }; B576FDF521E1078F0016B39D /* MASErrorTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDF421E1078F0016B39D /* MASErrorTestCase.swift */; }; @@ -28,6 +22,7 @@ B576FE0021E113610016B39D /* NetworkSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDFF21E113610016B39D /* NetworkSession.swift */; }; B576FE0221E1139E0016B39D /* URLSession+NetworkSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */; }; B576FE0421E113E90016B39D /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0321E113E90016B39D /* NetworkManager.swift */; }; + B576FE0821E114A80016B39D /* NetworkResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0721E114A80016B39D /* NetworkResult.swift */; }; B576FE0C21E116590016B39D /* NetworkManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0B21E116590016B39D /* NetworkManagerTests.swift */; }; B576FE0E21E1D6310016B39D /* String+PercentEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */; }; B576FE1221E1D82D0016B39D /* NetworkSessionMockFromFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */; }; @@ -35,6 +30,7 @@ B576FE1621E1D8CB0016B39D /* String+FileExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */; }; B576FE1B21E28E8A0016B39D /* NetworkSessionMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */; }; B576FE1D21E28EF70016B39D /* URLSessionDataTaskMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */; }; + B576FE2821E423E60016B39D /* Dictionary+StringOrEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2721E423E60016B39D /* Dictionary+StringOrEmpty.swift */; }; B576FE2A21E4240B0016B39D /* AppInfoFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */; }; B576FE2C21E42A230016B39D /* OutputListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2B21E42A230016B39D /* OutputListener.swift */; }; B576FE2E21E5A8010016B39D /* Strongify.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2D21E5A8010016B39D /* Strongify.swift */; }; @@ -75,7 +71,10 @@ B5DBF81321DEEC7C00F3B151 /* OpenCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81221DEEC7C00F3B151 /* OpenCommandSpec.swift */; }; B5DBF81521E02BA900F3B151 /* StoreSearchMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81421E02BA900F3B151 /* StoreSearchMock.swift */; }; B5DBF81721E02E3400F3B151 /* OpenSystemCommandMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81621E02E3400F3B151 /* OpenSystemCommandMock.swift */; }; - C56C4FF5262A50F5004F37EB /* Version in Frameworks */ = {isa = PBXBuildFile; productRef = C56C4FF4262A50F5004F37EB /* Version */; }; + C56F16D226376B3800EAC548 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16D126376B3800EAC548 /* Nimble */; }; + C56F16DA26376C4B00EAC548 /* Quick in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16D926376C4B00EAC548 /* Quick */; }; + C56F16E92637C2B300EAC548 /* Version in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16E82637C2B300EAC548 /* Version */; }; + C56F16EC2637C2C600EAC548 /* Commandant in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16EB2637C2C600EAC548 /* Commandant */; }; ED031A7C1B5127C00097692E /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED031A7B1B5127C00097692E /* main.swift */; }; F80B27B62611116A00A285C9 /* AppListFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80B27B52611116A00A285C9 /* AppListFormatterSpec.swift */; }; F80B27BA2611118E00A285C9 /* AppListFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80B27B92611118E00A285C9 /* AppListFormatter.swift */; }; @@ -85,24 +84,26 @@ F832138C2173D3E1008BA8A0 /* CKPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */; }; F832138D2173D3E1008BA8A0 /* CKServiceInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */; }; F832138E2173D3E1008BA8A0 /* CKSoftwareMap.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */; }; + F832138F2173D3E1008BA8A0 /* CKUpdateController.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A020F2EC4500F56FDC /* CKUpdateController.h */; }; + F83213902173D3E1008BA8A0 /* ISStoreURLOperationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A120F2EC4500F56FDC /* ISStoreURLOperationDelegate.h */; }; F83213912173D3E1008BA8A0 /* CKDownloadDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B620F2F87300F56FDC /* CKDownloadDirectory.h */; }; F83213922173D5AB008BA8A0 /* CKSoftwareProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */; }; F83213932173D5AB008BA8A0 /* CKUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A420F2EC4500F56FDC /* CKUpdate.h */; }; F83213942173D5AB008BA8A0 /* ISAccountService.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A520F2EC4500F56FDC /* ISAccountService.h */; }; F83213952173D5AB008BA8A0 /* ISAuthenticationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */; }; + F83213962173D5AB008BA8A0 /* ISOperationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A720F2EC4500F56FDC /* ISOperationDelegate.h */; }; F83213972173D5AB008BA8A0 /* ISServiceProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */; }; F83213982173D5AB008BA8A0 /* ISServiceRemoteObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */; }; F83213992173D5AB008BA8A0 /* ISStoreAccount.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */; }; F832139A2173D5AB008BA8A0 /* ISStoreClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */; }; + F832139B2173D5AB008BA8A0 /* ISURLOperationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AC20F2EC4500F56FDC /* ISURLOperationDelegate.h */; }; F832139C2173D5B2008BA8A0 /* SSDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AD20F2EC4500F56FDC /* SSDownload.h */; }; F832139D2173D5B2008BA8A0 /* SSDownloadMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */; }; F832139E2173D5B2008BA8A0 /* SSDownloadPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */; }; F832139F2173D5B2008BA8A0 /* SSDownloadStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B020F2EC4500F56FDC /* SSDownloadStatus.h */; }; F83213A02173D5B2008BA8A0 /* SSPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B120F2EC4500F56FDC /* SSPurchase.h */; }; F83213A12173D5B2008BA8A0 /* SSPurchaseResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B220F2EC4500F56FDC /* SSPurchaseResponse.h */; }; - F83213A22173DC13008BA8A0 /* Commandant.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406B213F4DDD0044E445 /* Commandant.framework */; }; F83213A82173F5A7008BA8A0 /* MasKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8FB715220F2B41400F56FDC /* MasKit.framework */; }; - F83213A92173F5D0008BA8A0 /* Commandant.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 90CB406B213F4DDD0044E445 /* Commandant.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; F85DA8AE240C313900FE5650 /* MasAppLibrarySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DA8AD240C313900FE5650 /* MasAppLibrarySpec.swift */; }; F85DA8B0240C32FA00FE5650 /* SoftwareMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DA8AF240C32FA00FE5650 /* SoftwareMap.swift */; }; F85DA8B2240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DA8B1240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift */; }; @@ -160,19 +161,6 @@ name = "Copy Debugging Symbols"; runOnlyForDeploymentPostprocessing = 0; }; - B5552935219A23EE00ACB4CA /* Copy Carthage Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - B537017621A0F94200538F78 /* Commandant.framework in Copy Carthage Frameworks */, - B5552936219A23FF00ACB4CA /* Nimble.framework in Copy Carthage Frameworks */, - B5552937219A23FF00ACB4CA /* Quick.framework in Copy Carthage Frameworks */, - ); - name = "Copy Carthage Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; ED031A761B5127C00097692E /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -182,17 +170,6 @@ ); runOnlyForDeploymentPostprocessing = 1; }; - F83213A72173F58B008BA8A0 /* Copy Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - F83213A92173F5D0008BA8A0 /* Commandant.framework in Copy Frameworks */, - ); - name = "Copy Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -201,9 +178,6 @@ 75FB3E751F9F7841005B6F20 /* Purchase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Purchase.swift; sourceTree = ""; }; 8078FAA71EC4F2FB004B5B3F /* Lucky.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lucky.swift; sourceTree = ""; }; 900A1E801DBAC8CB0069B1A8 /* Info.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Info.swift; sourceTree = ""; }; - 90CB406A213F4DDD0044E445 /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Quick.framework; sourceTree = ""; }; - 90CB406B213F4DDD0044E445 /* Commandant.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Commandant.framework; sourceTree = ""; }; - 90CB406C213F4DDD0044E445 /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Nimble.framework; sourceTree = ""; }; B55B3D9121ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultFormatterSpec.swift; sourceTree = ""; }; B576FDF221E03B780016B39D /* MasStoreSearchSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MasStoreSearchSpec.swift; sourceTree = ""; }; B576FDF421E1078F0016B39D /* MASErrorTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MASErrorTestCase.swift; sourceTree = ""; }; @@ -214,6 +188,7 @@ B576FDFF21E113610016B39D /* NetworkSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkSession.swift; sourceTree = ""; }; B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+NetworkSession.swift"; sourceTree = ""; }; B576FE0321E113E90016B39D /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = ""; }; + B576FE0721E114A80016B39D /* NetworkResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResult.swift; sourceTree = ""; }; B576FE0B21E116590016B39D /* NetworkManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManagerTests.swift; sourceTree = ""; }; B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+PercentEncoding.swift"; sourceTree = ""; }; B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkSessionMockFromFile.swift; sourceTree = ""; }; @@ -221,6 +196,7 @@ B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+FileExtension.swift"; sourceTree = ""; }; B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkSessionMock.swift; sourceTree = ""; }; B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLSessionDataTaskMock.swift; sourceTree = ""; }; + B576FE2721E423E60016B39D /* Dictionary+StringOrEmpty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+StringOrEmpty.swift"; sourceTree = ""; }; B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppInfoFormatter.swift; sourceTree = ""; }; B576FE2B21E42A230016B39D /* OutputListener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OutputListener.swift; sourceTree = ""; }; B576FE2D21E5A8010016B39D /* Strongify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Strongify.swift; sourceTree = ""; }; @@ -283,6 +259,7 @@ F80B27B52611116A00A285C9 /* AppListFormatterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppListFormatterSpec.swift; sourceTree = ""; }; F80B27B92611118E00A285C9 /* AppListFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppListFormatter.swift; sourceTree = ""; }; F8242D8020746A510026DF35 /* StoreAccount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAccount.swift; sourceTree = ""; }; + F83213A42173EF75008BA8A0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; F83213A52173EF75008BA8A0 /* StoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreFoundation.framework; path = /System/Library/PrivateFrameworks/StoreFoundation.framework; sourceTree = ""; }; F83213A62173EF75008BA8A0 /* CommerceKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CommerceKit.framework; path = /System/Library/PrivateFrameworks/CommerceKit.framework; sourceTree = ""; }; F85DA8AD240C313900FE5650 /* MasAppLibrarySpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasAppLibrarySpec.swift; sourceTree = ""; }; @@ -301,14 +278,18 @@ F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKPurchaseController.h; sourceTree = ""; }; F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKServiceInterface.h; sourceTree = ""; }; F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKSoftwareMap.h; sourceTree = ""; }; + F8FB71A020F2EC4500F56FDC /* CKUpdateController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKUpdateController.h; sourceTree = ""; }; + F8FB71A120F2EC4500F56FDC /* ISStoreURLOperationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreURLOperationDelegate.h; sourceTree = ""; }; F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKSoftwareProduct.h; sourceTree = ""; }; F8FB71A420F2EC4500F56FDC /* CKUpdate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKUpdate.h; sourceTree = ""; }; F8FB71A520F2EC4500F56FDC /* ISAccountService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISAccountService.h; sourceTree = ""; }; F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISAuthenticationContext.h; sourceTree = ""; }; + F8FB71A720F2EC4500F56FDC /* ISOperationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISOperationDelegate.h; sourceTree = ""; }; F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISServiceProxy.h; sourceTree = ""; }; F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISServiceRemoteObject.h; sourceTree = ""; }; F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreAccount.h; sourceTree = ""; }; F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreClient.h; sourceTree = ""; }; + F8FB71AC20F2EC4500F56FDC /* ISURLOperationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISURLOperationDelegate.h; sourceTree = ""; }; F8FB71AD20F2EC4500F56FDC /* SSDownload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownload.h; sourceTree = ""; }; F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadMetadata.h; sourceTree = ""; }; F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadPhase.h; sourceTree = ""; }; @@ -334,8 +315,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F83213A22173DC13008BA8A0 /* Commandant.framework in Frameworks */, - C56C4FF5262A50F5004F37EB /* Version in Frameworks */, + C56F16EC2637C2C600EAC548 /* Commandant in Frameworks */, + C56F16E92637C2B300EAC548 /* Version in Frameworks */, B5552928219A1BB900ACB4CA /* CommerceKit.framework in Frameworks */, B5552929219A1BC700ACB4CA /* StoreFoundation.framework in Frameworks */, ); @@ -345,27 +326,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B537017421A0F85B00538F78 /* Commandant.framework in Frameworks */, + C56F16DA26376C4B00EAC548 /* Quick in Frameworks */, + C56F16D226376B3800EAC548 /* Nimble in Frameworks */, F8FB715B20F2B41400F56FDC /* MasKit.framework in Frameworks */, - B555292F219A219100ACB4CA /* Nimble.framework in Frameworks */, - B555292E219A218E00ACB4CA /* Quick.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 90CB4068213F4DDD0044E445 /* Carthage */ = { - isa = PBXGroup; - children = ( - 90CB406B213F4DDD0044E445 /* Commandant.framework */, - 90CB406C213F4DDD0044E445 /* Nimble.framework */, - 90CB406A213F4DDD0044E445 /* Quick.framework */, - ); - name = Carthage; - path = Carthage/Build/Mac; - sourceTree = ""; - }; B55B3D9021ED9B6A0009A1A5 /* Formatters */ = { isa = PBXGroup; children = ( @@ -379,6 +348,7 @@ isa = PBXGroup; children = ( B576FE0321E113E90016B39D /* NetworkManager.swift */, + B576FE0721E114A80016B39D /* NetworkResult.swift */, B576FDFF21E113610016B39D /* NetworkSession.swift */, B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */, ); @@ -437,6 +407,7 @@ B576FE1F21E290720016B39D /* Extensions */ = { isa = PBXGroup; children = ( + B576FE2721E423E60016B39D /* Dictionary+StringOrEmpty.swift */, B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */, ); path = Extensions; @@ -556,7 +527,6 @@ ED031A6F1B5127C00097692E = { isa = PBXGroup; children = ( - 90CB4068213F4DDD0044E445 /* Carthage */, EDFC76381B642A2E00D0DBD7 /* Frameworks */, ED031A7A1B5127C00097692E /* mas */, F8FB715320F2B41400F56FDC /* MasKit */, @@ -626,6 +596,7 @@ EDFC76381B642A2E00D0DBD7 /* Frameworks */ = { isa = PBXGroup; children = ( + F83213A42173EF75008BA8A0 /* Cocoa.framework */, F83213A62173EF75008BA8A0 /* CommerceKit.framework */, F83213A52173EF75008BA8A0 /* StoreFoundation.framework */, ); @@ -689,6 +660,8 @@ F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */, F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */, F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */, + F8FB71A020F2EC4500F56FDC /* CKUpdateController.h */, + F8FB71A120F2EC4500F56FDC /* ISStoreURLOperationDelegate.h */, F8FB71B320F2EC7900F56FDC /* module.modulemap */, ); path = CommerceKit; @@ -702,10 +675,12 @@ F8FB71A520F2EC4500F56FDC /* ISAccountService.h */, F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */, B578F060224FB5BD00D2086A /* ISAuthenticationResponse.h */, + F8FB71A720F2EC4500F56FDC /* ISOperationDelegate.h */, F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */, F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */, F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */, F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */, + F8FB71AC20F2EC4500F56FDC /* ISURLOperationDelegate.h */, F8FB71B420F2EC8800F56FDC /* module.modulemap */, F8FB71AD20F2EC4500F56FDC /* SSDownload.h */, F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */, @@ -733,13 +708,17 @@ F832138E2173D3E1008BA8A0 /* CKSoftwareMap.h in Headers */, F83213922173D5AB008BA8A0 /* CKSoftwareProduct.h in Headers */, F83213932173D5AB008BA8A0 /* CKUpdate.h in Headers */, + F832138F2173D3E1008BA8A0 /* CKUpdateController.h in Headers */, F83213942173D5AB008BA8A0 /* ISAccountService.h in Headers */, F83213952173D5AB008BA8A0 /* ISAuthenticationContext.h in Headers */, B578F061224FB5BD00D2086A /* ISAuthenticationResponse.h in Headers */, + F83213962173D5AB008BA8A0 /* ISOperationDelegate.h in Headers */, F83213972173D5AB008BA8A0 /* ISServiceProxy.h in Headers */, F83213982173D5AB008BA8A0 /* ISServiceRemoteObject.h in Headers */, F83213992173D5AB008BA8A0 /* ISStoreAccount.h in Headers */, F832139A2173D5AB008BA8A0 /* ISStoreClient.h in Headers */, + F83213902173D3E1008BA8A0 /* ISStoreURLOperationDelegate.h in Headers */, + F832139B2173D5AB008BA8A0 /* ISURLOperationDelegate.h in Headers */, F8FB716220F2B41400F56FDC /* MasKit.h in Headers */, F832139C2173D5B2008BA8A0 /* SSDownload.h in Headers */, F832139D2173D5B2008BA8A0 /* SSDownloadMetadata.h in Headers */, @@ -769,6 +748,8 @@ F83213882173D2EB008BA8A0 /* PBXTargetDependency */, ); name = mas; + packageProductDependencies = ( + ); productName = "mas-cli"; productReference = ED031A781B5127C00097692E /* mas */; productType = "com.apple.product-type.tool"; @@ -781,7 +762,6 @@ F8FB714E20F2B41400F56FDC /* Sources */, B576FE3121E96E6C0016B39D /* 🚨 Lint */, F8FB714F20F2B41400F56FDC /* Frameworks */, - F83213A72173F58B008BA8A0 /* Copy Frameworks */, F8FB715020F2B41400F56FDC /* Resources */, ); buildRules = ( @@ -790,7 +770,8 @@ ); name = MasKit; packageProductDependencies = ( - C56C4FF4262A50F5004F37EB /* Version */, + C56F16E82637C2B300EAC548 /* Version */, + C56F16EB2637C2C600EAC548 /* Commandant */, ); productName = MasKit; productReference = F8FB715220F2B41400F56FDC /* MasKit.framework */; @@ -803,7 +784,6 @@ F8FB715620F2B41400F56FDC /* Sources */, F8FB715720F2B41400F56FDC /* Frameworks */, F8FB715820F2B41400F56FDC /* Resources */, - B5552935219A23EE00ACB4CA /* Copy Carthage Frameworks */, ); buildRules = ( ); @@ -811,6 +791,10 @@ F8FB715D20F2B41400F56FDC /* PBXTargetDependency */, ); name = MasKitTests; + packageProductDependencies = ( + C56F16D126376B3800EAC548 /* Nimble */, + C56F16D926376C4B00EAC548 /* Quick */, + ); productName = MasKitTests; productReference = F8FB715A20F2B41400F56FDC /* MasKitTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; @@ -853,7 +837,10 @@ ); mainGroup = ED031A6F1B5127C00097692E; packageReferences = ( - C56C4FF0262A4ED0004F37EB /* XCRemoteSwiftPackageReference "Version" */, + C56F16D026376B3800EAC548 /* XCRemoteSwiftPackageReference "Nimble" */, + C56F16D826376C4B00EAC548 /* XCRemoteSwiftPackageReference "Quick" */, + C56F16E72637C2B300EAC548 /* XCRemoteSwiftPackageReference "Version" */, + C56F16EA2637C2C600EAC548 /* XCRemoteSwiftPackageReference "Commandant" */, ); productRefGroup = ED031A791B5127C00097692E /* Products */; projectDirPath = ""; @@ -930,6 +917,7 @@ B594B12721D5825800F3AC59 /* AppLibrary.swift in Sources */, F85DA8B2240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift in Sources */, B594B12B21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift in Sources */, + B576FE2821E423E60016B39D /* Dictionary+StringOrEmpty.swift in Sources */, F8FB716A20F2B4DD00F56FDC /* Downloader.swift in Sources */, B588CE0221DC89490047D305 /* ExternalCommand.swift in Sources */, B594B14C21D8983700F3AC59 /* Home.swift in Sources */, @@ -942,6 +930,7 @@ F8FB717B20F2B4DD00F56FDC /* MASError.swift in Sources */, B594B15221D89A8B00F3AC59 /* MasStoreSearch.swift in Sources */, B576FE0421E113E90016B39D /* NetworkManager.swift in Sources */, + B576FE0821E114A80016B39D /* NetworkResult.swift in Sources */, B576FE0021E113610016B39D /* NetworkSession.swift in Sources */, B5DBF80D21DEE4E600F3B151 /* Open.swift in Sources */, B576FDF721E107AA0016B39D /* OpenSystemCommand.swift in Sources */, @@ -1160,10 +1149,6 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "mas/mas-Info.plist"; INSTALL_PATH = /bin; @@ -1189,10 +1174,6 @@ CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; DEPLOYMENT_LOCATION = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = "mas/mas-Info.plist"; INSTALL_PATH = /bin; @@ -1216,7 +1197,6 @@ F8FB716320F2B41400F56FDC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -1231,10 +1211,7 @@ DYLIB_COMPATIBILITY_VERSION = 7.0; DYLIB_CURRENT_VERSION = 7.0; DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; FRAMEWORK_VERSION = A; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MasKit/SupportingFiles/Info.plist; @@ -1255,7 +1232,6 @@ F8FB716420F2B41400F56FDC /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -1270,10 +1246,7 @@ DYLIB_COMPATIBILITY_VERSION = 7.0; DYLIB_CURRENT_VERSION = 7.0; DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; FRAMEWORK_VERSION = A; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MasKit/SupportingFiles/Info.plist; @@ -1306,10 +1279,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MasKitTests/SupportingFiles/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -1341,10 +1311,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/Mac", - ); + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MasKitTests/SupportingFiles/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -1404,7 +1371,23 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - C56C4FF0262A4ED0004F37EB /* XCRemoteSwiftPackageReference "Version" */ = { + C56F16D026376B3800EAC548 /* XCRemoteSwiftPackageReference "Nimble" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Quick/Nimble.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 9.0.1; + }; + }; + C56F16D826376C4B00EAC548 /* XCRemoteSwiftPackageReference "Quick" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Quick/Quick.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.1.2; + }; + }; + C56F16E72637C2B300EAC548 /* XCRemoteSwiftPackageReference "Version" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/mxcl/Version.git"; requirement = { @@ -1412,14 +1395,37 @@ minimumVersion = 2.0.0; }; }; + C56F16EA2637C2C600EAC548 /* XCRemoteSwiftPackageReference "Commandant" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Carthage/Commandant.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.18.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - C56C4FF4262A50F5004F37EB /* Version */ = { + C56F16D126376B3800EAC548 /* Nimble */ = { + isa = XCSwiftPackageProductDependency; + package = C56F16D026376B3800EAC548 /* XCRemoteSwiftPackageReference "Nimble" */; + productName = Nimble; + }; + C56F16D926376C4B00EAC548 /* Quick */ = { isa = XCSwiftPackageProductDependency; - package = C56C4FF0262A4ED0004F37EB /* XCRemoteSwiftPackageReference "Version" */; + package = C56F16D826376C4B00EAC548 /* XCRemoteSwiftPackageReference "Quick" */; + productName = Quick; + }; + C56F16E82637C2B300EAC548 /* Version */ = { + isa = XCSwiftPackageProductDependency; + package = C56F16E72637C2B300EAC548 /* XCRemoteSwiftPackageReference "Version" */; productName = Version; }; + C56F16EB2637C2C600EAC548 /* Commandant */ = { + isa = XCSwiftPackageProductDependency; + package = C56F16EA2637C2C600EAC548 /* XCRemoteSwiftPackageReference "Commandant" */; + productName = Commandant; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = ED031A701B5127C00097692E /* Project object */; diff --git a/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved b/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved index 5c4f7c3d6..e66dde2e5 100644 --- a/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,6 +1,51 @@ { "object": { "pins": [ + { + "package": "Commandant", + "repositoryURL": "https://github.com/Carthage/Commandant.git", + "state": { + "branch": null, + "revision": "a1671cf728db837cf5ec1980a80d276bbba748f6", + "version": "0.18.0" + } + }, + { + "package": "CwlCatchException", + "repositoryURL": "https://github.com/mattgallagher/CwlCatchException.git", + "state": { + "branch": null, + "revision": "f809deb30dc5c9d9b78c872e553261a61177721a", + "version": "2.0.0" + } + }, + { + "package": "CwlPreconditionTesting", + "repositoryURL": "https://github.com/mattgallagher/CwlPreconditionTesting.git", + "state": { + "branch": null, + "revision": "02b7a39a99c4da27abe03cab2053a9034379639f", + "version": "2.0.0" + } + }, + { + "package": "Nimble", + "repositoryURL": "https://github.com/Quick/Nimble.git", + "state": { + "branch": null, + "revision": "7a54aaf19a8ef16f67787c260fda81ead7ba4d67", + "version": "9.0.1" + } + }, + { + "package": "Quick", + "repositoryURL": "https://github.com/Quick/Quick.git", + "state": { + "branch": null, + "revision": "8cce6acd38f965f5baa3167b939f86500314022b", + "version": "3.1.2" + } + }, { "package": "Version", "repositoryURL": "https://github.com/mxcl/Version.git", diff --git a/script/bootstrap b/script/bootstrap index e14dd6227..a0e34f5be 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -17,9 +17,6 @@ main() { # Install Homebrew tools rm -f Brewfile.lock.json brew bundle install --no-upgrade --verbose - - # Download and build project dependencies - carthage bootstrap --platform macOS --cache-builds } main diff --git a/script/bottle b/script/bottle index 97e8c0be3..f68bb4bee 100755 --- a/script/bottle +++ b/script/bottle @@ -65,11 +65,6 @@ if command -v mas >/dev/null; then script/uninstall || true # ignore failure fi -# Purge the Carthage cache to avoid this error from Homebrew sandboxing: -# A shell task (/usr/bin/env git checkout --quiet --force 0.15.0 (launched in /Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant)) failed with exit code 128: -# fatal: Unable to create '/Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant/./index.lock': Operation not permitted -rm -rf ~/Library/Caches/org.carthage.CarthageKit - ################################################################################ # # Build the formula for the current macOS version and architecture. diff --git a/script/brew_formula_update b/script/brew_formula_update index 2c3d56954..dd4db2ba3 100755 --- a/script/brew_formula_update +++ b/script/brew_formula_update @@ -32,11 +32,6 @@ else REVISION=$(git rev-parse "$VERSION") fi -# Purge the Carthage cache to avoid this error from Homebrew sandboxing: -# A shell task (/usr/bin/env git checkout --quiet --force 0.15.0 (launched in /Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant)) failed with exit code 128: -# fatal: Unable to create '/Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant/./index.lock': Operation not permitted -rm -rf ~/Library/Caches/org.carthage.CarthageKit - echo "Checking to see if this update can be a simple bump." diff "Homebrew/mas.rb" "$BREW_CORE_PATH/mas.rb" diff --git a/script/brew_release_validate b/script/brew_release_validate index 108a4143f..bc4f76709 100755 --- a/script/brew_release_validate +++ b/script/brew_release_validate @@ -7,11 +7,6 @@ # https://github.com/Homebrew/homebrew-core/blob/master/CONTRIBUTING.md#to-contribute-a-fix-to-the-foo-formula # -# Purge the Carthage cache to avoid this error from Homebrew sandboxing: -# A shell task (/usr/bin/env git checkout --quiet --force 0.15.0 (launched in /Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant)) failed with exit code 128: -# fatal: Unable to create '/Users/ben/Library/Caches/org.carthage.CarthageKit/dependencies/Commandant/./index.lock': Operation not permitted -rm -rf ~/Library/Caches/org.carthage.CarthageKit - brew uninstall --force mas brew install --build-from-source mas brew test mas diff --git a/script/build b/script/build index a0b3cba41..605027ea8 100755 --- a/script/build +++ b/script/build @@ -19,11 +19,6 @@ main() { xcodebuild -version script/clean - carthage build \ - --platform macOS \ - --cache-builds \ - --configuration "$CONFIG" - archive } diff --git a/script/clean b/script/clean index 2fbaedbd2..d083f9fb8 100755 --- a/script/clean +++ b/script/clean @@ -10,7 +10,6 @@ BUILD_DIR=build INSTALL_DIR=/tmp/mas-cli.dst main() { - rm -rf Carthage/Build rm -rf ${BUILD_DIR:?} rm -rf ${INSTALL_DIR:?} } From d287c5cfd6cf65acc2a220963aceac438ff68114 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Mon, 26 Apr 2021 15:10:17 -0700 Subject: [PATCH 02/33] =?UTF-8?q?=F0=9F=9A=A7=20Move=20sources=20to=20typi?= =?UTF-8?q?cal=20SPM=20locations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppStore/CKSoftwareMap+SoftwareMap.swift | 0 .../CKSoftwareProduct+SoftwareProduct.swift | 0 .../MasKit}/AppStore/Downloader.swift | 0 .../MasKit}/AppStore/ISStoreAccount.swift | 0 .../AppStore/PurchaseDownloadObserver.swift | 0 .../MasKit}/AppStore/SSPurchase.swift | 0 .../MasKit}/AppStore/StoreAccount.swift | 0 .../MasKit}/Commands/Account.swift | 0 .../MasKit}/Commands/Home.swift | 0 .../MasKit}/Commands/Info.swift | 0 .../MasKit}/Commands/Install.swift | 0 .../MasKit}/Commands/List.swift | 0 .../MasKit}/Commands/Lucky.swift | 0 .../MasKit}/Commands/Open.swift | 0 .../MasKit}/Commands/Outdated.swift | 0 .../MasKit}/Commands/Purchase.swift | 0 .../MasKit}/Commands/Reset.swift | 0 .../MasKit}/Commands/Search.swift | 0 .../MasKit}/Commands/SignIn.swift | 0 .../MasKit}/Commands/SignOut.swift | 0 .../MasKit}/Commands/Uninstall.swift | 0 .../MasKit}/Commands/Upgrade.swift | 0 .../MasKit}/Commands/Vendor.swift | 0 .../MasKit}/Commands/Version.swift | 0 .../MasKit}/Controllers/AppLibrary.swift | 0 .../MasKit}/Controllers/MasAppLibrary.swift | 0 .../MasKit}/Controllers/MasStoreSearch.swift | 0 .../MasKit}/Controllers/SoftwareMap.swift | 0 .../MasKit}/Controllers/StoreSearch.swift | 0 .../MasKit}/Errors/MASError.swift | 0 .../Extensions/String+PercentEncoding.swift | 0 .../ExternalCommands/ExternalCommand.swift | 0 .../ExternalCommands/OpenSystemCommand.swift | 0 .../MasKit}/Formatters/AppInfoFormatter.swift | 0 .../MasKit}/Formatters/AppListFormatter.swift | 0 .../Formatters/SearchResultFormatter.swift | 0 .../MasKit}/Formatters/Utilities.swift | 0 .../MasKit}/Models/SearchResult.swift | 0 .../MasKit}/Models/SearchResultList.swift | 0 .../MasKit}/Models/SoftwareProduct.swift | 0 .../MasKit}/Network/NetworkManager.swift | 0 .../MasKit}/Network/NetworkSession.swift | 0 .../Network/URLSession+NetworkSession.swift | 0 .../MasKit}/SupportingFiles/Info.plist | 0 .../MasKit}/SupportingFiles/MasKit.h | 0 .../CommerceKit/CKAccountStore.h | 0 .../CommerceKit/CKDownloadDirectory.h | 0 .../CommerceKit/CKDownloadQueue.h | 0 .../CommerceKit/CKDownloadQueueObserver.h | 0 .../CommerceKit/CKPurchaseController.h | 0 .../CommerceKit/CKServiceInterface.h | 0 .../CommerceKit/CKSoftwareMap.h | 0 .../CommerceKit/module.modulemap | 0 .../StoreFoundation/CKSoftwareProduct.h | 0 .../StoreFoundation/CKUpdate.h | 0 .../StoreFoundation/ISAccountService.h | 0 .../StoreFoundation/ISAuthenticationContext.h | 0 .../ISAuthenticationResponse.h | 0 .../StoreFoundation/ISServiceProxy.h | 0 .../StoreFoundation/ISServiceRemoteObject.h | 0 .../StoreFoundation/ISStoreAccount.h | 0 .../StoreFoundation/ISStoreClient.h | 0 .../StoreFoundation/SSDownload.h | 0 .../StoreFoundation/SSDownloadMetadata.h | 0 .../StoreFoundation/SSDownloadPhase.h | 0 .../StoreFoundation/SSDownloadStatus.h | 0 .../StoreFoundation/SSPurchase.h | 0 .../StoreFoundation/SSPurchaseResponse.h | 0 .../StoreFoundation/module.modulemap | 0 {mas => Sources/mas}/main.swift | 0 {mas => Sources/mas}/mas-Info.plist | 0 .../MasKitTests}/.swiftlint.yml | 0 .../Commands/AccountCommandSpec.swift | 0 .../Commands/HomeCommandSpec.swift | 0 .../Commands/InfoCommandSpec.swift | 0 .../Commands/InstallCommandSpec.swift | 0 .../Commands/ListCommandSpec.swift | 0 .../Commands/LuckyCommandSpec.swift | 0 .../Commands/OpenCommandSpec.swift | 0 .../Commands/OutdatedCommandSpec.swift | 0 .../Commands/PurchaseCommandSpec.swift | 0 .../Commands/ResetCommandSpec.swift | 0 .../Commands/SearchCommandSpec.swift | 0 .../Commands/SignInCommandSpec.swift | 0 .../Commands/SignOutCommandSpec.swift | 0 .../Commands/UninstallCommandSpec.swift | 0 .../Commands/UpgradeCommandSpec.swift | 0 .../Commands/VendorCommandSpec.swift | 0 .../Commands/VersionCommandSpec.swift | 0 .../Controllers/AppLibraryMock.swift | 0 .../Controllers/MasAppLibrarySpec.swift | 0 .../Controllers/MasStoreSearchSpec.swift | 0 .../Controllers/StoreSearchMock.swift | 0 .../Controllers/StoreSearchSpec.swift | 0 .../Errors/MASErrorTestCase.swift | 0 .../MasKitTests}/Extensions/Bundle+JSON.swift | 0 .../Extensions/String+FileExtension.swift | 0 .../OpenSystemCommandMock.swift | 0 .../OpenSystemCommandSpec.swift | 0 .../Formatters/AppListFormatterSpec.swift | 0 .../SearchResultFormatterSpec.swift | 0 .../MasKitTests}/JSON/lookup/fantastical.json | 0 .../MasKitTests}/JSON/lookup/notability.json | 0 .../MasKitTests}/JSON/lookup/slack.json | 0 .../MasKitTests}/JSON/lookup/things.json | 0 .../MasKitTests}/JSON/search/bbedit.json | 0 .../MasKitTests}/JSON/search/bear.json | 0 .../MasKitTests}/JSON/search/deliveries.json | 0 .../MasKitTests}/JSON/search/fantastical.json | 0 .../MasKitTests}/JSON/search/mojave.json | 0 .../MasKitTests}/JSON/search/nonexistent.json | 0 .../MasKitTests}/JSON/search/notability.json | 0 .../MasKitTests}/JSON/search/slack.json | 0 .../MasKitTests}/JSON/search/things-3.json | 0 .../JSON/search/things-that-go-bump.json | 0 .../MasKitTests}/JSON/search/things.json | 0 .../MasKitTests}/JSON/search/tweetbot.json | 0 .../Models/SearchResultListSpec.swift | 0 .../Models/SearchResultSpec.swift | 0 .../Models/SoftwareProductMock.swift | 0 .../Network/NetworkManagerTests.swift | 0 .../Network/NetworkSessionMock.swift | 0 .../Network/NetworkSessionMockFromFile.swift | 0 .../Network/TestURLSessionDelegate.swift | 0 .../URLSessionConfiguration+Tests.swift | 0 .../Network/URLSessionDataTaskMock.swift | 0 .../Nimble/ResultPredicates.swift | 0 .../MasKitTests}/OutputListener.swift | 0 .../MasKitTests}/OutputListenerSpec.swift | 0 .../MasKitTests}/Strongify.swift | 0 .../MasKitTests}/SupportingFiles/Info.plist | 0 mas-cli.xcodeproj/project.pbxproj | 46 +++++++++++-------- script/lint | 6 +-- script/update_headers | 2 +- 134 files changed, 31 insertions(+), 23 deletions(-) rename {MasKit => Sources/MasKit}/AppStore/CKSoftwareMap+SoftwareMap.swift (100%) rename {MasKit => Sources/MasKit}/AppStore/CKSoftwareProduct+SoftwareProduct.swift (100%) rename {MasKit => Sources/MasKit}/AppStore/Downloader.swift (100%) rename {MasKit => Sources/MasKit}/AppStore/ISStoreAccount.swift (100%) rename {MasKit => Sources/MasKit}/AppStore/PurchaseDownloadObserver.swift (100%) rename {MasKit => Sources/MasKit}/AppStore/SSPurchase.swift (100%) rename {MasKit => Sources/MasKit}/AppStore/StoreAccount.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Account.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Home.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Info.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Install.swift (100%) rename {MasKit => Sources/MasKit}/Commands/List.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Lucky.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Open.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Outdated.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Purchase.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Reset.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Search.swift (100%) rename {MasKit => Sources/MasKit}/Commands/SignIn.swift (100%) rename {MasKit => Sources/MasKit}/Commands/SignOut.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Uninstall.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Upgrade.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Vendor.swift (100%) rename {MasKit => Sources/MasKit}/Commands/Version.swift (100%) rename {MasKit => Sources/MasKit}/Controllers/AppLibrary.swift (100%) rename {MasKit => Sources/MasKit}/Controllers/MasAppLibrary.swift (100%) rename {MasKit => Sources/MasKit}/Controllers/MasStoreSearch.swift (100%) rename {MasKit => Sources/MasKit}/Controllers/SoftwareMap.swift (100%) rename {MasKit => Sources/MasKit}/Controllers/StoreSearch.swift (100%) rename {MasKit => Sources/MasKit}/Errors/MASError.swift (100%) rename {MasKit => Sources/MasKit}/Extensions/String+PercentEncoding.swift (100%) rename {MasKit => Sources/MasKit}/ExternalCommands/ExternalCommand.swift (100%) rename {MasKit => Sources/MasKit}/ExternalCommands/OpenSystemCommand.swift (100%) rename {MasKit => Sources/MasKit}/Formatters/AppInfoFormatter.swift (100%) rename {MasKit => Sources/MasKit}/Formatters/AppListFormatter.swift (100%) rename {MasKit => Sources/MasKit}/Formatters/SearchResultFormatter.swift (100%) rename {MasKit => Sources/MasKit}/Formatters/Utilities.swift (100%) rename {MasKit => Sources/MasKit}/Models/SearchResult.swift (100%) rename {MasKit => Sources/MasKit}/Models/SearchResultList.swift (100%) rename {MasKit => Sources/MasKit}/Models/SoftwareProduct.swift (100%) rename {MasKit => Sources/MasKit}/Network/NetworkManager.swift (100%) rename {MasKit => Sources/MasKit}/Network/NetworkSession.swift (100%) rename {MasKit => Sources/MasKit}/Network/URLSession+NetworkSession.swift (100%) rename {MasKit => Sources/MasKit}/SupportingFiles/Info.plist (100%) rename {MasKit => Sources/MasKit}/SupportingFiles/MasKit.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKAccountStore.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKDownloadDirectory.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKDownloadQueue.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKDownloadQueueObserver.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKPurchaseController.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKServiceInterface.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/CKSoftwareMap.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/CommerceKit/module.modulemap (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/CKSoftwareProduct.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/CKUpdate.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISAccountService.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISAuthenticationContext.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISAuthenticationResponse.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISServiceProxy.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISServiceRemoteObject.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISStoreAccount.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/ISStoreClient.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/SSDownload.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/SSDownloadMetadata.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/SSDownloadPhase.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/SSDownloadStatus.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/SSPurchase.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/SSPurchaseResponse.h (100%) rename {PrivateFrameworks => Sources/PrivateFrameworks}/StoreFoundation/module.modulemap (100%) rename {mas => Sources/mas}/main.swift (100%) rename {mas => Sources/mas}/mas-Info.plist (100%) rename {MasKitTests => Tests/MasKitTests}/.swiftlint.yml (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/AccountCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/HomeCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/InfoCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/InstallCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/ListCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/LuckyCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/OpenCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/OutdatedCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/PurchaseCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/ResetCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/SearchCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/SignInCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/SignOutCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/UninstallCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/UpgradeCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/VendorCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Commands/VersionCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Controllers/AppLibraryMock.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Controllers/MasAppLibrarySpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Controllers/MasStoreSearchSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Controllers/StoreSearchMock.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Controllers/StoreSearchSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Errors/MASErrorTestCase.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Extensions/Bundle+JSON.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Extensions/String+FileExtension.swift (100%) rename {MasKitTests => Tests/MasKitTests}/ExternalCommands/OpenSystemCommandMock.swift (100%) rename {MasKitTests => Tests/MasKitTests}/ExternalCommands/OpenSystemCommandSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Formatters/AppListFormatterSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Formatters/SearchResultFormatterSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/lookup/fantastical.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/lookup/notability.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/lookup/slack.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/lookup/things.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/bbedit.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/bear.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/deliveries.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/fantastical.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/mojave.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/nonexistent.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/notability.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/slack.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/things-3.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/things-that-go-bump.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/things.json (100%) rename {MasKitTests => Tests/MasKitTests}/JSON/search/tweetbot.json (100%) rename {MasKitTests => Tests/MasKitTests}/Models/SearchResultListSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Models/SearchResultSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Models/SoftwareProductMock.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Network/NetworkManagerTests.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Network/NetworkSessionMock.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Network/NetworkSessionMockFromFile.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Network/TestURLSessionDelegate.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Network/URLSessionConfiguration+Tests.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Network/URLSessionDataTaskMock.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Nimble/ResultPredicates.swift (100%) rename {MasKitTests => Tests/MasKitTests}/OutputListener.swift (100%) rename {MasKitTests => Tests/MasKitTests}/OutputListenerSpec.swift (100%) rename {MasKitTests => Tests/MasKitTests}/Strongify.swift (100%) rename {MasKitTests => Tests/MasKitTests}/SupportingFiles/Info.plist (100%) diff --git a/MasKit/AppStore/CKSoftwareMap+SoftwareMap.swift b/Sources/MasKit/AppStore/CKSoftwareMap+SoftwareMap.swift similarity index 100% rename from MasKit/AppStore/CKSoftwareMap+SoftwareMap.swift rename to Sources/MasKit/AppStore/CKSoftwareMap+SoftwareMap.swift diff --git a/MasKit/AppStore/CKSoftwareProduct+SoftwareProduct.swift b/Sources/MasKit/AppStore/CKSoftwareProduct+SoftwareProduct.swift similarity index 100% rename from MasKit/AppStore/CKSoftwareProduct+SoftwareProduct.swift rename to Sources/MasKit/AppStore/CKSoftwareProduct+SoftwareProduct.swift diff --git a/MasKit/AppStore/Downloader.swift b/Sources/MasKit/AppStore/Downloader.swift similarity index 100% rename from MasKit/AppStore/Downloader.swift rename to Sources/MasKit/AppStore/Downloader.swift diff --git a/MasKit/AppStore/ISStoreAccount.swift b/Sources/MasKit/AppStore/ISStoreAccount.swift similarity index 100% rename from MasKit/AppStore/ISStoreAccount.swift rename to Sources/MasKit/AppStore/ISStoreAccount.swift diff --git a/MasKit/AppStore/PurchaseDownloadObserver.swift b/Sources/MasKit/AppStore/PurchaseDownloadObserver.swift similarity index 100% rename from MasKit/AppStore/PurchaseDownloadObserver.swift rename to Sources/MasKit/AppStore/PurchaseDownloadObserver.swift diff --git a/MasKit/AppStore/SSPurchase.swift b/Sources/MasKit/AppStore/SSPurchase.swift similarity index 100% rename from MasKit/AppStore/SSPurchase.swift rename to Sources/MasKit/AppStore/SSPurchase.swift diff --git a/MasKit/AppStore/StoreAccount.swift b/Sources/MasKit/AppStore/StoreAccount.swift similarity index 100% rename from MasKit/AppStore/StoreAccount.swift rename to Sources/MasKit/AppStore/StoreAccount.swift diff --git a/MasKit/Commands/Account.swift b/Sources/MasKit/Commands/Account.swift similarity index 100% rename from MasKit/Commands/Account.swift rename to Sources/MasKit/Commands/Account.swift diff --git a/MasKit/Commands/Home.swift b/Sources/MasKit/Commands/Home.swift similarity index 100% rename from MasKit/Commands/Home.swift rename to Sources/MasKit/Commands/Home.swift diff --git a/MasKit/Commands/Info.swift b/Sources/MasKit/Commands/Info.swift similarity index 100% rename from MasKit/Commands/Info.swift rename to Sources/MasKit/Commands/Info.swift diff --git a/MasKit/Commands/Install.swift b/Sources/MasKit/Commands/Install.swift similarity index 100% rename from MasKit/Commands/Install.swift rename to Sources/MasKit/Commands/Install.swift diff --git a/MasKit/Commands/List.swift b/Sources/MasKit/Commands/List.swift similarity index 100% rename from MasKit/Commands/List.swift rename to Sources/MasKit/Commands/List.swift diff --git a/MasKit/Commands/Lucky.swift b/Sources/MasKit/Commands/Lucky.swift similarity index 100% rename from MasKit/Commands/Lucky.swift rename to Sources/MasKit/Commands/Lucky.swift diff --git a/MasKit/Commands/Open.swift b/Sources/MasKit/Commands/Open.swift similarity index 100% rename from MasKit/Commands/Open.swift rename to Sources/MasKit/Commands/Open.swift diff --git a/MasKit/Commands/Outdated.swift b/Sources/MasKit/Commands/Outdated.swift similarity index 100% rename from MasKit/Commands/Outdated.swift rename to Sources/MasKit/Commands/Outdated.swift diff --git a/MasKit/Commands/Purchase.swift b/Sources/MasKit/Commands/Purchase.swift similarity index 100% rename from MasKit/Commands/Purchase.swift rename to Sources/MasKit/Commands/Purchase.swift diff --git a/MasKit/Commands/Reset.swift b/Sources/MasKit/Commands/Reset.swift similarity index 100% rename from MasKit/Commands/Reset.swift rename to Sources/MasKit/Commands/Reset.swift diff --git a/MasKit/Commands/Search.swift b/Sources/MasKit/Commands/Search.swift similarity index 100% rename from MasKit/Commands/Search.swift rename to Sources/MasKit/Commands/Search.swift diff --git a/MasKit/Commands/SignIn.swift b/Sources/MasKit/Commands/SignIn.swift similarity index 100% rename from MasKit/Commands/SignIn.swift rename to Sources/MasKit/Commands/SignIn.swift diff --git a/MasKit/Commands/SignOut.swift b/Sources/MasKit/Commands/SignOut.swift similarity index 100% rename from MasKit/Commands/SignOut.swift rename to Sources/MasKit/Commands/SignOut.swift diff --git a/MasKit/Commands/Uninstall.swift b/Sources/MasKit/Commands/Uninstall.swift similarity index 100% rename from MasKit/Commands/Uninstall.swift rename to Sources/MasKit/Commands/Uninstall.swift diff --git a/MasKit/Commands/Upgrade.swift b/Sources/MasKit/Commands/Upgrade.swift similarity index 100% rename from MasKit/Commands/Upgrade.swift rename to Sources/MasKit/Commands/Upgrade.swift diff --git a/MasKit/Commands/Vendor.swift b/Sources/MasKit/Commands/Vendor.swift similarity index 100% rename from MasKit/Commands/Vendor.swift rename to Sources/MasKit/Commands/Vendor.swift diff --git a/MasKit/Commands/Version.swift b/Sources/MasKit/Commands/Version.swift similarity index 100% rename from MasKit/Commands/Version.swift rename to Sources/MasKit/Commands/Version.swift diff --git a/MasKit/Controllers/AppLibrary.swift b/Sources/MasKit/Controllers/AppLibrary.swift similarity index 100% rename from MasKit/Controllers/AppLibrary.swift rename to Sources/MasKit/Controllers/AppLibrary.swift diff --git a/MasKit/Controllers/MasAppLibrary.swift b/Sources/MasKit/Controllers/MasAppLibrary.swift similarity index 100% rename from MasKit/Controllers/MasAppLibrary.swift rename to Sources/MasKit/Controllers/MasAppLibrary.swift diff --git a/MasKit/Controllers/MasStoreSearch.swift b/Sources/MasKit/Controllers/MasStoreSearch.swift similarity index 100% rename from MasKit/Controllers/MasStoreSearch.swift rename to Sources/MasKit/Controllers/MasStoreSearch.swift diff --git a/MasKit/Controllers/SoftwareMap.swift b/Sources/MasKit/Controllers/SoftwareMap.swift similarity index 100% rename from MasKit/Controllers/SoftwareMap.swift rename to Sources/MasKit/Controllers/SoftwareMap.swift diff --git a/MasKit/Controllers/StoreSearch.swift b/Sources/MasKit/Controllers/StoreSearch.swift similarity index 100% rename from MasKit/Controllers/StoreSearch.swift rename to Sources/MasKit/Controllers/StoreSearch.swift diff --git a/MasKit/Errors/MASError.swift b/Sources/MasKit/Errors/MASError.swift similarity index 100% rename from MasKit/Errors/MASError.swift rename to Sources/MasKit/Errors/MASError.swift diff --git a/MasKit/Extensions/String+PercentEncoding.swift b/Sources/MasKit/Extensions/String+PercentEncoding.swift similarity index 100% rename from MasKit/Extensions/String+PercentEncoding.swift rename to Sources/MasKit/Extensions/String+PercentEncoding.swift diff --git a/MasKit/ExternalCommands/ExternalCommand.swift b/Sources/MasKit/ExternalCommands/ExternalCommand.swift similarity index 100% rename from MasKit/ExternalCommands/ExternalCommand.swift rename to Sources/MasKit/ExternalCommands/ExternalCommand.swift diff --git a/MasKit/ExternalCommands/OpenSystemCommand.swift b/Sources/MasKit/ExternalCommands/OpenSystemCommand.swift similarity index 100% rename from MasKit/ExternalCommands/OpenSystemCommand.swift rename to Sources/MasKit/ExternalCommands/OpenSystemCommand.swift diff --git a/MasKit/Formatters/AppInfoFormatter.swift b/Sources/MasKit/Formatters/AppInfoFormatter.swift similarity index 100% rename from MasKit/Formatters/AppInfoFormatter.swift rename to Sources/MasKit/Formatters/AppInfoFormatter.swift diff --git a/MasKit/Formatters/AppListFormatter.swift b/Sources/MasKit/Formatters/AppListFormatter.swift similarity index 100% rename from MasKit/Formatters/AppListFormatter.swift rename to Sources/MasKit/Formatters/AppListFormatter.swift diff --git a/MasKit/Formatters/SearchResultFormatter.swift b/Sources/MasKit/Formatters/SearchResultFormatter.swift similarity index 100% rename from MasKit/Formatters/SearchResultFormatter.swift rename to Sources/MasKit/Formatters/SearchResultFormatter.swift diff --git a/MasKit/Formatters/Utilities.swift b/Sources/MasKit/Formatters/Utilities.swift similarity index 100% rename from MasKit/Formatters/Utilities.swift rename to Sources/MasKit/Formatters/Utilities.swift diff --git a/MasKit/Models/SearchResult.swift b/Sources/MasKit/Models/SearchResult.swift similarity index 100% rename from MasKit/Models/SearchResult.swift rename to Sources/MasKit/Models/SearchResult.swift diff --git a/MasKit/Models/SearchResultList.swift b/Sources/MasKit/Models/SearchResultList.swift similarity index 100% rename from MasKit/Models/SearchResultList.swift rename to Sources/MasKit/Models/SearchResultList.swift diff --git a/MasKit/Models/SoftwareProduct.swift b/Sources/MasKit/Models/SoftwareProduct.swift similarity index 100% rename from MasKit/Models/SoftwareProduct.swift rename to Sources/MasKit/Models/SoftwareProduct.swift diff --git a/MasKit/Network/NetworkManager.swift b/Sources/MasKit/Network/NetworkManager.swift similarity index 100% rename from MasKit/Network/NetworkManager.swift rename to Sources/MasKit/Network/NetworkManager.swift diff --git a/MasKit/Network/NetworkSession.swift b/Sources/MasKit/Network/NetworkSession.swift similarity index 100% rename from MasKit/Network/NetworkSession.swift rename to Sources/MasKit/Network/NetworkSession.swift diff --git a/MasKit/Network/URLSession+NetworkSession.swift b/Sources/MasKit/Network/URLSession+NetworkSession.swift similarity index 100% rename from MasKit/Network/URLSession+NetworkSession.swift rename to Sources/MasKit/Network/URLSession+NetworkSession.swift diff --git a/MasKit/SupportingFiles/Info.plist b/Sources/MasKit/SupportingFiles/Info.plist similarity index 100% rename from MasKit/SupportingFiles/Info.plist rename to Sources/MasKit/SupportingFiles/Info.plist diff --git a/MasKit/SupportingFiles/MasKit.h b/Sources/MasKit/SupportingFiles/MasKit.h similarity index 100% rename from MasKit/SupportingFiles/MasKit.h rename to Sources/MasKit/SupportingFiles/MasKit.h diff --git a/PrivateFrameworks/CommerceKit/CKAccountStore.h b/Sources/PrivateFrameworks/CommerceKit/CKAccountStore.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKAccountStore.h rename to Sources/PrivateFrameworks/CommerceKit/CKAccountStore.h diff --git a/PrivateFrameworks/CommerceKit/CKDownloadDirectory.h b/Sources/PrivateFrameworks/CommerceKit/CKDownloadDirectory.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKDownloadDirectory.h rename to Sources/PrivateFrameworks/CommerceKit/CKDownloadDirectory.h diff --git a/PrivateFrameworks/CommerceKit/CKDownloadQueue.h b/Sources/PrivateFrameworks/CommerceKit/CKDownloadQueue.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKDownloadQueue.h rename to Sources/PrivateFrameworks/CommerceKit/CKDownloadQueue.h diff --git a/PrivateFrameworks/CommerceKit/CKDownloadQueueObserver.h b/Sources/PrivateFrameworks/CommerceKit/CKDownloadQueueObserver.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKDownloadQueueObserver.h rename to Sources/PrivateFrameworks/CommerceKit/CKDownloadQueueObserver.h diff --git a/PrivateFrameworks/CommerceKit/CKPurchaseController.h b/Sources/PrivateFrameworks/CommerceKit/CKPurchaseController.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKPurchaseController.h rename to Sources/PrivateFrameworks/CommerceKit/CKPurchaseController.h diff --git a/PrivateFrameworks/CommerceKit/CKServiceInterface.h b/Sources/PrivateFrameworks/CommerceKit/CKServiceInterface.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKServiceInterface.h rename to Sources/PrivateFrameworks/CommerceKit/CKServiceInterface.h diff --git a/PrivateFrameworks/CommerceKit/CKSoftwareMap.h b/Sources/PrivateFrameworks/CommerceKit/CKSoftwareMap.h similarity index 100% rename from PrivateFrameworks/CommerceKit/CKSoftwareMap.h rename to Sources/PrivateFrameworks/CommerceKit/CKSoftwareMap.h diff --git a/PrivateFrameworks/CommerceKit/module.modulemap b/Sources/PrivateFrameworks/CommerceKit/module.modulemap similarity index 100% rename from PrivateFrameworks/CommerceKit/module.modulemap rename to Sources/PrivateFrameworks/CommerceKit/module.modulemap diff --git a/PrivateFrameworks/StoreFoundation/CKSoftwareProduct.h b/Sources/PrivateFrameworks/StoreFoundation/CKSoftwareProduct.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/CKSoftwareProduct.h rename to Sources/PrivateFrameworks/StoreFoundation/CKSoftwareProduct.h diff --git a/PrivateFrameworks/StoreFoundation/CKUpdate.h b/Sources/PrivateFrameworks/StoreFoundation/CKUpdate.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/CKUpdate.h rename to Sources/PrivateFrameworks/StoreFoundation/CKUpdate.h diff --git a/PrivateFrameworks/StoreFoundation/ISAccountService.h b/Sources/PrivateFrameworks/StoreFoundation/ISAccountService.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISAccountService.h rename to Sources/PrivateFrameworks/StoreFoundation/ISAccountService.h diff --git a/PrivateFrameworks/StoreFoundation/ISAuthenticationContext.h b/Sources/PrivateFrameworks/StoreFoundation/ISAuthenticationContext.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISAuthenticationContext.h rename to Sources/PrivateFrameworks/StoreFoundation/ISAuthenticationContext.h diff --git a/PrivateFrameworks/StoreFoundation/ISAuthenticationResponse.h b/Sources/PrivateFrameworks/StoreFoundation/ISAuthenticationResponse.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISAuthenticationResponse.h rename to Sources/PrivateFrameworks/StoreFoundation/ISAuthenticationResponse.h diff --git a/PrivateFrameworks/StoreFoundation/ISServiceProxy.h b/Sources/PrivateFrameworks/StoreFoundation/ISServiceProxy.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISServiceProxy.h rename to Sources/PrivateFrameworks/StoreFoundation/ISServiceProxy.h diff --git a/PrivateFrameworks/StoreFoundation/ISServiceRemoteObject.h b/Sources/PrivateFrameworks/StoreFoundation/ISServiceRemoteObject.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISServiceRemoteObject.h rename to Sources/PrivateFrameworks/StoreFoundation/ISServiceRemoteObject.h diff --git a/PrivateFrameworks/StoreFoundation/ISStoreAccount.h b/Sources/PrivateFrameworks/StoreFoundation/ISStoreAccount.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISStoreAccount.h rename to Sources/PrivateFrameworks/StoreFoundation/ISStoreAccount.h diff --git a/PrivateFrameworks/StoreFoundation/ISStoreClient.h b/Sources/PrivateFrameworks/StoreFoundation/ISStoreClient.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/ISStoreClient.h rename to Sources/PrivateFrameworks/StoreFoundation/ISStoreClient.h diff --git a/PrivateFrameworks/StoreFoundation/SSDownload.h b/Sources/PrivateFrameworks/StoreFoundation/SSDownload.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/SSDownload.h rename to Sources/PrivateFrameworks/StoreFoundation/SSDownload.h diff --git a/PrivateFrameworks/StoreFoundation/SSDownloadMetadata.h b/Sources/PrivateFrameworks/StoreFoundation/SSDownloadMetadata.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/SSDownloadMetadata.h rename to Sources/PrivateFrameworks/StoreFoundation/SSDownloadMetadata.h diff --git a/PrivateFrameworks/StoreFoundation/SSDownloadPhase.h b/Sources/PrivateFrameworks/StoreFoundation/SSDownloadPhase.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/SSDownloadPhase.h rename to Sources/PrivateFrameworks/StoreFoundation/SSDownloadPhase.h diff --git a/PrivateFrameworks/StoreFoundation/SSDownloadStatus.h b/Sources/PrivateFrameworks/StoreFoundation/SSDownloadStatus.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/SSDownloadStatus.h rename to Sources/PrivateFrameworks/StoreFoundation/SSDownloadStatus.h diff --git a/PrivateFrameworks/StoreFoundation/SSPurchase.h b/Sources/PrivateFrameworks/StoreFoundation/SSPurchase.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/SSPurchase.h rename to Sources/PrivateFrameworks/StoreFoundation/SSPurchase.h diff --git a/PrivateFrameworks/StoreFoundation/SSPurchaseResponse.h b/Sources/PrivateFrameworks/StoreFoundation/SSPurchaseResponse.h similarity index 100% rename from PrivateFrameworks/StoreFoundation/SSPurchaseResponse.h rename to Sources/PrivateFrameworks/StoreFoundation/SSPurchaseResponse.h diff --git a/PrivateFrameworks/StoreFoundation/module.modulemap b/Sources/PrivateFrameworks/StoreFoundation/module.modulemap similarity index 100% rename from PrivateFrameworks/StoreFoundation/module.modulemap rename to Sources/PrivateFrameworks/StoreFoundation/module.modulemap diff --git a/mas/main.swift b/Sources/mas/main.swift similarity index 100% rename from mas/main.swift rename to Sources/mas/main.swift diff --git a/mas/mas-Info.plist b/Sources/mas/mas-Info.plist similarity index 100% rename from mas/mas-Info.plist rename to Sources/mas/mas-Info.plist diff --git a/MasKitTests/.swiftlint.yml b/Tests/MasKitTests/.swiftlint.yml similarity index 100% rename from MasKitTests/.swiftlint.yml rename to Tests/MasKitTests/.swiftlint.yml diff --git a/MasKitTests/Commands/AccountCommandSpec.swift b/Tests/MasKitTests/Commands/AccountCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/AccountCommandSpec.swift rename to Tests/MasKitTests/Commands/AccountCommandSpec.swift diff --git a/MasKitTests/Commands/HomeCommandSpec.swift b/Tests/MasKitTests/Commands/HomeCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/HomeCommandSpec.swift rename to Tests/MasKitTests/Commands/HomeCommandSpec.swift diff --git a/MasKitTests/Commands/InfoCommandSpec.swift b/Tests/MasKitTests/Commands/InfoCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/InfoCommandSpec.swift rename to Tests/MasKitTests/Commands/InfoCommandSpec.swift diff --git a/MasKitTests/Commands/InstallCommandSpec.swift b/Tests/MasKitTests/Commands/InstallCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/InstallCommandSpec.swift rename to Tests/MasKitTests/Commands/InstallCommandSpec.swift diff --git a/MasKitTests/Commands/ListCommandSpec.swift b/Tests/MasKitTests/Commands/ListCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/ListCommandSpec.swift rename to Tests/MasKitTests/Commands/ListCommandSpec.swift diff --git a/MasKitTests/Commands/LuckyCommandSpec.swift b/Tests/MasKitTests/Commands/LuckyCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/LuckyCommandSpec.swift rename to Tests/MasKitTests/Commands/LuckyCommandSpec.swift diff --git a/MasKitTests/Commands/OpenCommandSpec.swift b/Tests/MasKitTests/Commands/OpenCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/OpenCommandSpec.swift rename to Tests/MasKitTests/Commands/OpenCommandSpec.swift diff --git a/MasKitTests/Commands/OutdatedCommandSpec.swift b/Tests/MasKitTests/Commands/OutdatedCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/OutdatedCommandSpec.swift rename to Tests/MasKitTests/Commands/OutdatedCommandSpec.swift diff --git a/MasKitTests/Commands/PurchaseCommandSpec.swift b/Tests/MasKitTests/Commands/PurchaseCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/PurchaseCommandSpec.swift rename to Tests/MasKitTests/Commands/PurchaseCommandSpec.swift diff --git a/MasKitTests/Commands/ResetCommandSpec.swift b/Tests/MasKitTests/Commands/ResetCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/ResetCommandSpec.swift rename to Tests/MasKitTests/Commands/ResetCommandSpec.swift diff --git a/MasKitTests/Commands/SearchCommandSpec.swift b/Tests/MasKitTests/Commands/SearchCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/SearchCommandSpec.swift rename to Tests/MasKitTests/Commands/SearchCommandSpec.swift diff --git a/MasKitTests/Commands/SignInCommandSpec.swift b/Tests/MasKitTests/Commands/SignInCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/SignInCommandSpec.swift rename to Tests/MasKitTests/Commands/SignInCommandSpec.swift diff --git a/MasKitTests/Commands/SignOutCommandSpec.swift b/Tests/MasKitTests/Commands/SignOutCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/SignOutCommandSpec.swift rename to Tests/MasKitTests/Commands/SignOutCommandSpec.swift diff --git a/MasKitTests/Commands/UninstallCommandSpec.swift b/Tests/MasKitTests/Commands/UninstallCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/UninstallCommandSpec.swift rename to Tests/MasKitTests/Commands/UninstallCommandSpec.swift diff --git a/MasKitTests/Commands/UpgradeCommandSpec.swift b/Tests/MasKitTests/Commands/UpgradeCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/UpgradeCommandSpec.swift rename to Tests/MasKitTests/Commands/UpgradeCommandSpec.swift diff --git a/MasKitTests/Commands/VendorCommandSpec.swift b/Tests/MasKitTests/Commands/VendorCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/VendorCommandSpec.swift rename to Tests/MasKitTests/Commands/VendorCommandSpec.swift diff --git a/MasKitTests/Commands/VersionCommandSpec.swift b/Tests/MasKitTests/Commands/VersionCommandSpec.swift similarity index 100% rename from MasKitTests/Commands/VersionCommandSpec.swift rename to Tests/MasKitTests/Commands/VersionCommandSpec.swift diff --git a/MasKitTests/Controllers/AppLibraryMock.swift b/Tests/MasKitTests/Controllers/AppLibraryMock.swift similarity index 100% rename from MasKitTests/Controllers/AppLibraryMock.swift rename to Tests/MasKitTests/Controllers/AppLibraryMock.swift diff --git a/MasKitTests/Controllers/MasAppLibrarySpec.swift b/Tests/MasKitTests/Controllers/MasAppLibrarySpec.swift similarity index 100% rename from MasKitTests/Controllers/MasAppLibrarySpec.swift rename to Tests/MasKitTests/Controllers/MasAppLibrarySpec.swift diff --git a/MasKitTests/Controllers/MasStoreSearchSpec.swift b/Tests/MasKitTests/Controllers/MasStoreSearchSpec.swift similarity index 100% rename from MasKitTests/Controllers/MasStoreSearchSpec.swift rename to Tests/MasKitTests/Controllers/MasStoreSearchSpec.swift diff --git a/MasKitTests/Controllers/StoreSearchMock.swift b/Tests/MasKitTests/Controllers/StoreSearchMock.swift similarity index 100% rename from MasKitTests/Controllers/StoreSearchMock.swift rename to Tests/MasKitTests/Controllers/StoreSearchMock.swift diff --git a/MasKitTests/Controllers/StoreSearchSpec.swift b/Tests/MasKitTests/Controllers/StoreSearchSpec.swift similarity index 100% rename from MasKitTests/Controllers/StoreSearchSpec.swift rename to Tests/MasKitTests/Controllers/StoreSearchSpec.swift diff --git a/MasKitTests/Errors/MASErrorTestCase.swift b/Tests/MasKitTests/Errors/MASErrorTestCase.swift similarity index 100% rename from MasKitTests/Errors/MASErrorTestCase.swift rename to Tests/MasKitTests/Errors/MASErrorTestCase.swift diff --git a/MasKitTests/Extensions/Bundle+JSON.swift b/Tests/MasKitTests/Extensions/Bundle+JSON.swift similarity index 100% rename from MasKitTests/Extensions/Bundle+JSON.swift rename to Tests/MasKitTests/Extensions/Bundle+JSON.swift diff --git a/MasKitTests/Extensions/String+FileExtension.swift b/Tests/MasKitTests/Extensions/String+FileExtension.swift similarity index 100% rename from MasKitTests/Extensions/String+FileExtension.swift rename to Tests/MasKitTests/Extensions/String+FileExtension.swift diff --git a/MasKitTests/ExternalCommands/OpenSystemCommandMock.swift b/Tests/MasKitTests/ExternalCommands/OpenSystemCommandMock.swift similarity index 100% rename from MasKitTests/ExternalCommands/OpenSystemCommandMock.swift rename to Tests/MasKitTests/ExternalCommands/OpenSystemCommandMock.swift diff --git a/MasKitTests/ExternalCommands/OpenSystemCommandSpec.swift b/Tests/MasKitTests/ExternalCommands/OpenSystemCommandSpec.swift similarity index 100% rename from MasKitTests/ExternalCommands/OpenSystemCommandSpec.swift rename to Tests/MasKitTests/ExternalCommands/OpenSystemCommandSpec.swift diff --git a/MasKitTests/Formatters/AppListFormatterSpec.swift b/Tests/MasKitTests/Formatters/AppListFormatterSpec.swift similarity index 100% rename from MasKitTests/Formatters/AppListFormatterSpec.swift rename to Tests/MasKitTests/Formatters/AppListFormatterSpec.swift diff --git a/MasKitTests/Formatters/SearchResultFormatterSpec.swift b/Tests/MasKitTests/Formatters/SearchResultFormatterSpec.swift similarity index 100% rename from MasKitTests/Formatters/SearchResultFormatterSpec.swift rename to Tests/MasKitTests/Formatters/SearchResultFormatterSpec.swift diff --git a/MasKitTests/JSON/lookup/fantastical.json b/Tests/MasKitTests/JSON/lookup/fantastical.json similarity index 100% rename from MasKitTests/JSON/lookup/fantastical.json rename to Tests/MasKitTests/JSON/lookup/fantastical.json diff --git a/MasKitTests/JSON/lookup/notability.json b/Tests/MasKitTests/JSON/lookup/notability.json similarity index 100% rename from MasKitTests/JSON/lookup/notability.json rename to Tests/MasKitTests/JSON/lookup/notability.json diff --git a/MasKitTests/JSON/lookup/slack.json b/Tests/MasKitTests/JSON/lookup/slack.json similarity index 100% rename from MasKitTests/JSON/lookup/slack.json rename to Tests/MasKitTests/JSON/lookup/slack.json diff --git a/MasKitTests/JSON/lookup/things.json b/Tests/MasKitTests/JSON/lookup/things.json similarity index 100% rename from MasKitTests/JSON/lookup/things.json rename to Tests/MasKitTests/JSON/lookup/things.json diff --git a/MasKitTests/JSON/search/bbedit.json b/Tests/MasKitTests/JSON/search/bbedit.json similarity index 100% rename from MasKitTests/JSON/search/bbedit.json rename to Tests/MasKitTests/JSON/search/bbedit.json diff --git a/MasKitTests/JSON/search/bear.json b/Tests/MasKitTests/JSON/search/bear.json similarity index 100% rename from MasKitTests/JSON/search/bear.json rename to Tests/MasKitTests/JSON/search/bear.json diff --git a/MasKitTests/JSON/search/deliveries.json b/Tests/MasKitTests/JSON/search/deliveries.json similarity index 100% rename from MasKitTests/JSON/search/deliveries.json rename to Tests/MasKitTests/JSON/search/deliveries.json diff --git a/MasKitTests/JSON/search/fantastical.json b/Tests/MasKitTests/JSON/search/fantastical.json similarity index 100% rename from MasKitTests/JSON/search/fantastical.json rename to Tests/MasKitTests/JSON/search/fantastical.json diff --git a/MasKitTests/JSON/search/mojave.json b/Tests/MasKitTests/JSON/search/mojave.json similarity index 100% rename from MasKitTests/JSON/search/mojave.json rename to Tests/MasKitTests/JSON/search/mojave.json diff --git a/MasKitTests/JSON/search/nonexistent.json b/Tests/MasKitTests/JSON/search/nonexistent.json similarity index 100% rename from MasKitTests/JSON/search/nonexistent.json rename to Tests/MasKitTests/JSON/search/nonexistent.json diff --git a/MasKitTests/JSON/search/notability.json b/Tests/MasKitTests/JSON/search/notability.json similarity index 100% rename from MasKitTests/JSON/search/notability.json rename to Tests/MasKitTests/JSON/search/notability.json diff --git a/MasKitTests/JSON/search/slack.json b/Tests/MasKitTests/JSON/search/slack.json similarity index 100% rename from MasKitTests/JSON/search/slack.json rename to Tests/MasKitTests/JSON/search/slack.json diff --git a/MasKitTests/JSON/search/things-3.json b/Tests/MasKitTests/JSON/search/things-3.json similarity index 100% rename from MasKitTests/JSON/search/things-3.json rename to Tests/MasKitTests/JSON/search/things-3.json diff --git a/MasKitTests/JSON/search/things-that-go-bump.json b/Tests/MasKitTests/JSON/search/things-that-go-bump.json similarity index 100% rename from MasKitTests/JSON/search/things-that-go-bump.json rename to Tests/MasKitTests/JSON/search/things-that-go-bump.json diff --git a/MasKitTests/JSON/search/things.json b/Tests/MasKitTests/JSON/search/things.json similarity index 100% rename from MasKitTests/JSON/search/things.json rename to Tests/MasKitTests/JSON/search/things.json diff --git a/MasKitTests/JSON/search/tweetbot.json b/Tests/MasKitTests/JSON/search/tweetbot.json similarity index 100% rename from MasKitTests/JSON/search/tweetbot.json rename to Tests/MasKitTests/JSON/search/tweetbot.json diff --git a/MasKitTests/Models/SearchResultListSpec.swift b/Tests/MasKitTests/Models/SearchResultListSpec.swift similarity index 100% rename from MasKitTests/Models/SearchResultListSpec.swift rename to Tests/MasKitTests/Models/SearchResultListSpec.swift diff --git a/MasKitTests/Models/SearchResultSpec.swift b/Tests/MasKitTests/Models/SearchResultSpec.swift similarity index 100% rename from MasKitTests/Models/SearchResultSpec.swift rename to Tests/MasKitTests/Models/SearchResultSpec.swift diff --git a/MasKitTests/Models/SoftwareProductMock.swift b/Tests/MasKitTests/Models/SoftwareProductMock.swift similarity index 100% rename from MasKitTests/Models/SoftwareProductMock.swift rename to Tests/MasKitTests/Models/SoftwareProductMock.swift diff --git a/MasKitTests/Network/NetworkManagerTests.swift b/Tests/MasKitTests/Network/NetworkManagerTests.swift similarity index 100% rename from MasKitTests/Network/NetworkManagerTests.swift rename to Tests/MasKitTests/Network/NetworkManagerTests.swift diff --git a/MasKitTests/Network/NetworkSessionMock.swift b/Tests/MasKitTests/Network/NetworkSessionMock.swift similarity index 100% rename from MasKitTests/Network/NetworkSessionMock.swift rename to Tests/MasKitTests/Network/NetworkSessionMock.swift diff --git a/MasKitTests/Network/NetworkSessionMockFromFile.swift b/Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift similarity index 100% rename from MasKitTests/Network/NetworkSessionMockFromFile.swift rename to Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift diff --git a/MasKitTests/Network/TestURLSessionDelegate.swift b/Tests/MasKitTests/Network/TestURLSessionDelegate.swift similarity index 100% rename from MasKitTests/Network/TestURLSessionDelegate.swift rename to Tests/MasKitTests/Network/TestURLSessionDelegate.swift diff --git a/MasKitTests/Network/URLSessionConfiguration+Tests.swift b/Tests/MasKitTests/Network/URLSessionConfiguration+Tests.swift similarity index 100% rename from MasKitTests/Network/URLSessionConfiguration+Tests.swift rename to Tests/MasKitTests/Network/URLSessionConfiguration+Tests.swift diff --git a/MasKitTests/Network/URLSessionDataTaskMock.swift b/Tests/MasKitTests/Network/URLSessionDataTaskMock.swift similarity index 100% rename from MasKitTests/Network/URLSessionDataTaskMock.swift rename to Tests/MasKitTests/Network/URLSessionDataTaskMock.swift diff --git a/MasKitTests/Nimble/ResultPredicates.swift b/Tests/MasKitTests/Nimble/ResultPredicates.swift similarity index 100% rename from MasKitTests/Nimble/ResultPredicates.swift rename to Tests/MasKitTests/Nimble/ResultPredicates.swift diff --git a/MasKitTests/OutputListener.swift b/Tests/MasKitTests/OutputListener.swift similarity index 100% rename from MasKitTests/OutputListener.swift rename to Tests/MasKitTests/OutputListener.swift diff --git a/MasKitTests/OutputListenerSpec.swift b/Tests/MasKitTests/OutputListenerSpec.swift similarity index 100% rename from MasKitTests/OutputListenerSpec.swift rename to Tests/MasKitTests/OutputListenerSpec.swift diff --git a/MasKitTests/Strongify.swift b/Tests/MasKitTests/Strongify.swift similarity index 100% rename from MasKitTests/Strongify.swift rename to Tests/MasKitTests/Strongify.swift diff --git a/MasKitTests/SupportingFiles/Info.plist b/Tests/MasKitTests/SupportingFiles/Info.plist similarity index 100% rename from MasKitTests/SupportingFiles/Info.plist rename to Tests/MasKitTests/SupportingFiles/Info.plist diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj index 30a3380c0..ccb3010e7 100644 --- a/mas-cli.xcodeproj/project.pbxproj +++ b/mas-cli.xcodeproj/project.pbxproj @@ -22,7 +22,6 @@ B576FE0021E113610016B39D /* NetworkSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDFF21E113610016B39D /* NetworkSession.swift */; }; B576FE0221E1139E0016B39D /* URLSession+NetworkSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */; }; B576FE0421E113E90016B39D /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0321E113E90016B39D /* NetworkManager.swift */; }; - B576FE0821E114A80016B39D /* NetworkResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0721E114A80016B39D /* NetworkResult.swift */; }; B576FE0C21E116590016B39D /* NetworkManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0B21E116590016B39D /* NetworkManagerTests.swift */; }; B576FE0E21E1D6310016B39D /* String+PercentEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */; }; B576FE1221E1D82D0016B39D /* NetworkSessionMockFromFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */; }; @@ -30,7 +29,6 @@ B576FE1621E1D8CB0016B39D /* String+FileExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */; }; B576FE1B21E28E8A0016B39D /* NetworkSessionMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */; }; B576FE1D21E28EF70016B39D /* URLSessionDataTaskMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */; }; - B576FE2821E423E60016B39D /* Dictionary+StringOrEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2721E423E60016B39D /* Dictionary+StringOrEmpty.swift */; }; B576FE2A21E4240B0016B39D /* AppInfoFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */; }; B576FE2C21E42A230016B39D /* OutputListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2B21E42A230016B39D /* OutputListener.swift */; }; B576FE2E21E5A8010016B39D /* Strongify.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2D21E5A8010016B39D /* Strongify.swift */; }; @@ -188,7 +186,6 @@ B576FDFF21E113610016B39D /* NetworkSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkSession.swift; sourceTree = ""; }; B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+NetworkSession.swift"; sourceTree = ""; }; B576FE0321E113E90016B39D /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = ""; }; - B576FE0721E114A80016B39D /* NetworkResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkResult.swift; sourceTree = ""; }; B576FE0B21E116590016B39D /* NetworkManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManagerTests.swift; sourceTree = ""; }; B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+PercentEncoding.swift"; sourceTree = ""; }; B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkSessionMockFromFile.swift; sourceTree = ""; }; @@ -196,7 +193,6 @@ B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+FileExtension.swift"; sourceTree = ""; }; B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkSessionMock.swift; sourceTree = ""; }; B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLSessionDataTaskMock.swift; sourceTree = ""; }; - B576FE2721E423E60016B39D /* Dictionary+StringOrEmpty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+StringOrEmpty.swift"; sourceTree = ""; }; B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppInfoFormatter.swift; sourceTree = ""; }; B576FE2B21E42A230016B39D /* OutputListener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OutputListener.swift; sourceTree = ""; }; B576FE2D21E5A8010016B39D /* Strongify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Strongify.swift; sourceTree = ""; }; @@ -348,7 +344,6 @@ isa = PBXGroup; children = ( B576FE0321E113E90016B39D /* NetworkManager.swift */, - B576FE0721E114A80016B39D /* NetworkResult.swift */, B576FDFF21E113610016B39D /* NetworkSession.swift */, B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */, ); @@ -407,7 +402,6 @@ B576FE1F21E290720016B39D /* Extensions */ = { isa = PBXGroup; children = ( - B576FE2721E423E60016B39D /* Dictionary+StringOrEmpty.swift */, B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */, ); path = Extensions; @@ -524,14 +518,30 @@ path = Models; sourceTree = ""; }; - ED031A6F1B5127C00097692E = { + C56F16DB2637711100EAC548 /* Sources */ = { isa = PBXGroup; children = ( - EDFC76381B642A2E00D0DBD7 /* Frameworks */, ED031A7A1B5127C00097692E /* mas */, F8FB715320F2B41400F56FDC /* MasKit */, - F8FB715E20F2B41400F56FDC /* MasKitTests */, F8FB719920F2EC4500F56FDC /* PrivateFrameworks */, + ); + path = Sources; + sourceTree = ""; + }; + C56F16DC2637711900EAC548 /* Tests */ = { + isa = PBXGroup; + children = ( + F8FB715E20F2B41400F56FDC /* MasKitTests */, + ); + path = Tests; + sourceTree = ""; + }; + ED031A6F1B5127C00097692E = { + isa = PBXGroup; + children = ( + EDFC76381B642A2E00D0DBD7 /* Frameworks */, + C56F16DB2637711100EAC548 /* Sources */, + C56F16DC2637711900EAC548 /* Tests */, ED031A791B5127C00097692E /* Products */, ); sourceTree = ""; @@ -917,7 +927,6 @@ B594B12721D5825800F3AC59 /* AppLibrary.swift in Sources */, F85DA8B2240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift in Sources */, B594B12B21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift in Sources */, - B576FE2821E423E60016B39D /* Dictionary+StringOrEmpty.swift in Sources */, F8FB716A20F2B4DD00F56FDC /* Downloader.swift in Sources */, B588CE0221DC89490047D305 /* ExternalCommand.swift in Sources */, B594B14C21D8983700F3AC59 /* Home.swift in Sources */, @@ -930,7 +939,6 @@ F8FB717B20F2B4DD00F56FDC /* MASError.swift in Sources */, B594B15221D89A8B00F3AC59 /* MasStoreSearch.swift in Sources */, B576FE0421E113E90016B39D /* NetworkManager.swift in Sources */, - B576FE0821E114A80016B39D /* NetworkResult.swift in Sources */, B576FE0021E113610016B39D /* NetworkSession.swift in Sources */, B5DBF80D21DEE4E600F3B151 /* Open.swift in Sources */, B576FDF721E107AA0016B39D /* OpenSystemCommand.swift in Sources */, @@ -1150,7 +1158,7 @@ CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - INFOPLIST_FILE = "mas/mas-Info.plist"; + INFOPLIST_FILE = "Sources/mas/mas-Info.plist"; INSTALL_PATH = /bin; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/.", @@ -1175,7 +1183,7 @@ COPY_PHASE_STRIP = NO; DEPLOYMENT_LOCATION = YES; GCC_SYMBOLS_PRIVATE_EXTERN = NO; - INFOPLIST_FILE = "mas/mas-Info.plist"; + INFOPLIST_FILE = "Sources/mas/mas-Info.plist"; INSTALL_PATH = /bin; LD_RUNPATH_SEARCH_PATHS = ( "@executable_path/.", @@ -1214,7 +1222,7 @@ FRAMEWORK_SEARCH_PATHS = "$(inherited)"; FRAMEWORK_VERSION = A; GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MasKit/SupportingFiles/Info.plist; + INFOPLIST_FILE = Sources/MasKit/SupportingFiles/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -1225,7 +1233,7 @@ PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKit; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/PrivateFrameworks/CommerceKit $(SRCROOT)/PrivateFrameworks/StoreFoundation"; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Sources/PrivateFrameworks/CommerceKit $(SRCROOT)/Sources/PrivateFrameworks/StoreFoundation"; }; name = Debug; }; @@ -1249,7 +1257,7 @@ FRAMEWORK_SEARCH_PATHS = "$(inherited)"; FRAMEWORK_VERSION = A; GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MasKit/SupportingFiles/Info.plist; + INFOPLIST_FILE = Sources/MasKit/SupportingFiles/Info.plist; INSTALL_PATH = /Frameworks; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1260,7 +1268,7 @@ PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKit; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/PrivateFrameworks/CommerceKit $(SRCROOT)/PrivateFrameworks/StoreFoundation"; + SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Sources/PrivateFrameworks/CommerceKit $(SRCROOT)/Sources/PrivateFrameworks/StoreFoundation"; SWIFT_OPTIMIZATION_LEVEL = "-O"; }; name = Release; @@ -1281,7 +1289,7 @@ COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MasKitTests/SupportingFiles/Info.plist; + INFOPLIST_FILE = Tests/MasKitTests/SupportingFiles/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -1313,7 +1321,7 @@ COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MasKitTests/SupportingFiles/Info.plist; + INFOPLIST_FILE = Tests/MasKitTests/SupportingFiles/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", diff --git a/script/lint b/script/lint index 82357e095..469a62041 100755 --- a/script/lint +++ b/script/lint @@ -24,11 +24,11 @@ git diff --check echo echo "--> 🕊️ Swift" -swiftformat --lint . -for SOURCE in mas MasKit MasKitTests; do +for SOURCE in Sources Tests; do + swiftformat --lint ${SOURCE} swift-format lint --configuration .swift-format --recursive ${SOURCE} + swiftlint lint --strict ${SOURCE} done -swiftlint lint --strict echo echo "--> 📜 Bash" diff --git a/script/update_headers b/script/update_headers index 9fa816848..0fabab6ac 100755 --- a/script/update_headers +++ b/script/update_headers @@ -24,7 +24,7 @@ check_class_dump() { extract_private_framework_headers() { local framework_name="$1" shift - local directory="PrivateFrameworks/${framework_name}" + local directory="Sources/PrivateFrameworks/${framework_name}" mkdir -p "$directory" class-dump -Ho "$directory" "/System/Library/PrivateFrameworks/${framework_name}.framework" } From 7a7f36ad9b4ec46667e1b338ebc0a40215e4d8d5 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Mon, 26 Apr 2021 16:44:17 -0700 Subject: [PATCH 03/33] =?UTF-8?q?=F0=9F=93=A6=20Declare=20mas=20as=20a=20S?= =?UTF-8?q?wift=20Package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + Package.resolved | 61 ++++++++++++++++ Package.swift | 73 +++++++++++++++++++ Sources/MasKit/Commands/Open.swift | 1 + Sources/MasKit/Commands/Outdated.swift | 1 + Sources/MasKit/Commands/Upgrade.swift | 1 + Sources/MasKit/Commands/Version.swift | 1 + .../Commands/OpenCommandSpec.swift | 1 + .../Commands/UninstallCommandSpec.swift | 1 + .../MasKitTests/Extensions/Bundle+JSON.swift | 16 ++-- .../Models/SearchResultListSpec.swift | 1 + .../MasKitTests/Models/SearchResultSpec.swift | 1 + .../Network/NetworkSessionMock.swift | 1 + mas-cli.xcodeproj/project.pbxproj | 2 + script/lint | 2 +- 15 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 Package.resolved create mode 100644 Package.swift diff --git a/.gitignore b/.gitignore index 5621b3e6d..3b099ac7a 100644 --- a/.gitignore +++ b/.gitignore @@ -22,9 +22,11 @@ .VolumeIcon.icns ._* .apdisk +.build/ .envrc .fseventsd .rubygems/ +.swiftpm/ Carthage/ DerivedData Pods/ diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 000000000..e66dde2e5 --- /dev/null +++ b/Package.resolved @@ -0,0 +1,61 @@ +{ + "object": { + "pins": [ + { + "package": "Commandant", + "repositoryURL": "https://github.com/Carthage/Commandant.git", + "state": { + "branch": null, + "revision": "a1671cf728db837cf5ec1980a80d276bbba748f6", + "version": "0.18.0" + } + }, + { + "package": "CwlCatchException", + "repositoryURL": "https://github.com/mattgallagher/CwlCatchException.git", + "state": { + "branch": null, + "revision": "f809deb30dc5c9d9b78c872e553261a61177721a", + "version": "2.0.0" + } + }, + { + "package": "CwlPreconditionTesting", + "repositoryURL": "https://github.com/mattgallagher/CwlPreconditionTesting.git", + "state": { + "branch": null, + "revision": "02b7a39a99c4da27abe03cab2053a9034379639f", + "version": "2.0.0" + } + }, + { + "package": "Nimble", + "repositoryURL": "https://github.com/Quick/Nimble.git", + "state": { + "branch": null, + "revision": "7a54aaf19a8ef16f67787c260fda81ead7ba4d67", + "version": "9.0.1" + } + }, + { + "package": "Quick", + "repositoryURL": "https://github.com/Quick/Quick.git", + "state": { + "branch": null, + "revision": "8cce6acd38f965f5baa3167b939f86500314022b", + "version": "3.1.2" + } + }, + { + "package": "Version", + "repositoryURL": "https://github.com/mxcl/Version.git", + "state": { + "branch": null, + "revision": "a94b48f36763c05629fc102837398505032dead9", + "version": "2.0.0" + } + } + ] + }, + "version": 1 +} diff --git a/Package.swift b/Package.swift new file mode 100644 index 000000000..7b7c8e99b --- /dev/null +++ b/Package.swift @@ -0,0 +1,73 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "mas", + platforms: [ + .macOS(.v10_11), + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .executable( + name: "mas", + targets: ["mas"] + ), + .library( + name: "MasKit", + targets: ["MasKit"] + ), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/Carthage/Commandant.git", from: "0.18.0"), + .package(url: "https://github.com/Quick/Nimble.git", from: "9.0.1"), + .package(url: "https://github.com/Quick/Quick.git", from: "3.1.2"), + .package(url: "https://github.com/mxcl/Version.git", from: "2.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "mas", + dependencies: ["MasKit"], + swiftSettings: [ + .unsafeFlags([ + "-F", "/System/Library/PrivateFrameworks", + "-I", "Sources/PrivateFrameworks/CommerceKit", + "-I", "Sources/PrivateFrameworks/StoreFoundation", + ]), + ] + ), + .target( + name: "MasKit", + dependencies: ["Commandant", "Version"], + swiftSettings: [ + .unsafeFlags([ + "-F", "/System/Library/PrivateFrameworks", + "-I", "Sources/PrivateFrameworks/CommerceKit", + "-I", "Sources/PrivateFrameworks/StoreFoundation", + ]), + ], + linkerSettings: [ + .linkedFramework("CommerceKit"), + .linkedFramework("StoreFoundation"), + .unsafeFlags(["-F", "/System/Library/PrivateFrameworks"]), + ] + ), + .testTarget( + name: "MasKitTests", + dependencies: ["MasKit", "Nimble", "Quick"], + resources: [.copy("JSON")], + swiftSettings: [ + .unsafeFlags([ + "-F", "/System/Library/PrivateFrameworks", + "-I", "Sources/PrivateFrameworks/CommerceKit", + "-I", "Sources/PrivateFrameworks/StoreFoundation", + ]), + ] + ), + ], + swiftLanguageVersions: [.v5] +) diff --git a/Sources/MasKit/Commands/Open.swift b/Sources/MasKit/Commands/Open.swift index 732c1448a..8394ac3a9 100644 --- a/Sources/MasKit/Commands/Open.swift +++ b/Sources/MasKit/Commands/Open.swift @@ -7,6 +7,7 @@ // import Commandant +import Foundation private let markerValue = "appstore" private let masScheme = "macappstore" diff --git a/Sources/MasKit/Commands/Outdated.swift b/Sources/MasKit/Commands/Outdated.swift index dbba1e7cb..e8f5f0053 100644 --- a/Sources/MasKit/Commands/Outdated.swift +++ b/Sources/MasKit/Commands/Outdated.swift @@ -7,6 +7,7 @@ // import Commandant +import Foundation /// Command which displays a list of installed apps which have available updates /// ready to be installed from the Mac App Store. diff --git a/Sources/MasKit/Commands/Upgrade.swift b/Sources/MasKit/Commands/Upgrade.swift index baf09c259..b243d8e32 100644 --- a/Sources/MasKit/Commands/Upgrade.swift +++ b/Sources/MasKit/Commands/Upgrade.swift @@ -7,6 +7,7 @@ // import Commandant +import Foundation /// Command which upgrades apps with new versions available in the Mac App Store. public struct UpgradeCommand: CommandProtocol { diff --git a/Sources/MasKit/Commands/Version.swift b/Sources/MasKit/Commands/Version.swift index bdf3c608e..d74b35b16 100644 --- a/Sources/MasKit/Commands/Version.swift +++ b/Sources/MasKit/Commands/Version.swift @@ -7,6 +7,7 @@ // import Commandant +import Foundation /// Command which displays the version of the mas tool. public struct VersionCommand: CommandProtocol { diff --git a/Tests/MasKitTests/Commands/OpenCommandSpec.swift b/Tests/MasKitTests/Commands/OpenCommandSpec.swift index 97c2ec5e9..97383e7f6 100644 --- a/Tests/MasKitTests/Commands/OpenCommandSpec.swift +++ b/Tests/MasKitTests/Commands/OpenCommandSpec.swift @@ -6,6 +6,7 @@ // Copyright © 2019 mas-cli. All rights reserved. // +import Foundation import Nimble import Quick diff --git a/Tests/MasKitTests/Commands/UninstallCommandSpec.swift b/Tests/MasKitTests/Commands/UninstallCommandSpec.swift index f988eba6e..eeef61a73 100644 --- a/Tests/MasKitTests/Commands/UninstallCommandSpec.swift +++ b/Tests/MasKitTests/Commands/UninstallCommandSpec.swift @@ -6,6 +6,7 @@ // Copyright © 2018 mas-cli. All rights reserved. // +import Foundation import Nimble import Quick diff --git a/Tests/MasKitTests/Extensions/Bundle+JSON.swift b/Tests/MasKitTests/Extensions/Bundle+JSON.swift index b05bb558a..ef0129f12 100644 --- a/Tests/MasKitTests/Extensions/Bundle+JSON.swift +++ b/Tests/MasKitTests/Extensions/Bundle+JSON.swift @@ -24,7 +24,13 @@ extension Bundle { /// - Parameter fileName: Name of file to locate. /// - Returns: URL to file. static func url(for fileName: String) -> URL? { - Bundle(for: NetworkSessionMock.self).url(for: fileName) + var bundle = Bundle(for: NetworkSessionMock.self) + #if SWIFT_PACKAGE + // The Swift Package Manager places resources in a separate bundle from the executable. + bundle = + Bundle(url: bundle.bundleURL.deletingLastPathComponent().appendingPathComponent("mas_MasKitTests.bundle"))! + #endif + return bundle.url(for: fileName) } /// Builds a URL for a file in the JSON directory of the current bundle. @@ -33,13 +39,13 @@ extension Bundle { /// - Returns: URL to file. func url(for fileName: String) -> URL? { guard - let path = self.path( + let url = self.url( forResource: fileName.fileNameWithoutExtension, - ofType: fileName.fileExtension, - inDirectory: "JSON" + withExtension: fileName.fileExtension, + subdirectory: "JSON" ) else { fatalError("Unable to load file \(fileName)") } - return URL(fileURLWithPath: path) + return url } } diff --git a/Tests/MasKitTests/Models/SearchResultListSpec.swift b/Tests/MasKitTests/Models/SearchResultListSpec.swift index 8df863ea2..14e90f238 100644 --- a/Tests/MasKitTests/Models/SearchResultListSpec.swift +++ b/Tests/MasKitTests/Models/SearchResultListSpec.swift @@ -6,6 +6,7 @@ // Copyright © 2020 mas-cli. All rights reserved. // +import Foundation import Nimble import Quick diff --git a/Tests/MasKitTests/Models/SearchResultSpec.swift b/Tests/MasKitTests/Models/SearchResultSpec.swift index c9933d917..16d69d29a 100644 --- a/Tests/MasKitTests/Models/SearchResultSpec.swift +++ b/Tests/MasKitTests/Models/SearchResultSpec.swift @@ -6,6 +6,7 @@ // Copyright © 2020 mas-cli. All rights reserved. // +import Foundation import Nimble import Quick diff --git a/Tests/MasKitTests/Network/NetworkSessionMock.swift b/Tests/MasKitTests/Network/NetworkSessionMock.swift index a3e2f526a..f168cfdba 100644 --- a/Tests/MasKitTests/Network/NetworkSessionMock.swift +++ b/Tests/MasKitTests/Network/NetworkSessionMock.swift @@ -7,6 +7,7 @@ // import Foundation + @testable import MasKit /// Mock NetworkSession for testing. diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj index ccb3010e7..0d3fac8ab 100644 --- a/mas-cli.xcodeproj/project.pbxproj +++ b/mas-cli.xcodeproj/project.pbxproj @@ -234,6 +234,7 @@ B5DBF81221DEEC7C00F3B151 /* OpenCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenCommandSpec.swift; sourceTree = ""; }; B5DBF81421E02BA900F3B151 /* StoreSearchMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreSearchMock.swift; sourceTree = ""; }; B5DBF81621E02E3400F3B151 /* OpenSystemCommandMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSystemCommandMock.swift; sourceTree = ""; }; + C56F16DF2637825300EAC548 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; ED031A781B5127C00097692E /* mas */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mas; sourceTree = BUILT_PRODUCTS_DIR; }; ED031A7B1B5127C00097692E /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; ED0F237E1B87522400AE40CD /* Install.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Install.swift; sourceTree = ""; }; @@ -543,6 +544,7 @@ C56F16DB2637711100EAC548 /* Sources */, C56F16DC2637711900EAC548 /* Tests */, ED031A791B5127C00097692E /* Products */, + C56F16DF2637825300EAC548 /* Package.swift */, ); sourceTree = ""; }; diff --git a/script/lint b/script/lint index 469a62041..93503abc2 100755 --- a/script/lint +++ b/script/lint @@ -24,7 +24,7 @@ git diff --check echo echo "--> 🕊️ Swift" -for SOURCE in Sources Tests; do +for SOURCE in Package.swift Sources Tests; do swiftformat --lint ${SOURCE} swift-format lint --configuration .swift-format --recursive ${SOURCE} swiftlint lint --strict ${SOURCE} From 944a87301208af4ad02378dda8193430dd6395a2 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Tue, 27 Apr 2021 15:23:17 -0700 Subject: [PATCH 04/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Remove=20previously?= =?UTF-8?q?=20removed=20headers=20from=20Xcode=20project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mas-cli.xcodeproj/project.pbxproj | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj index 0d3fac8ab..da6bd87cb 100644 --- a/mas-cli.xcodeproj/project.pbxproj +++ b/mas-cli.xcodeproj/project.pbxproj @@ -82,19 +82,15 @@ F832138C2173D3E1008BA8A0 /* CKPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */; }; F832138D2173D3E1008BA8A0 /* CKServiceInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */; }; F832138E2173D3E1008BA8A0 /* CKSoftwareMap.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */; }; - F832138F2173D3E1008BA8A0 /* CKUpdateController.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A020F2EC4500F56FDC /* CKUpdateController.h */; }; - F83213902173D3E1008BA8A0 /* ISStoreURLOperationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A120F2EC4500F56FDC /* ISStoreURLOperationDelegate.h */; }; F83213912173D3E1008BA8A0 /* CKDownloadDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B620F2F87300F56FDC /* CKDownloadDirectory.h */; }; F83213922173D5AB008BA8A0 /* CKSoftwareProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */; }; F83213932173D5AB008BA8A0 /* CKUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A420F2EC4500F56FDC /* CKUpdate.h */; }; F83213942173D5AB008BA8A0 /* ISAccountService.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A520F2EC4500F56FDC /* ISAccountService.h */; }; F83213952173D5AB008BA8A0 /* ISAuthenticationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */; }; - F83213962173D5AB008BA8A0 /* ISOperationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A720F2EC4500F56FDC /* ISOperationDelegate.h */; }; F83213972173D5AB008BA8A0 /* ISServiceProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */; }; F83213982173D5AB008BA8A0 /* ISServiceRemoteObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */; }; F83213992173D5AB008BA8A0 /* ISStoreAccount.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */; }; F832139A2173D5AB008BA8A0 /* ISStoreClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */; }; - F832139B2173D5AB008BA8A0 /* ISURLOperationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AC20F2EC4500F56FDC /* ISURLOperationDelegate.h */; }; F832139C2173D5B2008BA8A0 /* SSDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AD20F2EC4500F56FDC /* SSDownload.h */; }; F832139D2173D5B2008BA8A0 /* SSDownloadMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */; }; F832139E2173D5B2008BA8A0 /* SSDownloadPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */; }; @@ -275,18 +271,14 @@ F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKPurchaseController.h; sourceTree = ""; }; F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKServiceInterface.h; sourceTree = ""; }; F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKSoftwareMap.h; sourceTree = ""; }; - F8FB71A020F2EC4500F56FDC /* CKUpdateController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKUpdateController.h; sourceTree = ""; }; - F8FB71A120F2EC4500F56FDC /* ISStoreURLOperationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreURLOperationDelegate.h; sourceTree = ""; }; F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKSoftwareProduct.h; sourceTree = ""; }; F8FB71A420F2EC4500F56FDC /* CKUpdate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKUpdate.h; sourceTree = ""; }; F8FB71A520F2EC4500F56FDC /* ISAccountService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISAccountService.h; sourceTree = ""; }; F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISAuthenticationContext.h; sourceTree = ""; }; - F8FB71A720F2EC4500F56FDC /* ISOperationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISOperationDelegate.h; sourceTree = ""; }; F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISServiceProxy.h; sourceTree = ""; }; F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISServiceRemoteObject.h; sourceTree = ""; }; F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreAccount.h; sourceTree = ""; }; F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreClient.h; sourceTree = ""; }; - F8FB71AC20F2EC4500F56FDC /* ISURLOperationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISURLOperationDelegate.h; sourceTree = ""; }; F8FB71AD20F2EC4500F56FDC /* SSDownload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownload.h; sourceTree = ""; }; F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadMetadata.h; sourceTree = ""; }; F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadPhase.h; sourceTree = ""; }; @@ -672,8 +664,6 @@ F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */, F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */, F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */, - F8FB71A020F2EC4500F56FDC /* CKUpdateController.h */, - F8FB71A120F2EC4500F56FDC /* ISStoreURLOperationDelegate.h */, F8FB71B320F2EC7900F56FDC /* module.modulemap */, ); path = CommerceKit; @@ -687,12 +677,10 @@ F8FB71A520F2EC4500F56FDC /* ISAccountService.h */, F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */, B578F060224FB5BD00D2086A /* ISAuthenticationResponse.h */, - F8FB71A720F2EC4500F56FDC /* ISOperationDelegate.h */, F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */, F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */, F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */, F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */, - F8FB71AC20F2EC4500F56FDC /* ISURLOperationDelegate.h */, F8FB71B420F2EC8800F56FDC /* module.modulemap */, F8FB71AD20F2EC4500F56FDC /* SSDownload.h */, F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */, @@ -720,17 +708,13 @@ F832138E2173D3E1008BA8A0 /* CKSoftwareMap.h in Headers */, F83213922173D5AB008BA8A0 /* CKSoftwareProduct.h in Headers */, F83213932173D5AB008BA8A0 /* CKUpdate.h in Headers */, - F832138F2173D3E1008BA8A0 /* CKUpdateController.h in Headers */, F83213942173D5AB008BA8A0 /* ISAccountService.h in Headers */, F83213952173D5AB008BA8A0 /* ISAuthenticationContext.h in Headers */, B578F061224FB5BD00D2086A /* ISAuthenticationResponse.h in Headers */, - F83213962173D5AB008BA8A0 /* ISOperationDelegate.h in Headers */, F83213972173D5AB008BA8A0 /* ISServiceProxy.h in Headers */, F83213982173D5AB008BA8A0 /* ISServiceRemoteObject.h in Headers */, F83213992173D5AB008BA8A0 /* ISStoreAccount.h in Headers */, F832139A2173D5AB008BA8A0 /* ISStoreClient.h in Headers */, - F83213902173D3E1008BA8A0 /* ISStoreURLOperationDelegate.h in Headers */, - F832139B2173D5AB008BA8A0 /* ISURLOperationDelegate.h in Headers */, F8FB716220F2B41400F56FDC /* MasKit.h in Headers */, F832139C2173D5B2008BA8A0 /* SSDownload.h in Headers */, F832139D2173D5B2008BA8A0 /* SSDownloadMetadata.h in Headers */, From f0bf27a821a3ba56c76a170a8422f7ebd338f07f Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Tue, 27 Apr 2021 15:30:28 -0700 Subject: [PATCH 05/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Remove=20redundant?= =?UTF-8?q?=20declarations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Controllers/AppLibrary.swift | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Sources/MasKit/Controllers/AppLibrary.swift b/Sources/MasKit/Controllers/AppLibrary.swift index c02bf40d4..ac5ade453 100644 --- a/Sources/MasKit/Controllers/AppLibrary.swift +++ b/Sources/MasKit/Controllers/AppLibrary.swift @@ -19,18 +19,6 @@ protocol AppLibrary { /// - Returns: Software Product of app if found; nil otherwise. func installedApp(forId: UInt64) -> SoftwareProduct? - /// Finds an app by it's bundle identifier. - /// - /// - Parameter forBundleId: Bundle identifier of app. - /// - Returns: Software Product of app if found; nil otherwise. - func installedApp(forBundleId: String) -> SoftwareProduct? - - /// Finds an app by name. - /// - /// - Parameter named: Name of app. - /// - Returns: Software Product of app if found; nil otherwise. - func installedApp(named: String) -> SoftwareProduct? - /// Uninstalls an app. /// /// - Parameter app: App to be removed. From 0a506b1ebee8fc61a49b398c2db2f402cf3f10bc Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Tue, 27 Apr 2021 15:31:35 -0700 Subject: [PATCH 06/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Simplify=20max=20ide?= =?UTF-8?q?ntifier=20length=20calculation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Formatters/AppListFormatter.swift | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Sources/MasKit/Formatters/AppListFormatter.swift b/Sources/MasKit/Formatters/AppListFormatter.swift index b1e06ce01..e3a635075 100644 --- a/Sources/MasKit/Formatters/AppListFormatter.swift +++ b/Sources/MasKit/Formatters/AppListFormatter.swift @@ -19,11 +19,7 @@ struct AppListFormatter { /// - Returns: Multiliune text outoutp. static func format(products: [SoftwareProduct]) -> String { // find longest appName for formatting, default 50 - let maxLength = - products.map(\.appNameOrBbundleIdentifier) - .max(by: { $1.count > $0.count })? - .count - ?? nameColumnMinWidth + let maxLength = products.map(\.appNameOrBbundleIdentifier.count).max() ?? nameColumnMinWidth var output: String = "" From 2cf5ce301390078d079479ffe6f3609030b54ba6 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Tue, 27 Apr 2021 15:33:49 -0700 Subject: [PATCH 07/33] =?UTF-8?q?=E2=8C=A8=EF=B8=8F=20Fix=20typo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Formatters/AppListFormatter.swift | 4 ++-- Sources/MasKit/Models/SoftwareProduct.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/MasKit/Formatters/AppListFormatter.swift b/Sources/MasKit/Formatters/AppListFormatter.swift index e3a635075..778ae40b1 100644 --- a/Sources/MasKit/Formatters/AppListFormatter.swift +++ b/Sources/MasKit/Formatters/AppListFormatter.swift @@ -19,14 +19,14 @@ struct AppListFormatter { /// - Returns: Multiliune text outoutp. static func format(products: [SoftwareProduct]) -> String { // find longest appName for formatting, default 50 - let maxLength = products.map(\.appNameOrBbundleIdentifier.count).max() ?? nameColumnMinWidth + let maxLength = products.map(\.appNameOrBundleIdentifier.count).max() ?? nameColumnMinWidth var output: String = "" for product in products { let appId = product.itemIdentifier.stringValue .padding(toLength: idColumnMinWidth, withPad: " ", startingAt: 0) - let appName = product.appNameOrBbundleIdentifier.padding(toLength: maxLength, withPad: " ", startingAt: 0) + let appName = product.appNameOrBundleIdentifier.padding(toLength: maxLength, withPad: " ", startingAt: 0) let version = product.bundleVersion output += "\(appId) \(appName) (\(version))\n" diff --git a/Sources/MasKit/Models/SoftwareProduct.swift b/Sources/MasKit/Models/SoftwareProduct.swift index de232d3a3..bf6afd047 100644 --- a/Sources/MasKit/Models/SoftwareProduct.swift +++ b/Sources/MasKit/Models/SoftwareProduct.swift @@ -29,7 +29,7 @@ extension SoftwareProduct { } /// Returns bundleIdentifier if appName is empty string. - var appNameOrBbundleIdentifier: String { + var appNameOrBundleIdentifier: String { appName == "" ? bundleIdentifier : appName } From 65b37638828f0d13d8f67139b0bbf38e814a3841 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Tue, 27 Apr 2021 15:36:13 -0700 Subject: [PATCH 08/33] =?UTF-8?q?=F0=9F=A7=B9=20Prefer=20isEmpty=20to=20eq?= =?UTF-8?q?uality=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Commands/SignIn.swift | 2 +- Sources/MasKit/Models/SoftwareProduct.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/MasKit/Commands/SignIn.swift b/Sources/MasKit/Commands/SignIn.swift index bb595f4b4..77fc12810 100644 --- a/Sources/MasKit/Commands/SignIn.swift +++ b/Sources/MasKit/Commands/SignIn.swift @@ -31,7 +31,7 @@ public struct SignInCommand: CommandProtocol { printInfo("Signing in to Apple ID: \(options.username)") let password: String = { - if options.password == "", !options.dialog { + if options.password.isEmpty, !options.dialog { return String(validatingUTF8: getpass("Password: "))! } return options.password diff --git a/Sources/MasKit/Models/SoftwareProduct.swift b/Sources/MasKit/Models/SoftwareProduct.swift index bf6afd047..6c5d129ba 100644 --- a/Sources/MasKit/Models/SoftwareProduct.swift +++ b/Sources/MasKit/Models/SoftwareProduct.swift @@ -30,7 +30,7 @@ extension SoftwareProduct { /// Returns bundleIdentifier if appName is empty string. var appNameOrBundleIdentifier: String { - appName == "" ? bundleIdentifier : appName + appName.isEmpty ? bundleIdentifier : appName } func isOutdatedWhenComparedTo(_ storeApp: SearchResult) -> Bool { From 5df17f782383b2254b147ea2b1b0adf4a07772c5 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 12:20:40 -0700 Subject: [PATCH 09/33] =?UTF-8?q?=F0=9F=93=A6=20Embed=20version=20string?= =?UTF-8?q?=20as=20Swift=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Commands/Version.swift | 6 +----- Sources/MasKit/SupportingFiles/Package.swift | 4 ++++ mas-cli.xcodeproj/project.pbxproj | 4 ++++ script/version | 12 +++++++++++- 4 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 Sources/MasKit/SupportingFiles/Package.swift diff --git a/Sources/MasKit/Commands/Version.swift b/Sources/MasKit/Commands/Version.swift index d74b35b16..8feaf482d 100644 --- a/Sources/MasKit/Commands/Version.swift +++ b/Sources/MasKit/Commands/Version.swift @@ -7,7 +7,6 @@ // import Commandant -import Foundation /// Command which displays the version of the mas tool. public struct VersionCommand: CommandProtocol { @@ -19,10 +18,7 @@ public struct VersionCommand: CommandProtocol { /// Runs the command. public func run(_: Options) -> Result { - let plist = Bundle.main.infoDictionary - if let versionString = plist?["CFBundleShortVersionString"] { - print(versionString) - } + print(Package.Version) return .success(()) } } diff --git a/Sources/MasKit/SupportingFiles/Package.swift b/Sources/MasKit/SupportingFiles/Package.swift new file mode 100644 index 000000000..9014cdb30 --- /dev/null +++ b/Sources/MasKit/SupportingFiles/Package.swift @@ -0,0 +1,4 @@ +// Generated by: script/version +enum Package { + static let Version = "1.8.1" +} diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj index da6bd87cb..841b586eb 100644 --- a/mas-cli.xcodeproj/project.pbxproj +++ b/mas-cli.xcodeproj/project.pbxproj @@ -73,6 +73,7 @@ C56F16DA26376C4B00EAC548 /* Quick in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16D926376C4B00EAC548 /* Quick */; }; C56F16E92637C2B300EAC548 /* Version in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16E82637C2B300EAC548 /* Version */; }; C56F16EC2637C2C600EAC548 /* Commandant in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16EB2637C2C600EAC548 /* Commandant */; }; + C56F16EF2639EC0C00EAC548 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56F16ED2639EBF700EAC548 /* Package.swift */; }; ED031A7C1B5127C00097692E /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED031A7B1B5127C00097692E /* main.swift */; }; F80B27B62611116A00A285C9 /* AppListFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80B27B52611116A00A285C9 /* AppListFormatterSpec.swift */; }; F80B27BA2611118E00A285C9 /* AppListFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80B27B92611118E00A285C9 /* AppListFormatter.swift */; }; @@ -231,6 +232,7 @@ B5DBF81421E02BA900F3B151 /* StoreSearchMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreSearchMock.swift; sourceTree = ""; }; B5DBF81621E02E3400F3B151 /* OpenSystemCommandMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSystemCommandMock.swift; sourceTree = ""; }; C56F16DF2637825300EAC548 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; + C56F16ED2639EBF700EAC548 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; ED031A781B5127C00097692E /* mas */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mas; sourceTree = BUILT_PRODUCTS_DIR; }; ED031A7B1B5127C00097692E /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; ED0F237E1B87522400AE40CD /* Install.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Install.swift; sourceTree = ""; }; @@ -456,6 +458,7 @@ children = ( F8FB715520F2B41400F56FDC /* Info.plist */, F8FB715420F2B41400F56FDC /* MasKit.h */, + C56F16ED2639EBF700EAC548 /* Package.swift */, ); path = SupportingFiles; sourceTree = ""; @@ -928,6 +931,7 @@ B576FE0021E113610016B39D /* NetworkSession.swift in Sources */, B5DBF80D21DEE4E600F3B151 /* Open.swift in Sources */, B576FDF721E107AA0016B39D /* OpenSystemCommand.swift in Sources */, + C56F16EF2639EC0C00EAC548 /* Package.swift in Sources */, F8FB717420F2B4DD00F56FDC /* Outdated.swift in Sources */, 75FB3E761F9F7841005B6F20 /* Purchase.swift in Sources */, F80B27BA2611118E00A285C9 /* AppListFormatter.swift in Sources */, diff --git a/script/version b/script/version index 46f41e7ee..9657db8aa 100755 --- a/script/version +++ b/script/version @@ -9,4 +9,14 @@ # This no longer works with MARKETING_VERSION build setting in Info.plist # agvtool what-marketing-version -terse1 -echo "1.8.1" +VERSION="1.8.1" + +SCRIPT_PATH=$(dirname $(which $0)) +cat <"${SCRIPT_PATH}/../Sources/MasKit/SupportingFiles/Package.swift" +// Generated by: script/version +enum Package { + static let Version = "${VERSION}" +} +EOF + +echo ${VERSION} From c93694017fdfc4c989c556bde4fae03086c665a3 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:49:54 -0700 Subject: [PATCH 10/33] =?UTF-8?q?=F0=9F=93=9C=20Build=20Swift=20Package=20?= =?UTF-8?q?from=20scripts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/archive | 21 ++++------------ script/bottle | 4 ++-- script/build | 62 ++++-------------------------------------------- script/clean | 13 +++------- script/install | 38 +++++------------------------ script/test | 30 ++--------------------- script/uninstall | 1 - 7 files changed, 22 insertions(+), 147 deletions(-) diff --git a/script/archive b/script/archive index 4e079290f..1f405726b 100755 --- a/script/archive +++ b/script/archive @@ -6,21 +6,8 @@ # Compresses artifacts so the can be archived more easily. # -pushd build +echo "==> 🗜️ Compressing mas" +zip .build/mas.zip .build/apple/Products/Release/mas -echo "==> 🗜️ Compressing mas.xcarchive" -zip -r mas.xcarchive.zip mas.xcarchive - -echo "==> ️🗜️ Compressing binary and framework" -pushd mas.xcarchive/Products -zip -r \ - mas-cli.zip \ - bin/mas \ - Frameworks/MasKit.framework -mv mas-cli.zip ../../ -popd - -echo "==> 🔢 Files Hashes" -shasum -a 256 mas-cli.zip mas.xcarchive.zip - -popd +echo "==> 🔢 File Hash" +shasum -a 256 .build/mas.zip diff --git a/script/bottle b/script/bottle index f68bb4bee..8f5a5e7f6 100755 --- a/script/bottle +++ b/script/bottle @@ -12,12 +12,12 @@ # Variables # -BUILD_DIR="$PWD/build" +BUILD_DIR="$PWD/.build" BOTTLE_DIR="$BUILD_DIR/bottles" VERSION=$(script/version) ROOT_URL="https://dl.bintray.com/phatblat/mas-bottles" -# Supports macOS versions 11.0 (arm64 & x86_64), 10.15, 10.14, 10.13, 10.12, 10.11 +# Supports macOS versions 11 (arm64 & x86_64), 10.15, 10.14, 10.13, 10.12, 10.11 OS_NAMES=(arm64_big_sur big_sur catalina mojave high_sierra sierra el_capitan) # Semantic version number split into a list using Ugly, bash 3 compatible syntax diff --git a/script/build b/script/build index 605027ea8..702c77dfc 100755 --- a/script/build +++ b/script/build @@ -3,63 +3,11 @@ # script/build # mas # -# Builds the Xcode project. Uses xcpretty gem to format output. +# Builds the Swift Package. # -# If the TRAVIS_TAG env variable is present, it generates an archive. -# https://docs.travis-ci.com/user/environment-variables/#default-environment-variables -# - -BUILD_DIR="$PWD/build" -WORKSPACE="mas.xcworkspace" -SCHEME="mas-cli Release" -CONFIG="Release" -VERSION=$(script/version) - -main() { - xcodebuild -version - script/clean - - archive -} - -# OBJROOT - Intermediate Build Files Path -# The path where intermediate files will be placed during a build. Intermediate files include generated sources, object -# files, etc. Shell script build phases can place and access files here, as well. Typically this path is not set per -# target, but is set per project or per user. By default, this is set to `$(PROJECT_DIR)/build`. - -# SHARED_PRECOMPS_DIR - Precompiled Headers Cache Path -# The path where precompiled prefix header files are placed during a build. Defaults to `$(OBJROOT)/SharedPrecompiledHeaders`. -# Using a common location allows precompiled headers to be shared between multiple projects. - -# SYMROOT - Build Procucts Path -# The path at which all products will be placed when performing a build. Typically this path is not set per target, -# but is set per-project or per-user. By default, this is set to `$(PROJECT_DIR)/build`. - -build() { - echo "==> 🏗️ Building mas ($VERSION)" - set -o pipefail && - xcodebuild \ - -workspace "$WORKSPACE" \ - -scheme "$SCHEME" \ - -configuration "$CONFIG" \ - OBJROOT="$BUILD_DIR" \ - SYMROOT="$BUILD_DIR" \ - build | - bundle exec xcpretty --color -} -archive() { - echo "==> 📦 Archiving mas ($VERSION)" - set -o pipefail && - xcodebuild \ - -workspace "$WORKSPACE" \ - -scheme "$SCHEME" \ - -configuration "$CONFIG" \ - -archivePath "$BUILD_DIR/mas.xcarchive" \ - OBJROOT="$BUILD_DIR" \ - SYMROOT="$BUILD_DIR" \ - archive | - bundle exec xcpretty --color -} +script/clean +script/lint -main +echo "==> 🏗️ Building mas ($(script/version))" +swift build --configuration release --arch arm64 --arch x86_64 diff --git a/script/clean b/script/clean index d083f9fb8..19b95d0b5 100755 --- a/script/clean +++ b/script/clean @@ -3,15 +3,8 @@ # script/clean # mas # -# Deletes the build and temp install directories. +# Deletes the build directory. # -BUILD_DIR=build -INSTALL_DIR=/tmp/mas-cli.dst - -main() { - rm -rf ${BUILD_DIR:?} - rm -rf ${INSTALL_DIR:?} -} - -main +BUILD_DIR=.build +rm -rf ${BUILD_DIR:?} diff --git a/script/install b/script/install index 3623c4e8b..5d5f49555 100755 --- a/script/install +++ b/script/install @@ -3,27 +3,15 @@ # script/install # mas # -# Installs mas into PREFIX using the following steps: -# -# 1. Invokes the xcodebuild install action. -# 2. Copies the mas binary and MasKit.framework bundle into their correct -# relative positions under PREFIX. +# Installs mas into PREFIX. # # NOTE: This script is called by the mas Homebrew formula so it has only system -# dependencies aside from xcodebuild. +# dependencies aside from Swift. # https://github.com/Homebrew/homebrew-core/blob/master/Formula/mas.rb # -BUILD_DIR="$PWD/build" -PROJECT="mas-cli.xcodeproj" -SCHEME="mas-cli Release" -CONFIG="Release" VERSION=$(script/version) -# Destination for `xcodebuild install` -INSTALL_TEMPORARY_FOLDER=${DSTROOT:-build/distributions} - -# Final destination. # Override default prefix path with optional 1st arg if test -n "$1"; then PREFIX="$1" @@ -33,23 +21,9 @@ else PREFIX=/usr/local fi -echo "==> 📲 Installing mas ($VERSION) to $PREFIX" - -xcodebuild \ - -project "$PROJECT" \ - -scheme "$SCHEME" \ - -configuration "$CONFIG" \ - OBJROOT="$BUILD_DIR" \ - SYMROOT="$BUILD_DIR" \ - DSTROOT="$INSTALL_TEMPORARY_FOLDER" \ - install - -# Deep copy MasKit.framework -ditto -v \ - "$INSTALL_TEMPORARY_FOLDER/Frameworks" \ - "$PREFIX/Frameworks" +script/build -# Copy mas binary +echo "==> 📲 Installing mas ($VERSION) for $ARCH to $PREFIX" ditto -v \ - "$INSTALL_TEMPORARY_FOLDER/bin" \ - "$PREFIX/bin" + ".build/apple/Products/Release/mas" \ + "$PREFIX/bin/" diff --git a/script/test b/script/test index 971de12a6..34ed4ebd7 100755 --- a/script/test +++ b/script/test @@ -3,34 +3,8 @@ # script/test # mas # -# Runs mas tests. Uses xcpretty gem to format output. +# Runs mas tests. # -BUILD_DIR="$PWD/build" -PROJECT="mas-cli.xcodeproj" -SCHEME="mas-cli Debug" -CONFIG="Debug" - -# OBJROOT - Intermediate Build Files Path -# The path where intermediate files will be placed during a build. Intermediate files include generated sources, object -# files, etc. Shell script build phases can place and access files here, as well. Typically this path is not set per -# target, but is set per project or per user. By default, this is set to `$(PROJECT_DIR)/build`. - -# SHARED_PRECOMPS_DIR - Precompiled Headers Cache Path -# The path where precompiled prefix header files are placed during a build. Defaults to `$(OBJROOT)/SharedPrecompiledHeaders`. -# Using a common location allows precompiled headers to be shared between multiple projects. - -# SYMROOT - Build Procucts Path -# The path at which all products will be placed when performing a build. Typically this path is not set per target, -# but is set per-project or per-user. By default, this is set to `$(PROJECT_DIR)/build`. - echo "==> ✅ Testing" - -set -o pipefail && - xcodebuild -project "$PROJECT" \ - -scheme "$SCHEME" \ - -configuration "$CONFIG" \ - OBJROOT="$BUILD_DIR" \ - SYMROOT="$BUILD_DIR" \ - test | - bundle exec xcpretty --color +swift test 2>&1 | xcpretty diff --git a/script/uninstall b/script/uninstall index 4d2dbc821..853e35bfb 100755 --- a/script/uninstall +++ b/script/uninstall @@ -17,5 +17,4 @@ fi echo "==> 🔥 Uninstalling mas from $PREFIX" -trash "$PREFIX/Frameworks/MasKit.framework" trash "$PREFIX/bin/mas" From 424db2ed3c3f23b9845d25bec61adeeb029f4e03 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:50:29 -0700 Subject: [PATCH 11/33] =?UTF-8?q?=F0=9F=A7=B9=20Update=20paths=20to=20sour?= =?UTF-8?q?ces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/format | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/script/format b/script/format index 02969fd24..a14c36475 100755 --- a/script/format +++ b/script/format @@ -22,11 +22,11 @@ done echo echo "--> 🕊️ Swift" -swiftformat . -for SOURCE in mas MasKit MasKitTests; do +for SOURCE in Package.swift Sources Tests; do + swiftformat ${SOURCE} swift-format format --in-place --configuration .swift-format --recursive ${SOURCE} + swiftlint lint --fix --strict ${SOURCE} done -swiftlint lint --fix --strict echo echo "--> 📜 Bash" From 7318f41a86f4b25c6379136ccaf83be07abc23fd Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:51:30 -0700 Subject: [PATCH 12/33] =?UTF-8?q?=F0=9F=9B=A0=20Remove=20Xcode=20project?= =?UTF-8?q?=20and=20workspace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mas-cli.xcodeproj/project.pbxproj | 1430 ----------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/xcschemes/MasKit.xcscheme | 104 -- .../xcschemes/mas-cli Debug.xcscheme | 112 -- .../xcschemes/mas-cli Release.xcscheme | 78 - mas.xcworkspace/contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/swiftpm/Package.resolved | 61 - 11 files changed, 1831 deletions(-) delete mode 100644 mas-cli.xcodeproj/project.pbxproj delete mode 100644 mas-cli.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 mas-cli.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 mas-cli.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 mas-cli.xcodeproj/xcshareddata/xcschemes/MasKit.xcscheme delete mode 100644 mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Debug.xcscheme delete mode 100644 mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Release.xcscheme delete mode 100644 mas.xcworkspace/contents.xcworkspacedata delete mode 100644 mas.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 mas.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 mas.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj deleted file mode 100644 index 841b586eb..000000000 --- a/mas-cli.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1430 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 60D8CF3624262F92005B4004 /* PurchaseCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60D8CF3524262F92005B4004 /* PurchaseCommandSpec.swift */; }; - 75FB3E761F9F7841005B6F20 /* Purchase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FB3E751F9F7841005B6F20 /* Purchase.swift */; }; - B5552928219A1BB900ACB4CA /* CommerceKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F83213A62173EF75008BA8A0 /* CommerceKit.framework */; }; - B5552929219A1BC700ACB4CA /* StoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F83213A52173EF75008BA8A0 /* StoreFoundation.framework */; }; - B55B3D9221ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55B3D9121ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift */; }; - B576FDF321E03B780016B39D /* MasStoreSearchSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDF221E03B780016B39D /* MasStoreSearchSpec.swift */; }; - B576FDF521E1078F0016B39D /* MASErrorTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDF421E1078F0016B39D /* MASErrorTestCase.swift */; }; - B576FDF721E107AA0016B39D /* OpenSystemCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDF621E107AA0016B39D /* OpenSystemCommand.swift */; }; - B576FDF921E107CA0016B39D /* SoftwareProductMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDF821E107CA0016B39D /* SoftwareProductMock.swift */; }; - B576FDFA21E1081C0016B39D /* SearchResultList.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B15521D89F5200F3AC59 /* SearchResultList.swift */; }; - B576FDFC21E10A610016B39D /* URLSessionConfiguration+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDFB21E10A610016B39D /* URLSessionConfiguration+Tests.swift */; }; - B576FDFE21E10B660016B39D /* TestURLSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDFD21E10B660016B39D /* TestURLSessionDelegate.swift */; }; - B576FE0021E113610016B39D /* NetworkSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FDFF21E113610016B39D /* NetworkSession.swift */; }; - B576FE0221E1139E0016B39D /* URLSession+NetworkSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */; }; - B576FE0421E113E90016B39D /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0321E113E90016B39D /* NetworkManager.swift */; }; - B576FE0C21E116590016B39D /* NetworkManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0B21E116590016B39D /* NetworkManagerTests.swift */; }; - B576FE0E21E1D6310016B39D /* String+PercentEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */; }; - B576FE1221E1D82D0016B39D /* NetworkSessionMockFromFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */; }; - B576FE1421E1D8A90016B39D /* Bundle+JSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1321E1D8A90016B39D /* Bundle+JSON.swift */; }; - B576FE1621E1D8CB0016B39D /* String+FileExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */; }; - B576FE1B21E28E8A0016B39D /* NetworkSessionMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */; }; - B576FE1D21E28EF70016B39D /* URLSessionDataTaskMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */; }; - B576FE2A21E4240B0016B39D /* AppInfoFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */; }; - B576FE2C21E42A230016B39D /* OutputListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2B21E42A230016B39D /* OutputListener.swift */; }; - B576FE2E21E5A8010016B39D /* Strongify.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2D21E5A8010016B39D /* Strongify.swift */; }; - B576FE3021E5BD130016B39D /* OutputListenerSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE2F21E5BD130016B39D /* OutputListenerSpec.swift */; }; - B576FE3321E985250016B39D /* SearchResultFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE3221E985250016B39D /* SearchResultFormatter.swift */; }; - B576FE3521E98AAE0016B39D /* StoreSearchSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B576FE3421E98AAE0016B39D /* StoreSearchSpec.swift */; }; - B578F061224FB5BD00D2086A /* ISAuthenticationResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = B578F060224FB5BD00D2086A /* ISAuthenticationResponse.h */; }; - B5793E29219BDD4800135B39 /* JSON in Resources */ = {isa = PBXBuildFile; fileRef = B5793E28219BDD4800135B39 /* JSON */; }; - B588CE0221DC89490047D305 /* ExternalCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = B588CE0121DC89490047D305 /* ExternalCommand.swift */; }; - B594B12021D53A8200F3AC59 /* Uninstall.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B11F21D53A8200F3AC59 /* Uninstall.swift */; }; - B594B12221D5416100F3AC59 /* ListCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12121D5416100F3AC59 /* ListCommandSpec.swift */; }; - B594B12521D580BB00F3AC59 /* UninstallCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12421D580BB00F3AC59 /* UninstallCommandSpec.swift */; }; - B594B12721D5825800F3AC59 /* AppLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12621D5825800F3AC59 /* AppLibrary.swift */; }; - B594B12921D5831D00F3AC59 /* SoftwareProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12821D5831D00F3AC59 /* SoftwareProduct.swift */; }; - B594B12B21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12A21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift */; }; - B594B12E21D5850700F3AC59 /* AppLibraryMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12D21D5850700F3AC59 /* AppLibraryMock.swift */; }; - B594B13021D5855D00F3AC59 /* MasAppLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B12F21D5855D00F3AC59 /* MasAppLibrary.swift */; }; - B594B13221D5876200F3AC59 /* ResultPredicates.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13121D5876200F3AC59 /* ResultPredicates.swift */; }; - B594B13621D6D68600F3AC59 /* VersionCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13521D6D68600F3AC59 /* VersionCommandSpec.swift */; }; - B594B13821D6D6C100F3AC59 /* UpgradeCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13721D6D6C100F3AC59 /* UpgradeCommandSpec.swift */; }; - B594B13A21D6D70400F3AC59 /* SignOutCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13921D6D70400F3AC59 /* SignOutCommandSpec.swift */; }; - B594B13C21D6D72E00F3AC59 /* SignInCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13B21D6D72E00F3AC59 /* SignInCommandSpec.swift */; }; - B594B13E21D6D78900F3AC59 /* SearchCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13D21D6D78900F3AC59 /* SearchCommandSpec.swift */; }; - B594B14021D6D8BF00F3AC59 /* ResetCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B13F21D6D8BF00F3AC59 /* ResetCommandSpec.swift */; }; - B594B14221D6D8EC00F3AC59 /* OutdatedCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14121D6D8EC00F3AC59 /* OutdatedCommandSpec.swift */; }; - B594B14421D6D91800F3AC59 /* LuckyCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14321D6D91800F3AC59 /* LuckyCommandSpec.swift */; }; - B594B14621D6D95700F3AC59 /* InstallCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14521D6D95700F3AC59 /* InstallCommandSpec.swift */; }; - B594B14821D6D98400F3AC59 /* InfoCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14721D6D98400F3AC59 /* InfoCommandSpec.swift */; }; - B594B14A21D6D9AE00F3AC59 /* AccountCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14921D6D9AE00F3AC59 /* AccountCommandSpec.swift */; }; - B594B14C21D8983700F3AC59 /* Home.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14B21D8983700F3AC59 /* Home.swift */; }; - B594B14E21D8984500F3AC59 /* HomeCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14D21D8984500F3AC59 /* HomeCommandSpec.swift */; }; - B594B15021D8998000F3AC59 /* StoreSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B14F21D8998000F3AC59 /* StoreSearch.swift */; }; - B594B15221D89A8B00F3AC59 /* MasStoreSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B15121D89A8B00F3AC59 /* MasStoreSearch.swift */; }; - B594B15421D89DF400F3AC59 /* SearchResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594B15321D89DF400F3AC59 /* SearchResult.swift */; }; - B5DBF80D21DEE4E600F3B151 /* Open.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF80C21DEE4E600F3B151 /* Open.swift */; }; - B5DBF80F21DEEB7B00F3B151 /* Vendor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF80E21DEEB7B00F3B151 /* Vendor.swift */; }; - B5DBF81121DEEC4200F3B151 /* VendorCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81021DEEC4200F3B151 /* VendorCommandSpec.swift */; }; - B5DBF81321DEEC7C00F3B151 /* OpenCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81221DEEC7C00F3B151 /* OpenCommandSpec.swift */; }; - B5DBF81521E02BA900F3B151 /* StoreSearchMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81421E02BA900F3B151 /* StoreSearchMock.swift */; }; - B5DBF81721E02E3400F3B151 /* OpenSystemCommandMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DBF81621E02E3400F3B151 /* OpenSystemCommandMock.swift */; }; - C56F16D226376B3800EAC548 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16D126376B3800EAC548 /* Nimble */; }; - C56F16DA26376C4B00EAC548 /* Quick in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16D926376C4B00EAC548 /* Quick */; }; - C56F16E92637C2B300EAC548 /* Version in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16E82637C2B300EAC548 /* Version */; }; - C56F16EC2637C2C600EAC548 /* Commandant in Frameworks */ = {isa = PBXBuildFile; productRef = C56F16EB2637C2C600EAC548 /* Commandant */; }; - C56F16EF2639EC0C00EAC548 /* Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56F16ED2639EBF700EAC548 /* Package.swift */; }; - ED031A7C1B5127C00097692E /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED031A7B1B5127C00097692E /* main.swift */; }; - F80B27B62611116A00A285C9 /* AppListFormatterSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80B27B52611116A00A285C9 /* AppListFormatterSpec.swift */; }; - F80B27BA2611118E00A285C9 /* AppListFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80B27B92611118E00A285C9 /* AppListFormatter.swift */; }; - F83213892173D3E1008BA8A0 /* CKAccountStore.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719B20F2EC4500F56FDC /* CKAccountStore.h */; }; - F832138A2173D3E1008BA8A0 /* CKDownloadQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719C20F2EC4500F56FDC /* CKDownloadQueue.h */; }; - F832138B2173D3E1008BA8A0 /* CKDownloadQueueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B520F2F7E000F56FDC /* CKDownloadQueueObserver.h */; }; - F832138C2173D3E1008BA8A0 /* CKPurchaseController.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */; }; - F832138D2173D3E1008BA8A0 /* CKServiceInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */; }; - F832138E2173D3E1008BA8A0 /* CKSoftwareMap.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */; }; - F83213912173D3E1008BA8A0 /* CKDownloadDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B620F2F87300F56FDC /* CKDownloadDirectory.h */; }; - F83213922173D5AB008BA8A0 /* CKSoftwareProduct.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */; }; - F83213932173D5AB008BA8A0 /* CKUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A420F2EC4500F56FDC /* CKUpdate.h */; }; - F83213942173D5AB008BA8A0 /* ISAccountService.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A520F2EC4500F56FDC /* ISAccountService.h */; }; - F83213952173D5AB008BA8A0 /* ISAuthenticationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */; }; - F83213972173D5AB008BA8A0 /* ISServiceProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */; }; - F83213982173D5AB008BA8A0 /* ISServiceRemoteObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */; }; - F83213992173D5AB008BA8A0 /* ISStoreAccount.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */; }; - F832139A2173D5AB008BA8A0 /* ISStoreClient.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */; }; - F832139C2173D5B2008BA8A0 /* SSDownload.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AD20F2EC4500F56FDC /* SSDownload.h */; }; - F832139D2173D5B2008BA8A0 /* SSDownloadMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */; }; - F832139E2173D5B2008BA8A0 /* SSDownloadPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */; }; - F832139F2173D5B2008BA8A0 /* SSDownloadStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B020F2EC4500F56FDC /* SSDownloadStatus.h */; }; - F83213A02173D5B2008BA8A0 /* SSPurchase.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B120F2EC4500F56FDC /* SSPurchase.h */; }; - F83213A12173D5B2008BA8A0 /* SSPurchaseResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB71B220F2EC4500F56FDC /* SSPurchaseResponse.h */; }; - F83213A82173F5A7008BA8A0 /* MasKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8FB715220F2B41400F56FDC /* MasKit.framework */; }; - F85DA8AE240C313900FE5650 /* MasAppLibrarySpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DA8AD240C313900FE5650 /* MasAppLibrarySpec.swift */; }; - F85DA8B0240C32FA00FE5650 /* SoftwareMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DA8AF240C32FA00FE5650 /* SoftwareMap.swift */; }; - F85DA8B2240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DA8B1240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift */; }; - F88CB8E12404DAAD00B691B5 /* OpenSystemCommandSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88CB8E02404DAAD00B691B5 /* OpenSystemCommandSpec.swift */; }; - F8D095EA25009640000899E6 /* SearchResultSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D095E925009640000899E6 /* SearchResultSpec.swift */; }; - F8D095EC250096A6000899E6 /* SearchResultListSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D095EB250096A6000899E6 /* SearchResultListSpec.swift */; }; - F8FB715B20F2B41400F56FDC /* MasKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8FB715220F2B41400F56FDC /* MasKit.framework */; }; - F8FB716220F2B41400F56FDC /* MasKit.h in Headers */ = {isa = PBXBuildFile; fileRef = F8FB715420F2B41400F56FDC /* MasKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F8FB716A20F2B4DD00F56FDC /* Downloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F238A1B87569C00AE40CD /* Downloader.swift */; }; - F8FB716B20F2B4DD00F56FDC /* ISStoreAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F238F1B87A56F00AE40CD /* ISStoreAccount.swift */; }; - F8FB716C20F2B4DD00F56FDC /* PurchaseDownloadObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F23881B87543D00AE40CD /* PurchaseDownloadObserver.swift */; }; - F8FB716D20F2B4DD00F56FDC /* SSPurchase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDA3BE511B8B84AF00C18D70 /* SSPurchase.swift */; }; - F8FB716E20F2B4DD00F56FDC /* StoreAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8242D8020746A510026DF35 /* StoreAccount.swift */; }; - F8FB716F20F2B4DD00F56FDC /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F23861B87537200AE40CD /* Account.swift */; }; - F8FB717020F2B4DD00F56FDC /* Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = 900A1E801DBAC8CB0069B1A8 /* Info.swift */; }; - F8FB717120F2B4DD00F56FDC /* Install.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F237E1B87522400AE40CD /* Install.swift */; }; - F8FB717220F2B4DD00F56FDC /* List.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F23821B87533A00AE40CD /* List.swift */; }; - F8FB717320F2B4DD00F56FDC /* Lucky.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8078FAA71EC4F2FB004B5B3F /* Lucky.swift */; }; - F8FB717420F2B4DD00F56FDC /* Outdated.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F23841B87536A00AE40CD /* Outdated.swift */; }; - F8FB717520F2B4DD00F56FDC /* Reset.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDCBF9521D89AC6F000039C6 /* Reset.swift */; }; - F8FB717620F2B4DD00F56FDC /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 693A98981CBFFA760004D3B4 /* Search.swift */; }; - F8FB717720F2B4DD00F56FDC /* SignIn.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDC90B641C70045E0019E396 /* SignIn.swift */; }; - F8FB717820F2B4DD00F56FDC /* SignOut.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDE296521C700F4300554778 /* SignOut.swift */; }; - F8FB717920F2B4DD00F56FDC /* Upgrade.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDD3B3621C34709400B56B88 /* Upgrade.swift */; }; - F8FB717A20F2B4DD00F56FDC /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB6CE8B1BAEC3D400648B4D /* Version.swift */; }; - F8FB717B20F2B4DD00F56FDC /* MASError.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED0F238C1B8756E600AE40CD /* MASError.swift */; }; - F8FB717D20F2B4DD00F56FDC /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDCBF9541D89CFC7000039C6 /* Utilities.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - F83213872173D2EB008BA8A0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ED031A701B5127C00097692E /* Project object */; - proxyType = 1; - remoteGlobalIDString = F8FB715120F2B41400F56FDC; - remoteInfo = MasKit; - }; - F8FB715C20F2B41400F56FDC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ED031A701B5127C00097692E /* Project object */; - proxyType = 1; - remoteGlobalIDString = F8FB715120F2B41400F56FDC; - remoteInfo = MasKit; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 90CB4073213F4E070044E445 /* Copy Debugging Symbols */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 16; - files = ( - ); - name = "Copy Debugging Symbols"; - runOnlyForDeploymentPostprocessing = 0; - }; - ED031A761B5127C00097692E /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 60D8CF3524262F92005B4004 /* PurchaseCommandSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchaseCommandSpec.swift; sourceTree = ""; }; - 693A98981CBFFA760004D3B4 /* Search.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Search.swift; sourceTree = ""; }; - 75FB3E751F9F7841005B6F20 /* Purchase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Purchase.swift; sourceTree = ""; }; - 8078FAA71EC4F2FB004B5B3F /* Lucky.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lucky.swift; sourceTree = ""; }; - 900A1E801DBAC8CB0069B1A8 /* Info.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Info.swift; sourceTree = ""; }; - B55B3D9121ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultFormatterSpec.swift; sourceTree = ""; }; - B576FDF221E03B780016B39D /* MasStoreSearchSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MasStoreSearchSpec.swift; sourceTree = ""; }; - B576FDF421E1078F0016B39D /* MASErrorTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MASErrorTestCase.swift; sourceTree = ""; }; - B576FDF621E107AA0016B39D /* OpenSystemCommand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSystemCommand.swift; sourceTree = ""; }; - B576FDF821E107CA0016B39D /* SoftwareProductMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SoftwareProductMock.swift; sourceTree = ""; }; - B576FDFB21E10A610016B39D /* URLSessionConfiguration+Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSessionConfiguration+Tests.swift"; sourceTree = ""; }; - B576FDFD21E10B660016B39D /* TestURLSessionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestURLSessionDelegate.swift; sourceTree = ""; }; - B576FDFF21E113610016B39D /* NetworkSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkSession.swift; sourceTree = ""; }; - B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+NetworkSession.swift"; sourceTree = ""; }; - B576FE0321E113E90016B39D /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = ""; }; - B576FE0B21E116590016B39D /* NetworkManagerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManagerTests.swift; sourceTree = ""; }; - B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+PercentEncoding.swift"; sourceTree = ""; }; - B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkSessionMockFromFile.swift; sourceTree = ""; }; - B576FE1321E1D8A90016B39D /* Bundle+JSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+JSON.swift"; sourceTree = ""; }; - B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+FileExtension.swift"; sourceTree = ""; }; - B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkSessionMock.swift; sourceTree = ""; }; - B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLSessionDataTaskMock.swift; sourceTree = ""; }; - B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppInfoFormatter.swift; sourceTree = ""; }; - B576FE2B21E42A230016B39D /* OutputListener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OutputListener.swift; sourceTree = ""; }; - B576FE2D21E5A8010016B39D /* Strongify.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Strongify.swift; sourceTree = ""; }; - B576FE2F21E5BD130016B39D /* OutputListenerSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OutputListenerSpec.swift; sourceTree = ""; }; - B576FE3221E985250016B39D /* SearchResultFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultFormatter.swift; sourceTree = ""; }; - B576FE3421E98AAE0016B39D /* StoreSearchSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreSearchSpec.swift; sourceTree = ""; }; - B578F060224FB5BD00D2086A /* ISAuthenticationResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISAuthenticationResponse.h; sourceTree = ""; }; - B5793E28219BDD4800135B39 /* JSON */ = {isa = PBXFileReference; lastKnownFileType = folder; path = JSON; sourceTree = ""; }; - B588CE0121DC89490047D305 /* ExternalCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalCommand.swift; sourceTree = ""; }; - B594B11F21D53A8200F3AC59 /* Uninstall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Uninstall.swift; sourceTree = ""; }; - B594B12121D5416100F3AC59 /* ListCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListCommandSpec.swift; sourceTree = ""; }; - B594B12421D580BB00F3AC59 /* UninstallCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UninstallCommandSpec.swift; sourceTree = ""; }; - B594B12621D5825800F3AC59 /* AppLibrary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLibrary.swift; sourceTree = ""; }; - B594B12821D5831D00F3AC59 /* SoftwareProduct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoftwareProduct.swift; sourceTree = ""; }; - B594B12A21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CKSoftwareProduct+SoftwareProduct.swift"; sourceTree = ""; }; - B594B12D21D5850700F3AC59 /* AppLibraryMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLibraryMock.swift; sourceTree = ""; }; - B594B12F21D5855D00F3AC59 /* MasAppLibrary.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasAppLibrary.swift; sourceTree = ""; }; - B594B13121D5876200F3AC59 /* ResultPredicates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResultPredicates.swift; sourceTree = ""; }; - B594B13521D6D68600F3AC59 /* VersionCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VersionCommandSpec.swift; sourceTree = ""; }; - B594B13721D6D6C100F3AC59 /* UpgradeCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpgradeCommandSpec.swift; sourceTree = ""; }; - B594B13921D6D70400F3AC59 /* SignOutCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignOutCommandSpec.swift; sourceTree = ""; }; - B594B13B21D6D72E00F3AC59 /* SignInCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignInCommandSpec.swift; sourceTree = ""; }; - B594B13D21D6D78900F3AC59 /* SearchCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchCommandSpec.swift; sourceTree = ""; }; - B594B13F21D6D8BF00F3AC59 /* ResetCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ResetCommandSpec.swift; sourceTree = ""; }; - B594B14121D6D8EC00F3AC59 /* OutdatedCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OutdatedCommandSpec.swift; sourceTree = ""; }; - B594B14321D6D91800F3AC59 /* LuckyCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LuckyCommandSpec.swift; sourceTree = ""; }; - B594B14521D6D95700F3AC59 /* InstallCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstallCommandSpec.swift; sourceTree = ""; }; - B594B14721D6D98400F3AC59 /* InfoCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfoCommandSpec.swift; sourceTree = ""; }; - B594B14921D6D9AE00F3AC59 /* AccountCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountCommandSpec.swift; sourceTree = ""; }; - B594B14B21D8983700F3AC59 /* Home.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = ""; }; - B594B14D21D8984500F3AC59 /* HomeCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeCommandSpec.swift; sourceTree = ""; }; - B594B14F21D8998000F3AC59 /* StoreSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreSearch.swift; sourceTree = ""; }; - B594B15121D89A8B00F3AC59 /* MasStoreSearch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MasStoreSearch.swift; sourceTree = ""; }; - B594B15321D89DF400F3AC59 /* SearchResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResult.swift; sourceTree = ""; }; - B594B15521D89F5200F3AC59 /* SearchResultList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchResultList.swift; sourceTree = ""; }; - B5DBF80C21DEE4E600F3B151 /* Open.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Open.swift; sourceTree = ""; }; - B5DBF80E21DEEB7B00F3B151 /* Vendor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Vendor.swift; sourceTree = ""; }; - B5DBF81021DEEC4200F3B151 /* VendorCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VendorCommandSpec.swift; sourceTree = ""; }; - B5DBF81221DEEC7C00F3B151 /* OpenCommandSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenCommandSpec.swift; sourceTree = ""; }; - B5DBF81421E02BA900F3B151 /* StoreSearchMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreSearchMock.swift; sourceTree = ""; }; - B5DBF81621E02E3400F3B151 /* OpenSystemCommandMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSystemCommandMock.swift; sourceTree = ""; }; - C56F16DF2637825300EAC548 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; - C56F16ED2639EBF700EAC548 /* Package.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; - ED031A781B5127C00097692E /* mas */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mas; sourceTree = BUILT_PRODUCTS_DIR; }; - ED031A7B1B5127C00097692E /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; - ED0F237E1B87522400AE40CD /* Install.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Install.swift; sourceTree = ""; }; - ED0F23821B87533A00AE40CD /* List.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = List.swift; sourceTree = ""; }; - ED0F23841B87536A00AE40CD /* Outdated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Outdated.swift; sourceTree = ""; }; - ED0F23861B87537200AE40CD /* Account.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; - ED0F23881B87543D00AE40CD /* PurchaseDownloadObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseDownloadObserver.swift; sourceTree = ""; }; - ED0F238A1B87569C00AE40CD /* Downloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Downloader.swift; sourceTree = ""; }; - ED0F238C1B8756E600AE40CD /* MASError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MASError.swift; sourceTree = ""; }; - ED0F238F1B87A56F00AE40CD /* ISStoreAccount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ISStoreAccount.swift; sourceTree = ""; }; - EDA3BE511B8B84AF00C18D70 /* SSPurchase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SSPurchase.swift; sourceTree = ""; }; - EDB6CE8A1BAEB95100648B4D /* mas-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "mas-Info.plist"; sourceTree = ""; }; - EDB6CE8B1BAEC3D400648B4D /* Version.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Version.swift; sourceTree = ""; }; - EDC90B641C70045E0019E396 /* SignIn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignIn.swift; sourceTree = ""; }; - EDCBF9521D89AC6F000039C6 /* Reset.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reset.swift; sourceTree = ""; }; - EDCBF9541D89CFC7000039C6 /* Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = ""; }; - EDD3B3621C34709400B56B88 /* Upgrade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Upgrade.swift; sourceTree = ""; }; - EDE296521C700F4300554778 /* SignOut.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignOut.swift; sourceTree = ""; }; - F80B27B52611116A00A285C9 /* AppListFormatterSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppListFormatterSpec.swift; sourceTree = ""; }; - F80B27B92611118E00A285C9 /* AppListFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppListFormatter.swift; sourceTree = ""; }; - F8242D8020746A510026DF35 /* StoreAccount.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAccount.swift; sourceTree = ""; }; - F83213A42173EF75008BA8A0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - F83213A52173EF75008BA8A0 /* StoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreFoundation.framework; path = /System/Library/PrivateFrameworks/StoreFoundation.framework; sourceTree = ""; }; - F83213A62173EF75008BA8A0 /* CommerceKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CommerceKit.framework; path = /System/Library/PrivateFrameworks/CommerceKit.framework; sourceTree = ""; }; - F85DA8AD240C313900FE5650 /* MasAppLibrarySpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasAppLibrarySpec.swift; sourceTree = ""; }; - F85DA8AF240C32FA00FE5650 /* SoftwareMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoftwareMap.swift; sourceTree = ""; }; - F85DA8B1240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CKSoftwareMap+SoftwareMap.swift"; sourceTree = ""; }; - F88CB8E02404DAAD00B691B5 /* OpenSystemCommandSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSystemCommandSpec.swift; sourceTree = ""; }; - F8D095E925009640000899E6 /* SearchResultSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSpec.swift; sourceTree = ""; }; - F8D095EB250096A6000899E6 /* SearchResultListSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchResultListSpec.swift; sourceTree = ""; }; - F8FB715220F2B41400F56FDC /* MasKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MasKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F8FB715420F2B41400F56FDC /* MasKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MasKit.h; sourceTree = ""; }; - F8FB715520F2B41400F56FDC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F8FB715A20F2B41400F56FDC /* MasKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MasKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - F8FB716120F2B41400F56FDC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F8FB719B20F2EC4500F56FDC /* CKAccountStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKAccountStore.h; sourceTree = ""; }; - F8FB719C20F2EC4500F56FDC /* CKDownloadQueue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKDownloadQueue.h; sourceTree = ""; }; - F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKPurchaseController.h; sourceTree = ""; }; - F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKServiceInterface.h; sourceTree = ""; }; - F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKSoftwareMap.h; sourceTree = ""; }; - F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKSoftwareProduct.h; sourceTree = ""; }; - F8FB71A420F2EC4500F56FDC /* CKUpdate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKUpdate.h; sourceTree = ""; }; - F8FB71A520F2EC4500F56FDC /* ISAccountService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISAccountService.h; sourceTree = ""; }; - F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISAuthenticationContext.h; sourceTree = ""; }; - F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISServiceProxy.h; sourceTree = ""; }; - F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISServiceRemoteObject.h; sourceTree = ""; }; - F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreAccount.h; sourceTree = ""; }; - F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ISStoreClient.h; sourceTree = ""; }; - F8FB71AD20F2EC4500F56FDC /* SSDownload.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownload.h; sourceTree = ""; }; - F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadMetadata.h; sourceTree = ""; }; - F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadPhase.h; sourceTree = ""; }; - F8FB71B020F2EC4500F56FDC /* SSDownloadStatus.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSDownloadStatus.h; sourceTree = ""; }; - F8FB71B120F2EC4500F56FDC /* SSPurchase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSPurchase.h; sourceTree = ""; }; - F8FB71B220F2EC4500F56FDC /* SSPurchaseResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SSPurchaseResponse.h; sourceTree = ""; }; - F8FB71B320F2EC7900F56FDC /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - F8FB71B420F2EC8800F56FDC /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = ""; }; - F8FB71B520F2F7E000F56FDC /* CKDownloadQueueObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKDownloadQueueObserver.h; sourceTree = ""; }; - F8FB71B620F2F87300F56FDC /* CKDownloadDirectory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CKDownloadDirectory.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ED031A751B5127C00097692E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F83213A82173F5A7008BA8A0 /* MasKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F8FB714F20F2B41400F56FDC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C56F16EC2637C2C600EAC548 /* Commandant in Frameworks */, - C56F16E92637C2B300EAC548 /* Version in Frameworks */, - B5552928219A1BB900ACB4CA /* CommerceKit.framework in Frameworks */, - B5552929219A1BC700ACB4CA /* StoreFoundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F8FB715720F2B41400F56FDC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C56F16DA26376C4B00EAC548 /* Quick in Frameworks */, - C56F16D226376B3800EAC548 /* Nimble in Frameworks */, - F8FB715B20F2B41400F56FDC /* MasKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - B55B3D9021ED9B6A0009A1A5 /* Formatters */ = { - isa = PBXGroup; - children = ( - F80B27B52611116A00A285C9 /* AppListFormatterSpec.swift */, - B55B3D9121ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift */, - ); - path = Formatters; - sourceTree = ""; - }; - B576FE0921E114BD0016B39D /* Network */ = { - isa = PBXGroup; - children = ( - B576FE0321E113E90016B39D /* NetworkManager.swift */, - B576FDFF21E113610016B39D /* NetworkSession.swift */, - B576FE0121E1139E0016B39D /* URLSession+NetworkSession.swift */, - ); - path = Network; - sourceTree = ""; - }; - B576FE0A21E116470016B39D /* Network */ = { - isa = PBXGroup; - children = ( - B576FE0B21E116590016B39D /* NetworkManagerTests.swift */, - B576FE1A21E28E8A0016B39D /* NetworkSessionMock.swift */, - B576FE1121E1D82D0016B39D /* NetworkSessionMockFromFile.swift */, - B576FDFD21E10B660016B39D /* TestURLSessionDelegate.swift */, - B576FDFB21E10A610016B39D /* URLSessionConfiguration+Tests.swift */, - B576FE1C21E28EF70016B39D /* URLSessionDataTaskMock.swift */, - ); - path = Network; - sourceTree = ""; - }; - B576FE1721E28E1F0016B39D /* ExternalCommands */ = { - isa = PBXGroup; - children = ( - B5DBF81621E02E3400F3B151 /* OpenSystemCommandMock.swift */, - F88CB8E02404DAAD00B691B5 /* OpenSystemCommandSpec.swift */, - ); - path = ExternalCommands; - sourceTree = ""; - }; - B576FE1821E28E460016B39D /* Nimble */ = { - isa = PBXGroup; - children = ( - B594B13121D5876200F3AC59 /* ResultPredicates.swift */, - ); - path = Nimble; - sourceTree = ""; - }; - B576FE1921E28E530016B39D /* Extensions */ = { - isa = PBXGroup; - children = ( - B576FE1321E1D8A90016B39D /* Bundle+JSON.swift */, - B576FE1521E1D8CB0016B39D /* String+FileExtension.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - B576FE1E21E2904E0016B39D /* Models */ = { - isa = PBXGroup; - children = ( - B594B15321D89DF400F3AC59 /* SearchResult.swift */, - B594B15521D89F5200F3AC59 /* SearchResultList.swift */, - B594B12821D5831D00F3AC59 /* SoftwareProduct.swift */, - ); - path = Models; - sourceTree = ""; - }; - B576FE1F21E290720016B39D /* Extensions */ = { - isa = PBXGroup; - children = ( - B576FE0D21E1D6310016B39D /* String+PercentEncoding.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - B576FE2021E2908D0016B39D /* Formatters */ = { - isa = PBXGroup; - children = ( - B576FE2921E4240B0016B39D /* AppInfoFormatter.swift */, - F80B27B92611118E00A285C9 /* AppListFormatter.swift */, - B576FE3221E985250016B39D /* SearchResultFormatter.swift */, - EDCBF9541D89CFC7000039C6 /* Utilities.swift */, - ); - path = Formatters; - sourceTree = ""; - }; - B576FE2121E292F80016B39D /* Controllers */ = { - isa = PBXGroup; - children = ( - B594B12621D5825800F3AC59 /* AppLibrary.swift */, - B594B12F21D5855D00F3AC59 /* MasAppLibrary.swift */, - B594B15121D89A8B00F3AC59 /* MasStoreSearch.swift */, - F85DA8AF240C32FA00FE5650 /* SoftwareMap.swift */, - B594B14F21D8998000F3AC59 /* StoreSearch.swift */, - ); - path = Controllers; - sourceTree = ""; - }; - B576FE2221E2932B0016B39D /* Controllers */ = { - isa = PBXGroup; - children = ( - B594B12D21D5850700F3AC59 /* AppLibraryMock.swift */, - F85DA8AD240C313900FE5650 /* MasAppLibrarySpec.swift */, - B576FDF221E03B780016B39D /* MasStoreSearchSpec.swift */, - B5DBF81421E02BA900F3B151 /* StoreSearchMock.swift */, - B576FE3421E98AAE0016B39D /* StoreSearchSpec.swift */, - ); - path = Controllers; - sourceTree = ""; - }; - B576FE2321E29CAC0016B39D /* Errors */ = { - isa = PBXGroup; - children = ( - ED0F238C1B8756E600AE40CD /* MASError.swift */, - ); - path = Errors; - sourceTree = ""; - }; - B576FE2421E29CE80016B39D /* Errors */ = { - isa = PBXGroup; - children = ( - B576FDF421E1078F0016B39D /* MASErrorTestCase.swift */, - ); - path = Errors; - sourceTree = ""; - }; - B576FE2521E29D2D0016B39D /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - F8FB715520F2B41400F56FDC /* Info.plist */, - F8FB715420F2B41400F56FDC /* MasKit.h */, - C56F16ED2639EBF700EAC548 /* Package.swift */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - B576FE2621E29DD90016B39D /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - F8FB716120F2B41400F56FDC /* Info.plist */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - B588CE0021DC89250047D305 /* ExternalCommands */ = { - isa = PBXGroup; - children = ( - B588CE0121DC89490047D305 /* ExternalCommand.swift */, - B576FDF621E107AA0016B39D /* OpenSystemCommand.swift */, - ); - path = ExternalCommands; - sourceTree = ""; - }; - B594B12321D57FF300F3AC59 /* Commands */ = { - isa = PBXGroup; - children = ( - B594B14921D6D9AE00F3AC59 /* AccountCommandSpec.swift */, - B594B14D21D8984500F3AC59 /* HomeCommandSpec.swift */, - B594B14721D6D98400F3AC59 /* InfoCommandSpec.swift */, - B594B14521D6D95700F3AC59 /* InstallCommandSpec.swift */, - B594B12121D5416100F3AC59 /* ListCommandSpec.swift */, - B594B14321D6D91800F3AC59 /* LuckyCommandSpec.swift */, - B5DBF81221DEEC7C00F3B151 /* OpenCommandSpec.swift */, - B594B14121D6D8EC00F3AC59 /* OutdatedCommandSpec.swift */, - 60D8CF3524262F92005B4004 /* PurchaseCommandSpec.swift */, - B594B13F21D6D8BF00F3AC59 /* ResetCommandSpec.swift */, - B594B13D21D6D78900F3AC59 /* SearchCommandSpec.swift */, - B594B13B21D6D72E00F3AC59 /* SignInCommandSpec.swift */, - B594B13921D6D70400F3AC59 /* SignOutCommandSpec.swift */, - B594B12421D580BB00F3AC59 /* UninstallCommandSpec.swift */, - B594B13721D6D6C100F3AC59 /* UpgradeCommandSpec.swift */, - B5DBF81021DEEC4200F3B151 /* VendorCommandSpec.swift */, - B594B13521D6D68600F3AC59 /* VersionCommandSpec.swift */, - ); - path = Commands; - sourceTree = ""; - }; - B594B12C21D584E800F3AC59 /* Models */ = { - isa = PBXGroup; - children = ( - F8D095EB250096A6000899E6 /* SearchResultListSpec.swift */, - F8D095E925009640000899E6 /* SearchResultSpec.swift */, - B576FDF821E107CA0016B39D /* SoftwareProductMock.swift */, - ); - path = Models; - sourceTree = ""; - }; - C56F16DB2637711100EAC548 /* Sources */ = { - isa = PBXGroup; - children = ( - ED031A7A1B5127C00097692E /* mas */, - F8FB715320F2B41400F56FDC /* MasKit */, - F8FB719920F2EC4500F56FDC /* PrivateFrameworks */, - ); - path = Sources; - sourceTree = ""; - }; - C56F16DC2637711900EAC548 /* Tests */ = { - isa = PBXGroup; - children = ( - F8FB715E20F2B41400F56FDC /* MasKitTests */, - ); - path = Tests; - sourceTree = ""; - }; - ED031A6F1B5127C00097692E = { - isa = PBXGroup; - children = ( - EDFC76381B642A2E00D0DBD7 /* Frameworks */, - C56F16DB2637711100EAC548 /* Sources */, - C56F16DC2637711900EAC548 /* Tests */, - ED031A791B5127C00097692E /* Products */, - C56F16DF2637825300EAC548 /* Package.swift */, - ); - sourceTree = ""; - }; - ED031A791B5127C00097692E /* Products */ = { - isa = PBXGroup; - children = ( - ED031A781B5127C00097692E /* mas */, - F8FB715220F2B41400F56FDC /* MasKit.framework */, - F8FB715A20F2B41400F56FDC /* MasKitTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - ED031A7A1B5127C00097692E /* mas */ = { - isa = PBXGroup; - children = ( - ED031A7B1B5127C00097692E /* main.swift */, - EDB6CE8A1BAEB95100648B4D /* mas-Info.plist */, - ); - path = mas; - sourceTree = ""; - }; - ED0F23801B87524700AE40CD /* Commands */ = { - isa = PBXGroup; - children = ( - ED0F23861B87537200AE40CD /* Account.swift */, - B594B14B21D8983700F3AC59 /* Home.swift */, - 900A1E801DBAC8CB0069B1A8 /* Info.swift */, - ED0F237E1B87522400AE40CD /* Install.swift */, - ED0F23821B87533A00AE40CD /* List.swift */, - 8078FAA71EC4F2FB004B5B3F /* Lucky.swift */, - B5DBF80C21DEE4E600F3B151 /* Open.swift */, - ED0F23841B87536A00AE40CD /* Outdated.swift */, - 75FB3E751F9F7841005B6F20 /* Purchase.swift */, - EDCBF9521D89AC6F000039C6 /* Reset.swift */, - 693A98981CBFFA760004D3B4 /* Search.swift */, - EDC90B641C70045E0019E396 /* SignIn.swift */, - EDE296521C700F4300554778 /* SignOut.swift */, - B594B11F21D53A8200F3AC59 /* Uninstall.swift */, - EDD3B3621C34709400B56B88 /* Upgrade.swift */, - B5DBF80E21DEEB7B00F3B151 /* Vendor.swift */, - EDB6CE8B1BAEC3D400648B4D /* Version.swift */, - ); - path = Commands; - sourceTree = ""; - }; - ED0F238E1B87A54700AE40CD /* AppStore */ = { - isa = PBXGroup; - children = ( - F85DA8B1240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift */, - B594B12A21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift */, - ED0F238A1B87569C00AE40CD /* Downloader.swift */, - ED0F238F1B87A56F00AE40CD /* ISStoreAccount.swift */, - ED0F23881B87543D00AE40CD /* PurchaseDownloadObserver.swift */, - EDA3BE511B8B84AF00C18D70 /* SSPurchase.swift */, - F8242D8020746A510026DF35 /* StoreAccount.swift */, - ); - path = AppStore; - sourceTree = ""; - }; - EDFC76381B642A2E00D0DBD7 /* Frameworks */ = { - isa = PBXGroup; - children = ( - F83213A42173EF75008BA8A0 /* Cocoa.framework */, - F83213A62173EF75008BA8A0 /* CommerceKit.framework */, - F83213A52173EF75008BA8A0 /* StoreFoundation.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - F8FB715320F2B41400F56FDC /* MasKit */ = { - isa = PBXGroup; - children = ( - ED0F238E1B87A54700AE40CD /* AppStore */, - ED0F23801B87524700AE40CD /* Commands */, - B576FE2121E292F80016B39D /* Controllers */, - B576FE2321E29CAC0016B39D /* Errors */, - B576FE1F21E290720016B39D /* Extensions */, - B588CE0021DC89250047D305 /* ExternalCommands */, - B576FE2021E2908D0016B39D /* Formatters */, - B576FE1E21E2904E0016B39D /* Models */, - B576FE0921E114BD0016B39D /* Network */, - B576FE2521E29D2D0016B39D /* SupportingFiles */, - ); - path = MasKit; - sourceTree = ""; - }; - F8FB715E20F2B41400F56FDC /* MasKitTests */ = { - isa = PBXGroup; - children = ( - B594B12321D57FF300F3AC59 /* Commands */, - B576FE2221E2932B0016B39D /* Controllers */, - B576FE2421E29CE80016B39D /* Errors */, - B576FE1921E28E530016B39D /* Extensions */, - B576FE1721E28E1F0016B39D /* ExternalCommands */, - B55B3D9021ED9B6A0009A1A5 /* Formatters */, - B5793E28219BDD4800135B39 /* JSON */, - B594B12C21D584E800F3AC59 /* Models */, - B576FE0A21E116470016B39D /* Network */, - B576FE1821E28E460016B39D /* Nimble */, - B576FE2621E29DD90016B39D /* SupportingFiles */, - B576FE2B21E42A230016B39D /* OutputListener.swift */, - B576FE2F21E5BD130016B39D /* OutputListenerSpec.swift */, - B576FE2D21E5A8010016B39D /* Strongify.swift */, - ); - path = MasKitTests; - sourceTree = ""; - }; - F8FB719920F2EC4500F56FDC /* PrivateFrameworks */ = { - isa = PBXGroup; - children = ( - F8FB719A20F2EC4500F56FDC /* CommerceKit */, - F8FB71A220F2EC4500F56FDC /* StoreFoundation */, - ); - path = PrivateFrameworks; - sourceTree = ""; - }; - F8FB719A20F2EC4500F56FDC /* CommerceKit */ = { - isa = PBXGroup; - children = ( - F8FB719B20F2EC4500F56FDC /* CKAccountStore.h */, - F8FB71B620F2F87300F56FDC /* CKDownloadDirectory.h */, - F8FB719C20F2EC4500F56FDC /* CKDownloadQueue.h */, - F8FB71B520F2F7E000F56FDC /* CKDownloadQueueObserver.h */, - F8FB719D20F2EC4500F56FDC /* CKPurchaseController.h */, - F8FB719E20F2EC4500F56FDC /* CKServiceInterface.h */, - F8FB719F20F2EC4500F56FDC /* CKSoftwareMap.h */, - F8FB71B320F2EC7900F56FDC /* module.modulemap */, - ); - path = CommerceKit; - sourceTree = ""; - }; - F8FB71A220F2EC4500F56FDC /* StoreFoundation */ = { - isa = PBXGroup; - children = ( - F8FB71A320F2EC4500F56FDC /* CKSoftwareProduct.h */, - F8FB71A420F2EC4500F56FDC /* CKUpdate.h */, - F8FB71A520F2EC4500F56FDC /* ISAccountService.h */, - F8FB71A620F2EC4500F56FDC /* ISAuthenticationContext.h */, - B578F060224FB5BD00D2086A /* ISAuthenticationResponse.h */, - F8FB71A820F2EC4500F56FDC /* ISServiceProxy.h */, - F8FB71A920F2EC4500F56FDC /* ISServiceRemoteObject.h */, - F8FB71AA20F2EC4500F56FDC /* ISStoreAccount.h */, - F8FB71AB20F2EC4500F56FDC /* ISStoreClient.h */, - F8FB71B420F2EC8800F56FDC /* module.modulemap */, - F8FB71AD20F2EC4500F56FDC /* SSDownload.h */, - F8FB71AE20F2EC4500F56FDC /* SSDownloadMetadata.h */, - F8FB71AF20F2EC4500F56FDC /* SSDownloadPhase.h */, - F8FB71B020F2EC4500F56FDC /* SSDownloadStatus.h */, - F8FB71B120F2EC4500F56FDC /* SSPurchase.h */, - F8FB71B220F2EC4500F56FDC /* SSPurchaseResponse.h */, - ); - path = StoreFoundation; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - F8FB714D20F2B41400F56FDC /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F83213892173D3E1008BA8A0 /* CKAccountStore.h in Headers */, - F83213912173D3E1008BA8A0 /* CKDownloadDirectory.h in Headers */, - F832138A2173D3E1008BA8A0 /* CKDownloadQueue.h in Headers */, - F832138B2173D3E1008BA8A0 /* CKDownloadQueueObserver.h in Headers */, - F832138C2173D3E1008BA8A0 /* CKPurchaseController.h in Headers */, - F832138D2173D3E1008BA8A0 /* CKServiceInterface.h in Headers */, - F832138E2173D3E1008BA8A0 /* CKSoftwareMap.h in Headers */, - F83213922173D5AB008BA8A0 /* CKSoftwareProduct.h in Headers */, - F83213932173D5AB008BA8A0 /* CKUpdate.h in Headers */, - F83213942173D5AB008BA8A0 /* ISAccountService.h in Headers */, - F83213952173D5AB008BA8A0 /* ISAuthenticationContext.h in Headers */, - B578F061224FB5BD00D2086A /* ISAuthenticationResponse.h in Headers */, - F83213972173D5AB008BA8A0 /* ISServiceProxy.h in Headers */, - F83213982173D5AB008BA8A0 /* ISServiceRemoteObject.h in Headers */, - F83213992173D5AB008BA8A0 /* ISStoreAccount.h in Headers */, - F832139A2173D5AB008BA8A0 /* ISStoreClient.h in Headers */, - F8FB716220F2B41400F56FDC /* MasKit.h in Headers */, - F832139C2173D5B2008BA8A0 /* SSDownload.h in Headers */, - F832139D2173D5B2008BA8A0 /* SSDownloadMetadata.h in Headers */, - F832139E2173D5B2008BA8A0 /* SSDownloadPhase.h in Headers */, - F832139F2173D5B2008BA8A0 /* SSDownloadStatus.h in Headers */, - F83213A02173D5B2008BA8A0 /* SSPurchase.h in Headers */, - F83213A12173D5B2008BA8A0 /* SSPurchaseResponse.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - ED031A771B5127C00097692E /* mas */ = { - isa = PBXNativeTarget; - buildConfigurationList = ED031A7F1B5127C00097692E /* Build configuration list for PBXNativeTarget "mas" */; - buildPhases = ( - 90CB4073213F4E070044E445 /* Copy Debugging Symbols */, - ED031A741B5127C00097692E /* Sources */, - ED031A751B5127C00097692E /* Frameworks */, - ED031A761B5127C00097692E /* CopyFiles */, - E7460A391382D898934EFFBD /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - F83213882173D2EB008BA8A0 /* PBXTargetDependency */, - ); - name = mas; - packageProductDependencies = ( - ); - productName = "mas-cli"; - productReference = ED031A781B5127C00097692E /* mas */; - productType = "com.apple.product-type.tool"; - }; - F8FB715120F2B41400F56FDC /* MasKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = F8FB716720F2B41400F56FDC /* Build configuration list for PBXNativeTarget "MasKit" */; - buildPhases = ( - F8FB714D20F2B41400F56FDC /* Headers */, - F8FB714E20F2B41400F56FDC /* Sources */, - B576FE3121E96E6C0016B39D /* 🚨 Lint */, - F8FB714F20F2B41400F56FDC /* Frameworks */, - F8FB715020F2B41400F56FDC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = MasKit; - packageProductDependencies = ( - C56F16E82637C2B300EAC548 /* Version */, - C56F16EB2637C2C600EAC548 /* Commandant */, - ); - productName = MasKit; - productReference = F8FB715220F2B41400F56FDC /* MasKit.framework */; - productType = "com.apple.product-type.framework"; - }; - F8FB715920F2B41400F56FDC /* MasKitTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = F8FB716820F2B41400F56FDC /* Build configuration list for PBXNativeTarget "MasKitTests" */; - buildPhases = ( - F8FB715620F2B41400F56FDC /* Sources */, - F8FB715720F2B41400F56FDC /* Frameworks */, - F8FB715820F2B41400F56FDC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - F8FB715D20F2B41400F56FDC /* PBXTargetDependency */, - ); - name = MasKitTests; - packageProductDependencies = ( - C56F16D126376B3800EAC548 /* Nimble */, - C56F16D926376C4B00EAC548 /* Quick */, - ); - productName = MasKitTests; - productReference = F8FB715A20F2B41400F56FDC /* MasKitTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ED031A701B5127C00097692E /* Project object */ = { - isa = PBXProject; - attributes = { - DefaultBuildSystemTypeForWorkspace = Latest; - LastSwiftMigration = 0730; - LastSwiftUpdateCheck = 1000; - LastUpgradeCheck = 1200; - ORGANIZATIONNAME = "mas-cli"; - TargetAttributes = { - ED031A771B5127C00097692E = { - CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 1020; - }; - F8FB715120F2B41400F56FDC = { - CreatedOnToolsVersion = 10.0; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - F8FB715920F2B41400F56FDC = { - CreatedOnToolsVersion = 10.0; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = ED031A731B5127C00097692E /* Build configuration list for PBXProject "mas-cli" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = ED031A6F1B5127C00097692E; - packageReferences = ( - C56F16D026376B3800EAC548 /* XCRemoteSwiftPackageReference "Nimble" */, - C56F16D826376C4B00EAC548 /* XCRemoteSwiftPackageReference "Quick" */, - C56F16E72637C2B300EAC548 /* XCRemoteSwiftPackageReference "Version" */, - C56F16EA2637C2C600EAC548 /* XCRemoteSwiftPackageReference "Commandant" */, - ); - productRefGroup = ED031A791B5127C00097692E /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ED031A771B5127C00097692E /* mas */, - F8FB715120F2B41400F56FDC /* MasKit */, - F8FB715920F2B41400F56FDC /* MasKitTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - E7460A391382D898934EFFBD /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F8FB715020F2B41400F56FDC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F8FB715820F2B41400F56FDC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B5793E29219BDD4800135B39 /* JSON in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - B576FE3121E96E6C0016B39D /* 🚨 Lint */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "🚨 Lint"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/zsh; - shellScript = "script/lint\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - ED031A741B5127C00097692E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ED031A7C1B5127C00097692E /* main.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F8FB714E20F2B41400F56FDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F8FB716F20F2B4DD00F56FDC /* Account.swift in Sources */, - B576FE2A21E4240B0016B39D /* AppInfoFormatter.swift in Sources */, - B594B12721D5825800F3AC59 /* AppLibrary.swift in Sources */, - F85DA8B2240CBAFE00FE5650 /* CKSoftwareMap+SoftwareMap.swift in Sources */, - B594B12B21D5837200F3AC59 /* CKSoftwareProduct+SoftwareProduct.swift in Sources */, - F8FB716A20F2B4DD00F56FDC /* Downloader.swift in Sources */, - B588CE0221DC89490047D305 /* ExternalCommand.swift in Sources */, - B594B14C21D8983700F3AC59 /* Home.swift in Sources */, - F8FB717020F2B4DD00F56FDC /* Info.swift in Sources */, - F8FB717120F2B4DD00F56FDC /* Install.swift in Sources */, - F8FB716B20F2B4DD00F56FDC /* ISStoreAccount.swift in Sources */, - F8FB717220F2B4DD00F56FDC /* List.swift in Sources */, - F8FB717320F2B4DD00F56FDC /* Lucky.swift in Sources */, - B594B13021D5855D00F3AC59 /* MasAppLibrary.swift in Sources */, - F8FB717B20F2B4DD00F56FDC /* MASError.swift in Sources */, - B594B15221D89A8B00F3AC59 /* MasStoreSearch.swift in Sources */, - B576FE0421E113E90016B39D /* NetworkManager.swift in Sources */, - B576FE0021E113610016B39D /* NetworkSession.swift in Sources */, - B5DBF80D21DEE4E600F3B151 /* Open.swift in Sources */, - B576FDF721E107AA0016B39D /* OpenSystemCommand.swift in Sources */, - C56F16EF2639EC0C00EAC548 /* Package.swift in Sources */, - F8FB717420F2B4DD00F56FDC /* Outdated.swift in Sources */, - 75FB3E761F9F7841005B6F20 /* Purchase.swift in Sources */, - F80B27BA2611118E00A285C9 /* AppListFormatter.swift in Sources */, - F8FB716C20F2B4DD00F56FDC /* PurchaseDownloadObserver.swift in Sources */, - F8FB717520F2B4DD00F56FDC /* Reset.swift in Sources */, - F8FB717620F2B4DD00F56FDC /* Search.swift in Sources */, - B594B15421D89DF400F3AC59 /* SearchResult.swift in Sources */, - B576FE3321E985250016B39D /* SearchResultFormatter.swift in Sources */, - B576FDFA21E1081C0016B39D /* SearchResultList.swift in Sources */, - F8FB717720F2B4DD00F56FDC /* SignIn.swift in Sources */, - F8FB717820F2B4DD00F56FDC /* SignOut.swift in Sources */, - F85DA8B0240C32FA00FE5650 /* SoftwareMap.swift in Sources */, - B594B12921D5831D00F3AC59 /* SoftwareProduct.swift in Sources */, - F8FB716D20F2B4DD00F56FDC /* SSPurchase.swift in Sources */, - F8FB716E20F2B4DD00F56FDC /* StoreAccount.swift in Sources */, - B594B15021D8998000F3AC59 /* StoreSearch.swift in Sources */, - B576FE0E21E1D6310016B39D /* String+PercentEncoding.swift in Sources */, - B594B12021D53A8200F3AC59 /* Uninstall.swift in Sources */, - F8FB717920F2B4DD00F56FDC /* Upgrade.swift in Sources */, - B576FE0221E1139E0016B39D /* URLSession+NetworkSession.swift in Sources */, - F8FB717D20F2B4DD00F56FDC /* Utilities.swift in Sources */, - B5DBF80F21DEEB7B00F3B151 /* Vendor.swift in Sources */, - F8FB717A20F2B4DD00F56FDC /* Version.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F8FB715620F2B41400F56FDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B594B14A21D6D9AE00F3AC59 /* AccountCommandSpec.swift in Sources */, - B594B12E21D5850700F3AC59 /* AppLibraryMock.swift in Sources */, - B576FE1421E1D8A90016B39D /* Bundle+JSON.swift in Sources */, - B594B14E21D8984500F3AC59 /* HomeCommandSpec.swift in Sources */, - B594B14821D6D98400F3AC59 /* InfoCommandSpec.swift in Sources */, - B594B14621D6D95700F3AC59 /* InstallCommandSpec.swift in Sources */, - B594B12221D5416100F3AC59 /* ListCommandSpec.swift in Sources */, - B594B14421D6D91800F3AC59 /* LuckyCommandSpec.swift in Sources */, - F85DA8AE240C313900FE5650 /* MasAppLibrarySpec.swift in Sources */, - B576FDF521E1078F0016B39D /* MASErrorTestCase.swift in Sources */, - B576FDF321E03B780016B39D /* MasStoreSearchSpec.swift in Sources */, - B576FE0C21E116590016B39D /* NetworkManagerTests.swift in Sources */, - B576FE1B21E28E8A0016B39D /* NetworkSessionMock.swift in Sources */, - B576FE1221E1D82D0016B39D /* NetworkSessionMockFromFile.swift in Sources */, - B5DBF81321DEEC7C00F3B151 /* OpenCommandSpec.swift in Sources */, - B5DBF81721E02E3400F3B151 /* OpenSystemCommandMock.swift in Sources */, - F88CB8E12404DAAD00B691B5 /* OpenSystemCommandSpec.swift in Sources */, - B594B14221D6D8EC00F3AC59 /* OutdatedCommandSpec.swift in Sources */, - B576FE2C21E42A230016B39D /* OutputListener.swift in Sources */, - B576FE3021E5BD130016B39D /* OutputListenerSpec.swift in Sources */, - 60D8CF3624262F92005B4004 /* PurchaseCommandSpec.swift in Sources */, - B594B14021D6D8BF00F3AC59 /* ResetCommandSpec.swift in Sources */, - B594B13221D5876200F3AC59 /* ResultPredicates.swift in Sources */, - B594B13E21D6D78900F3AC59 /* SearchCommandSpec.swift in Sources */, - B55B3D9221ED9B8C0009A1A5 /* SearchResultFormatterSpec.swift in Sources */, - F8D095EC250096A6000899E6 /* SearchResultListSpec.swift in Sources */, - F8D095EA25009640000899E6 /* SearchResultSpec.swift in Sources */, - B594B13C21D6D72E00F3AC59 /* SignInCommandSpec.swift in Sources */, - B594B13A21D6D70400F3AC59 /* SignOutCommandSpec.swift in Sources */, - B576FDF921E107CA0016B39D /* SoftwareProductMock.swift in Sources */, - B5DBF81521E02BA900F3B151 /* StoreSearchMock.swift in Sources */, - B576FE3521E98AAE0016B39D /* StoreSearchSpec.swift in Sources */, - B576FE1621E1D8CB0016B39D /* String+FileExtension.swift in Sources */, - F80B27B62611116A00A285C9 /* AppListFormatterSpec.swift in Sources */, - B576FE2E21E5A8010016B39D /* Strongify.swift in Sources */, - B576FDFE21E10B660016B39D /* TestURLSessionDelegate.swift in Sources */, - B594B12521D580BB00F3AC59 /* UninstallCommandSpec.swift in Sources */, - B594B13821D6D6C100F3AC59 /* UpgradeCommandSpec.swift in Sources */, - B576FDFC21E10A610016B39D /* URLSessionConfiguration+Tests.swift in Sources */, - B576FE1D21E28EF70016B39D /* URLSessionDataTaskMock.swift in Sources */, - B5DBF81121DEEC4200F3B151 /* VendorCommandSpec.swift in Sources */, - B594B13621D6D68600F3AC59 /* VersionCommandSpec.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - F83213882173D2EB008BA8A0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F8FB715120F2B41400F56FDC /* MasKit */; - targetProxy = F83213872173D2EB008BA8A0 /* PBXContainerItemProxy */; - }; - F8FB715D20F2B41400F56FDC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F8FB715120F2B41400F56FDC /* MasKit */; - targetProxy = F8FB715C20F2B41400F56FDC /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - ED031A7D1B5127C00097692E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CREATE_INFOPLIST_SECTION_IN_BINARY = YES; - CURRENT_PROJECT_VERSION = 10800000; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - 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; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MARKETING_VERSION = 1.8.1; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.mphys.mas-cli"; - SDKROOT = macosx; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - ED031A7E1B5127C00097692E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CREATE_INFOPLIST_SECTION_IN_BINARY = YES; - CURRENT_PROJECT_VERSION = 10800000; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", - ); - GCC_C_LANGUAGE_STANDARD = gnu99; - 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; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MARKETING_VERSION = 1.8.1; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.mphys.mas-cli"; - SDKROOT = macosx; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; - ED031A801B5127C00097692E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - INFOPLIST_FILE = "Sources/mas/mas-Info.plist"; - INSTALL_PATH = /bin; - LD_RUNPATH_SEARCH_PATHS = ( - "@executable_path/.", - "@executable_path/MasKit.framework/Versions/Current/Frameworks", - "@executable_path/../Frameworks", - "@executable_path/../Frameworks/MasKit.framework/Versions/Current/Frameworks", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.mphys.mas-cli"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_FORCE_DYNAMIC_LINK_STDLIB = YES; - SWIFT_FORCE_STATIC_LINK_STDLIB = NO; - SWIFT_VERSION = 5.2; - }; - name = Debug; - }; - ED031A811B5127C00097692E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEPLOYMENT_LOCATION = YES; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - INFOPLIST_FILE = "Sources/mas/mas-Info.plist"; - INSTALL_PATH = /bin; - LD_RUNPATH_SEARCH_PATHS = ( - "@executable_path/.", - "@executable_path/MasKit.framework/Versions/Current/Frameworks", - "@executable_path/../Frameworks", - "@executable_path/../Frameworks/MasKit.framework/Versions/Current/Frameworks", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.mphys.mas-cli"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_FORCE_DYNAMIC_LINK_STDLIB = YES; - SWIFT_FORCE_STATIC_LINK_STDLIB = NO; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.2; - }; - name = Release; - }; - F8FB716320F2B41400F56FDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 7.0; - DYLIB_CURRENT_VERSION = 7.0; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - FRAMEWORK_VERSION = A; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = Sources/MasKit/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKit; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Sources/PrivateFrameworks/CommerceKit $(SRCROOT)/Sources/PrivateFrameworks/StoreFoundation"; - }; - name = Debug; - }; - F8FB716420F2B41400F56FDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 7.0; - DYLIB_CURRENT_VERSION = 7.0; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - FRAMEWORK_VERSION = A; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = Sources/MasKit/SupportingFiles/Info.plist; - INSTALL_PATH = /Frameworks; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKit; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/Sources/PrivateFrameworks/CommerceKit $(SRCROOT)/Sources/PrivateFrameworks/StoreFoundation"; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - F8FB716520F2B41400F56FDC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = Tests/MasKitTests/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 5.2; - }; - name = Debug; - }; - F8FB716620F2B41400F56FDC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = Tests/MasKitTests/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKitTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.2; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ED031A731B5127C00097692E /* Build configuration list for PBXProject "mas-cli" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ED031A7D1B5127C00097692E /* Debug */, - ED031A7E1B5127C00097692E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ED031A7F1B5127C00097692E /* Build configuration list for PBXNativeTarget "mas" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ED031A801B5127C00097692E /* Debug */, - ED031A811B5127C00097692E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F8FB716720F2B41400F56FDC /* Build configuration list for PBXNativeTarget "MasKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F8FB716320F2B41400F56FDC /* Debug */, - F8FB716420F2B41400F56FDC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F8FB716820F2B41400F56FDC /* Build configuration list for PBXNativeTarget "MasKitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F8FB716520F2B41400F56FDC /* Debug */, - F8FB716620F2B41400F56FDC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - C56F16D026376B3800EAC548 /* XCRemoteSwiftPackageReference "Nimble" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Quick/Nimble.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 9.0.1; - }; - }; - C56F16D826376C4B00EAC548 /* XCRemoteSwiftPackageReference "Quick" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Quick/Quick.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 3.1.2; - }; - }; - C56F16E72637C2B300EAC548 /* XCRemoteSwiftPackageReference "Version" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/mxcl/Version.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.0.0; - }; - }; - C56F16EA2637C2C600EAC548 /* XCRemoteSwiftPackageReference "Commandant" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Carthage/Commandant.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 0.18.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - C56F16D126376B3800EAC548 /* Nimble */ = { - isa = XCSwiftPackageProductDependency; - package = C56F16D026376B3800EAC548 /* XCRemoteSwiftPackageReference "Nimble" */; - productName = Nimble; - }; - C56F16D926376C4B00EAC548 /* Quick */ = { - isa = XCSwiftPackageProductDependency; - package = C56F16D826376C4B00EAC548 /* XCRemoteSwiftPackageReference "Quick" */; - productName = Quick; - }; - C56F16E82637C2B300EAC548 /* Version */ = { - isa = XCSwiftPackageProductDependency; - package = C56F16E72637C2B300EAC548 /* XCRemoteSwiftPackageReference "Version" */; - productName = Version; - }; - C56F16EB2637C2C600EAC548 /* Commandant */ = { - isa = XCSwiftPackageProductDependency; - package = C56F16EA2637C2C600EAC548 /* XCRemoteSwiftPackageReference "Commandant" */; - productName = Commandant; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = ED031A701B5127C00097692E /* Project object */; -} diff --git a/mas-cli.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/mas-cli.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index e1a2a1a5e..000000000 --- a/mas-cli.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/mas-cli.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/mas-cli.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/mas-cli.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/mas-cli.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/mas-cli.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 3ddf867a1..000000000 --- a/mas-cli.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - BuildSystemType - Latest - - diff --git a/mas-cli.xcodeproj/xcshareddata/xcschemes/MasKit.xcscheme b/mas-cli.xcodeproj/xcshareddata/xcschemes/MasKit.xcscheme deleted file mode 100644 index 554cfbc2c..000000000 --- a/mas-cli.xcodeproj/xcshareddata/xcschemes/MasKit.xcscheme +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Debug.xcscheme b/mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Debug.xcscheme deleted file mode 100644 index 8911205ad..000000000 --- a/mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Debug.xcscheme +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Release.xcscheme b/mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Release.xcscheme deleted file mode 100644 index 15f9e076b..000000000 --- a/mas-cli.xcodeproj/xcshareddata/xcschemes/mas-cli Release.xcscheme +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mas.xcworkspace/contents.xcworkspacedata b/mas.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 75bc7af5f..000000000 --- a/mas.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/mas.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/mas.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/mas.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/mas.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/mas.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index 3ddf867a1..000000000 --- a/mas.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - BuildSystemType - Latest - - diff --git a/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved b/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index e66dde2e5..000000000 --- a/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,61 +0,0 @@ -{ - "object": { - "pins": [ - { - "package": "Commandant", - "repositoryURL": "https://github.com/Carthage/Commandant.git", - "state": { - "branch": null, - "revision": "a1671cf728db837cf5ec1980a80d276bbba748f6", - "version": "0.18.0" - } - }, - { - "package": "CwlCatchException", - "repositoryURL": "https://github.com/mattgallagher/CwlCatchException.git", - "state": { - "branch": null, - "revision": "f809deb30dc5c9d9b78c872e553261a61177721a", - "version": "2.0.0" - } - }, - { - "package": "CwlPreconditionTesting", - "repositoryURL": "https://github.com/mattgallagher/CwlPreconditionTesting.git", - "state": { - "branch": null, - "revision": "02b7a39a99c4da27abe03cab2053a9034379639f", - "version": "2.0.0" - } - }, - { - "package": "Nimble", - "repositoryURL": "https://github.com/Quick/Nimble.git", - "state": { - "branch": null, - "revision": "7a54aaf19a8ef16f67787c260fda81ead7ba4d67", - "version": "9.0.1" - } - }, - { - "package": "Quick", - "repositoryURL": "https://github.com/Quick/Quick.git", - "state": { - "branch": null, - "revision": "8cce6acd38f965f5baa3167b939f86500314022b", - "version": "3.1.2" - } - }, - { - "package": "Version", - "repositoryURL": "https://github.com/mxcl/Version.git", - "state": { - "branch": null, - "revision": "a94b48f36763c05629fc102837398505032dead9", - "version": "2.0.0" - } - } - ] - }, - "version": 1 -} From d8ccec17fc7c9e92c08f4d6daa3781eeeb57b8c0 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:53:57 -0700 Subject: [PATCH 13/33] =?UTF-8?q?=F0=9F=8F=9B=20Remove=20reference=20to=20?= =?UTF-8?q?Carthage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/config.yml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .github/config.yml diff --git a/.github/config.yml b/.github/config.yml deleted file mode 100644 index 74c84afc8..000000000 --- a/.github/config.yml +++ /dev/null @@ -1,2 +0,0 @@ -todo: - exclude: "^Carthage/" \ No newline at end of file From 707c839dbf92e336f5db2ac2861dac7813442f77 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:54:38 -0700 Subject: [PATCH 14/33] =?UTF-8?q?=F0=9F=9B=A0=20Remove=20xcconfig=20overri?= =?UTF-8?q?des?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Homebrew/mas-tap.rb | 10 ---------- Homebrew/mas.rb | 10 ---------- 2 files changed, 20 deletions(-) diff --git a/Homebrew/mas-tap.rb b/Homebrew/mas-tap.rb index 29eace251..131934866 100644 --- a/Homebrew/mas-tap.rb +++ b/Homebrew/mas-tap.rb @@ -26,16 +26,6 @@ class Mas < Formula end def install - # Working around build issues in dependencies - # - Prevent warnings from causing build failures - # - Prevent linker errors by telling all lib builds to use max size install names - xcconfig = buildpath/"Overrides.xcconfig" - xcconfig.write <<~EOS - GCC_TREAT_WARNINGS_AS_ERRORS = NO - OTHER_LDFLAGS = -headerpad_max_install_names - EOS - ENV["XCODE_XCCONFIG_FILE"] = xcconfig - system "script/install", prefix bash_completion.install "contrib/completion/mas-completion.bash" => "mas" diff --git a/Homebrew/mas.rb b/Homebrew/mas.rb index 3fd47cae3..2b88d028f 100644 --- a/Homebrew/mas.rb +++ b/Homebrew/mas.rb @@ -21,16 +21,6 @@ class Mas < Formula end def install - # Working around build issues in dependencies - # - Prevent warnings from causing build failures - # - Prevent linker errors by telling all lib builds to use max size install names - xcconfig = buildpath/"Overrides.xcconfig" - xcconfig.write <<~EOS - GCC_TREAT_WARNINGS_AS_ERRORS = NO - OTHER_LDFLAGS = -headerpad_max_install_names - EOS - ENV["XCODE_XCCONFIG_FILE"] = xcconfig - system "script/install", prefix bash_completion.install "contrib/completion/mas-completion.bash" => "mas" From a45487ec9ce928f5bf5a61572c0f9cd80fb2f1c0 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:55:29 -0700 Subject: [PATCH 15/33] =?UTF-8?q?=F0=9F=93=9C=20Remove=20unused=20release?= =?UTF-8?q?=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/release | 86 -------------------------------------------------- 1 file changed, 86 deletions(-) delete mode 100755 script/release diff --git a/script/release b/script/release deleted file mode 100755 index ea5ca79bf..000000000 --- a/script/release +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -e -# -# script/release -# mas -# -# Updates app version in Info.plist file and tags release commit. -# Not currently in use. -# - -PLIST_FILE="$PWD/App/mas-cli-Info.plist" - -main() { - VERSION_NUMBER=$(update_version_number) - - git add "$PLIST_FILE" - git commit -eF <(commit_message) - - git tag -a "v${VERSION_NUMBER}" - - echo "Finalise release with: git push --tags" -} - -commit_message() { - cat < $1" >&2 - read -r input - echo "$input" -} - -write_version_number() { - local value - value=$1 - shift - write_plist "CFBundleShortVersionString" "${value}" -} - -read_version_number() { - read_plist "CFBundleShortVersionString" -} - -read_plist() { - local key - key=$1 - shift - /usr/libexec/PlistBuddy -c "Print :${key}" "${PLIST_FILE}" -} - -write_plist() { - local key - local value - key=$1 - shift - value=$1 - shift - echo "Setting ${key} to ${value}" >&2 - /usr/libexec/PlistBuddy -c "Set :${key} ${value}" "${PLIST_FILE}" -} - -main From 923fb185262e86fe218bf58acdd8f14a20310ecb Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:56:58 -0700 Subject: [PATCH 16/33] =?UTF-8?q?=F0=9F=9B=A0=20Remove=20remnants=20of=20X?= =?UTF-8?q?code=20project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/SupportingFiles/Info.plist | 24 -------------------- Sources/MasKit/SupportingFiles/MasKit.h | 17 -------------- Sources/mas/mas-Info.plist | 18 --------------- Tests/MasKitTests/SupportingFiles/Info.plist | 22 ------------------ 4 files changed, 81 deletions(-) delete mode 100644 Sources/MasKit/SupportingFiles/Info.plist delete mode 100644 Sources/MasKit/SupportingFiles/MasKit.h delete mode 100644 Sources/mas/mas-Info.plist delete mode 100644 Tests/MasKitTests/SupportingFiles/Info.plist diff --git a/Sources/MasKit/SupportingFiles/Info.plist b/Sources/MasKit/SupportingFiles/Info.plist deleted file mode 100644 index f78d04b9d..000000000 --- a/Sources/MasKit/SupportingFiles/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - NSHumanReadableCopyright - Copyright © 2018 Andrew Naylor. All rights reserved. - - diff --git a/Sources/MasKit/SupportingFiles/MasKit.h b/Sources/MasKit/SupportingFiles/MasKit.h deleted file mode 100644 index 154841cfc..000000000 --- a/Sources/MasKit/SupportingFiles/MasKit.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// MasKit.h -// MasKit -// -// Created by Ben Chatelain on 7/8/18. -// Copyright © 2018 Andrew Naylor. All rights reserved. -// - -@import Foundation; - -//! Project version number for MasKit. -FOUNDATION_EXPORT double MasKitVersionNumber; - -//! Project version string for MasKit. -FOUNDATION_EXPORT const unsigned char MasKitVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import diff --git a/Sources/mas/mas-Info.plist b/Sources/mas/mas-Info.plist deleted file mode 100644 index cb345578d..000000000 --- a/Sources/mas/mas-Info.plist +++ /dev/null @@ -1,18 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en_GB - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - mas-cli - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - - diff --git a/Tests/MasKitTests/SupportingFiles/Info.plist b/Tests/MasKitTests/SupportingFiles/Info.plist deleted file mode 100644 index 26b175dc1..000000000 --- a/Tests/MasKitTests/SupportingFiles/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - - From e28c67eaadc43df9381530546fcd03d62e90c65a Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:57:32 -0700 Subject: [PATCH 17/33] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Update=20minimum=20m?= =?UTF-8?q?acOS=20for=20mas.pkg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Package/Distribution.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package/Distribution.plist b/Package/Distribution.plist index fe00d1134..09ab7ebd7 100644 --- a/Package/Distribution.plist +++ b/Package/Distribution.plist @@ -5,7 +5,7 @@ - + From d9c6c1d4c918b18441b8c3dc8fadeb652820edd3 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 15:22:00 -0700 Subject: [PATCH 18/33] =?UTF-8?q?=F0=9F=90=B6=20Stop=20running=20old=20ver?= =?UTF-8?q?sion=20of=20SwiftLint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hound.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.hound.yml b/.hound.yml index 88e27f479..79acba67b 100644 --- a/.hound.yml +++ b/.hound.yml @@ -15,3 +15,6 @@ rubocop: shellcheck: enabled: true + +swiftlint: + enabled: false From 5f1e3afc953b1741894e4e0ed21f61d7ead120ab Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 16:20:08 -0700 Subject: [PATCH 19/33] =?UTF-8?q?=F0=9F=A6=BA=20Remove=20redundant=20frame?= =?UTF-8?q?work=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Package.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/Package.swift b/Package.swift index 7b7c8e99b..b2769ff6f 100644 --- a/Package.swift +++ b/Package.swift @@ -34,7 +34,6 @@ let package = Package( dependencies: ["MasKit"], swiftSettings: [ .unsafeFlags([ - "-F", "/System/Library/PrivateFrameworks", "-I", "Sources/PrivateFrameworks/CommerceKit", "-I", "Sources/PrivateFrameworks/StoreFoundation", ]), @@ -45,7 +44,6 @@ let package = Package( dependencies: ["Commandant", "Version"], swiftSettings: [ .unsafeFlags([ - "-F", "/System/Library/PrivateFrameworks", "-I", "Sources/PrivateFrameworks/CommerceKit", "-I", "Sources/PrivateFrameworks/StoreFoundation", ]), @@ -62,7 +60,6 @@ let package = Package( resources: [.copy("JSON")], swiftSettings: [ .unsafeFlags([ - "-F", "/System/Library/PrivateFrameworks", "-I", "Sources/PrivateFrameworks/CommerceKit", "-I", "Sources/PrivateFrameworks/StoreFoundation", ]), From c238585df8a9b1cfa5015cd03009c108ca60c0c4 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 14:56:24 -0700 Subject: [PATCH 20/33] =?UTF-8?q?=F0=9F=94=8D=20Simplify=20test=20resource?= =?UTF-8?q?=20lookup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MasKitTests/Extensions/Bundle+JSON.swift | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/Tests/MasKitTests/Extensions/Bundle+JSON.swift b/Tests/MasKitTests/Extensions/Bundle+JSON.swift index ef0129f12..115924393 100644 --- a/Tests/MasKitTests/Extensions/Bundle+JSON.swift +++ b/Tests/MasKitTests/Extensions/Bundle+JSON.swift @@ -13,7 +13,6 @@ extension Data { /// - Parameter file: Relative path within the JSON folder init(from fileName: String) { let fileURL = Bundle.url(for: fileName)! - print("fileURL: \(fileURL)") try! self.init(contentsOf: fileURL, options: .mappedIfSafe) } } @@ -24,28 +23,30 @@ extension Bundle { /// - Parameter fileName: Name of file to locate. /// - Returns: URL to file. static func url(for fileName: String) -> URL? { - var bundle = Bundle(for: NetworkSessionMock.self) - #if SWIFT_PACKAGE // The Swift Package Manager places resources in a separate bundle from the executable. - bundle = - Bundle(url: bundle.bundleURL.deletingLastPathComponent().appendingPathComponent("mas_MasKitTests.bundle"))! - #endif - return bundle.url(for: fileName) + // https://forums.swift.org/t/swift-5-3-spm-resources-in-tests-uses-wrong-bundle-path/37051 + let bundleURL = Bundle(for: NetworkSessionMock.self) + .bundleURL + .deletingLastPathComponent() + .appendingPathComponent("mas_MasKitTests.bundle") + guard let bundle = Bundle(url: bundleURL), + let url = bundle.url(for: fileName) + else { + fatalError("Unable to load file \(fileName)") + } + + return url } /// Builds a URL for a file in the JSON directory of the current bundle. /// /// - Parameter fileName: Name of file to locate. /// - Returns: URL to file. - func url(for fileName: String) -> URL? { - guard - let url = self.url( - forResource: fileName.fileNameWithoutExtension, - withExtension: fileName.fileExtension, - subdirectory: "JSON" - ) - else { fatalError("Unable to load file \(fileName)") } - - return url + private func url(for fileName: String) -> URL? { + url( + forResource: fileName.fileNameWithoutExtension, + withExtension: fileName.fileExtension, + subdirectory: "JSON" + ) } } From 64e1cb467cd196dd3f80e327556b5cd8dc377242 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 19:48:19 -0700 Subject: [PATCH 21/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Simplify=20OutputLis?= =?UTF-8?q?tener?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Formatters/Utilities.swift | 13 ++++ .../Commands/InfoCommandSpec.swift | 6 -- Tests/MasKitTests/OutputListener.swift | 69 ++----------------- Tests/MasKitTests/OutputListenerSpec.swift | 12 ---- 4 files changed, 19 insertions(+), 81 deletions(-) diff --git a/Sources/MasKit/Formatters/Utilities.swift b/Sources/MasKit/Formatters/Utilities.swift index 97ef68a74..3527e0cef 100644 --- a/Sources/MasKit/Formatters/Utilities.swift +++ b/Sources/MasKit/Formatters/Utilities.swift @@ -13,6 +13,19 @@ import Foundation /// Terminal Control Sequence Indicator let csi = "\u{001B}[" +var printObserver: ((String) -> Void)? + +// Override global print for testability. +// See MasKitTests/OutputListener.swift. +func print(_ items: Any..., separator: String = " ", terminator: String = "\n") { + if let observer = printObserver { + let output = items.map { "\($0)" }.joined(separator: separator) + observer(output) + } + + Swift.print(items, separator: separator, terminator: terminator) +} + func printInfo(_ message: String) { guard isatty(fileno(stdout)) != 0 else { print("==> \(message)") diff --git a/Tests/MasKitTests/Commands/InfoCommandSpec.swift b/Tests/MasKitTests/Commands/InfoCommandSpec.swift index 0da85134d..8e27e0250 100644 --- a/Tests/MasKitTests/Commands/InfoCommandSpec.swift +++ b/Tests/MasKitTests/Commands/InfoCommandSpec.swift @@ -33,7 +33,6 @@ class InfoCommandSpec: QuickSpec { Minimum OS: 10.14 Size: 1 KB From: https://awesome.app - """ describe("Info command") { @@ -59,16 +58,11 @@ class InfoCommandSpec: QuickSpec { it("displays app details") { storeSearch.apps[result.trackId] = result let output = OutputListener() - output.openConsolePipe() let result = cmd.run(InfoCommand.Options(appId: result.trackId)) expect(result).to(beSuccess()) - // output is async so need to wait for contents to be updated - expect(output.contents).toEventuallyNot(beEmpty()) expect(output.contents) == expectedOutput - - output.closeConsolePipe() } } } diff --git a/Tests/MasKitTests/OutputListener.swift b/Tests/MasKitTests/OutputListener.swift index 7f4b8c894..47458dd98 100644 --- a/Tests/MasKitTests/OutputListener.swift +++ b/Tests/MasKitTests/OutputListener.swift @@ -6,80 +6,23 @@ // Copyright © 2019 mas-cli. All rights reserved. // -import Foundation +@testable import MasKit /// Test helper for monitoring strings written to stdout. Modified from: -/// https://medium.com/@thesaadismail/eavesdropping-on-swifts-print-statements-57f0215efb42 +/// https://stackoverflow.com/a/53569018 class OutputListener { - /// consumes the messages on STDOUT - let inputPipe = Pipe() - - /// outputs messages back to STDOUT - let outputPipe = Pipe() - /// Buffers strings written to stdout var contents = "" init() { - // Set up a read handler which fires when data is written to our inputPipe - inputPipe.fileHandleForReading.readabilityHandler = { [weak self] fileHandle in + MasKit.printObserver = { [weak self] text in strongify(self) { context in - let data = fileHandle.availableData - if let string = String(data: data, encoding: String.Encoding.utf8) { - context.contents += string - } - - // Write input back to stdout - context.outputPipe.fileHandleForWriting.write(data) + context.contents += text } } } -} - -extension OutputListener { - /// Sets up the "tee" of piped output, intercepting stdout then passing it through. - /// - /// ## [dup2 documentation](https://linux.die.net/man/2/dup2) - /// `int dup2(int oldfd, int newfd);` - /// `dup2()` makes `newfd` be the copy of `oldfd`, closing `newfd` first if necessary. - func openConsolePipe() { - var dupStatus: Int32 - - // Copy STDOUT file descriptor to outputPipe for writing strings back to STDOUT - dupStatus = dup2(stdoutFileDescriptor, outputPipe.fileHandleForWriting.fileDescriptor) - // Status should equal newfd - assert(dupStatus == outputPipe.fileHandleForWriting.fileDescriptor) - - // Intercept STDOUT with inputPipe - // newFileDescriptor is the pipe's file descriptor and the old file descriptor is STDOUT_FILENO - dupStatus = dup2(inputPipe.fileHandleForWriting.fileDescriptor, stdoutFileDescriptor) - // Status should equal newfd - assert(dupStatus == stdoutFileDescriptor) - - // Don't have any tests on stderr yet - // dup2(inputPipe.fileHandleForWriting.fileDescriptor, stderr) - } - - /// Tears down the "tee" of piped output. - func closeConsolePipe() { - // Restore stdout - freopen("/dev/stdout", "a", stdout) - - [inputPipe.fileHandleForReading, outputPipe.fileHandleForWriting] - .forEach { file in - file.closeFile() - } - } -} - -extension OutputListener { - /// File descriptor for stdout (aka STDOUT_FILENO) - var stdoutFileDescriptor: Int32 { - FileHandle.standardOutput.fileDescriptor - } - /// File descriptor for stderr (aka STDERR_FILENO) - var stderrFileDescriptor: Int32 { - FileHandle.standardError.fileDescriptor + deinit { + MasKit.printObserver = nil } } diff --git a/Tests/MasKitTests/OutputListenerSpec.swift b/Tests/MasKitTests/OutputListenerSpec.swift index dc00b24e7..8025b9a8a 100644 --- a/Tests/MasKitTests/OutputListenerSpec.swift +++ b/Tests/MasKitTests/OutputListenerSpec.swift @@ -14,22 +14,14 @@ class OutputListenerSpec: QuickSpec { xdescribe("output listener") { it("can intercept a single line written stdout") { let output = OutputListener() - output.openConsolePipe() - let expectedOutput = "hi there" print("hi there", terminator: "") - // output is async so need to wait for contents to be updated - expect(output.contents).toEventuallyNot(beEmpty()) expect(output.contents) == expectedOutput - - output.closeConsolePipe() } it("can intercept multiple lines written stdout") { let output = OutputListener() - output.openConsolePipe() - let expectedOutput = """ hi there @@ -37,11 +29,7 @@ class OutputListenerSpec: QuickSpec { print("hi there") - // output is async so need to wait for contents to be updated - expect(output.contents).toEventuallyNot(beEmpty()) expect(output.contents) == expectedOutput - - output.closeConsolePipe() } } } From fec436070db3eb59bc86b4ae6c204684bec58a70 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 19:49:23 -0700 Subject: [PATCH 22/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Remove=20unused=20im?= =?UTF-8?q?port?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift b/Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift index efe5d129d..539fa7777 100644 --- a/Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift +++ b/Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift @@ -7,7 +7,6 @@ // import Foundation -import MasKit /// Mock NetworkSession for testing with saved JSON response payload files. class NetworkSessionMockFromFile: NetworkSessionMock { From d0738e50b6fcf19010cce7e18c83cbc864d13f7e Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 21:10:50 -0700 Subject: [PATCH 23/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Append=20terminator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Formatters/Utilities.swift | 5 ++++- Tests/MasKitTests/Commands/InfoCommandSpec.swift | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Sources/MasKit/Formatters/Utilities.swift b/Sources/MasKit/Formatters/Utilities.swift index 3527e0cef..ede1cde0a 100644 --- a/Sources/MasKit/Formatters/Utilities.swift +++ b/Sources/MasKit/Formatters/Utilities.swift @@ -19,7 +19,10 @@ var printObserver: ((String) -> Void)? // See MasKitTests/OutputListener.swift. func print(_ items: Any..., separator: String = " ", terminator: String = "\n") { if let observer = printObserver { - let output = items.map { "\($0)" }.joined(separator: separator) + let output = items + .map { "\($0)" } + .joined(separator: separator) + .appending(terminator) observer(output) } diff --git a/Tests/MasKitTests/Commands/InfoCommandSpec.swift b/Tests/MasKitTests/Commands/InfoCommandSpec.swift index 8e27e0250..0e964f6f4 100644 --- a/Tests/MasKitTests/Commands/InfoCommandSpec.swift +++ b/Tests/MasKitTests/Commands/InfoCommandSpec.swift @@ -33,6 +33,7 @@ class InfoCommandSpec: QuickSpec { Minimum OS: 10.14 Size: 1 KB From: https://awesome.app + """ describe("Info command") { From a3e32656bc3f43843c8a6cbb77b5843ff9964c6b Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 22:28:29 -0700 Subject: [PATCH 24/33] =?UTF-8?q?=F0=9F=97=9C=20Update=20mas.pkg=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Package/Components.plist | 23 ----------------------- script/build_artifacts | 1 - script/install | 2 -- script/package | 24 ++++++++---------------- script/package_install | 2 +- 5 files changed, 9 insertions(+), 43 deletions(-) delete mode 100644 Package/Components.plist diff --git a/Package/Components.plist b/Package/Components.plist deleted file mode 100644 index e331ddae1..000000000 --- a/Package/Components.plist +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - BundleIsVersionChecked - - BundleOverwriteAction - upgrade - ChildBundles - - - BundleOverwriteAction - - RootRelativeBundlePath - Frameworks/MasKit.framework/Versions/A/Frameworks/Commandant.framework - - - RootRelativeBundlePath - Frameworks/MasKit.framework - - - diff --git a/script/build_artifacts b/script/build_artifacts index 479ddae10..a3b3a10da 100755 --- a/script/build_artifacts +++ b/script/build_artifacts @@ -13,5 +13,4 @@ echo "Building mas $VERSION artifacts" script/clean script/build script/archive -script/install script/package diff --git a/script/install b/script/install index 5d5f49555..20c4466d6 100755 --- a/script/install +++ b/script/install @@ -21,8 +21,6 @@ else PREFIX=/usr/local fi -script/build - echo "==> 📲 Installing mas ($VERSION) for $ARCH to $PREFIX" ditto -v \ ".build/apple/Products/Release/mas" \ diff --git a/script/package b/script/package index b98961463..526c2c410 100755 --- a/script/package +++ b/script/package @@ -6,46 +6,38 @@ # Builds macOS installer component and distribution packages. # -BUILD_DIR="$PWD/build" +BUILD_DIR="$PWD/.build" COMPONENT_PACKAGE="$BUILD_DIR/mas_components.pkg" DISTRIBUTION_PACKAGE="$BUILD_DIR/mas.pkg" IDENTIFIER="com.mphys.mas-cli" -# Component package definition -COMPONENTS_PLIST="Package/Components.plist" - # Distribution package definition # https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html DISTRIBUTION_PLIST="Package/Distribution.plist" -# Destination for `xcodebuild install` -# DSTROOT will be updated if unset. -INSTALL_TEMPORARY_FOLDER=${DSTROOT:-build/distributions} -mkdir -p "$INSTALL_TEMPORARY_FOLDER" +# Destination for install root +DSTROOT=.build/distributions +script/install "$DSTROOT/usr/local" VERSION=$(script/version) echo "==> 📦 Assemble an installer package" # Assemble macOS installer component package (aka "product archive"). -# Using /usr/local prefix to avoid the following errors with "/" -# - installer: The install failed (The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.) -# - GUI warning: This package is incompatible with this version of macOS and may fail to install. (may damage your system... ) pkgbuild \ --identifier "$IDENTIFIER" \ - --install-location "/usr/local" \ + --install-location "/" \ --version "$VERSION" \ - --root "$INSTALL_TEMPORARY_FOLDER" \ - --component-plist "$COMPONENTS_PLIST" \ + --root "$DSTROOT" \ "$COMPONENT_PACKAGE" # Build distribution package (aka "product archive"). Not sure why, but this is how Carthage does it. -# https://github.com/Carthage/Carthage/blob/master/Makefile#L87 +# https://github.com/Carthage/Carthage/blob/master/Makefile#L69 productbuild \ --distribution "$DISTRIBUTION_PLIST" \ --package-path "$BUILD_DIR" \ "$DISTRIBUTION_PACKAGE" -echo "==> 🔢 Files Hashes" +echo "==> 🔢 File Hash" shasum -a 256 "$DISTRIBUTION_PACKAGE" diff --git a/script/package_install b/script/package_install index 61def1ae6..3419135c9 100755 --- a/script/package_install +++ b/script/package_install @@ -11,7 +11,7 @@ IDENTIFIER=com.mphys.mas-cli echo "==> 📲 Installing mas" sudo installer \ - -pkg build/mas.pkg \ + -pkg .build/mas.pkg \ -target / pkgutil --pkg-info "$IDENTIFIER" From 43ea739a09a7c1c5ed3fc33c8a088736bbc6e038 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 22:35:32 -0700 Subject: [PATCH 25/33] =?UTF-8?q?=F0=9F=93=84=20Update=20build=20instructi?= =?UTF-8?q?ons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3badbd95e..257097a97 100644 --- a/README.md +++ b/README.md @@ -205,7 +205,7 @@ reattach-to-user-namespace mas install ## ℹ️ Build from source -You can now build from Xcode by opening `mas-cli.xcodeproj`, or from the Terminal: +You can build from Xcode by opening the root `mas` directory, or from the Terminal: ```bash script/build From 635d5e1432f84b4e911a774af69a10285c8a1971 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 22:38:03 -0700 Subject: [PATCH 26/33] =?UTF-8?q?=F0=9F=9A=A8=20Update=20source=20paths=20?= =?UTF-8?q?in=20Dangerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dangerfile | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Dangerfile b/Dangerfile index bcc98a36f..274fc0196 100644 --- a/Dangerfile +++ b/Dangerfile @@ -8,14 +8,12 @@ # Sometimes it's a README fix, or something like that - which isn't relevant for # including in a project's CHANGELOG for example -has_app_changes = !git.modified_files.grep(/MasKit/).empty? -has_test_changes = !git.modified_files.grep(/MasKitTests/).empty? +has_app_changes = !git.modified_files.grep(/Sources/).empty? +has_test_changes = !git.modified_files.grep(/Tests/).empty? is_version_bump = git.modified_files.sort == [ - "mas/mas-Info.plist", - "mas-cli.xcodeproj/project.pbxproj", - "MasKit/SupportingFiles/Info.plist", - "MasKitTests/SupportingFiles/Info.plist" + "Package.swift", + "MasKit/SupportingFiles/Package.swift" ].sort message(":bookmark: Version bump!") if is_version_bump From 688900f4e8d9fe38f57fded7e818f117eb4cb906 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 22:51:33 -0700 Subject: [PATCH 27/33] =?UTF-8?q?=F0=9F=A4=96=20Determine=20version=20from?= =?UTF-8?q?=20latest=20git=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/version | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/script/version b/script/version index 9657db8aa..f97314c32 100755 --- a/script/version +++ b/script/version @@ -9,7 +9,8 @@ # This no longer works with MARKETING_VERSION build setting in Info.plist # agvtool what-marketing-version -terse1 -VERSION="1.8.1" +VERSION=$(git describe --abbrev=0 --tags) +VERSION=${VERSION#v} SCRIPT_PATH=$(dirname $(which $0)) cat <"${SCRIPT_PATH}/../Sources/MasKit/SupportingFiles/Package.swift" From 5a2d7717c905cf94edaa9126d05cd500563a2c81 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 22:56:34 -0700 Subject: [PATCH 28/33] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Remove=20generated?= =?UTF-8?q?=20source=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Sources/MasKit/SupportingFiles/Package.swift | 4 ---- script/bootstrap | 3 +++ script/version | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 Sources/MasKit/SupportingFiles/Package.swift diff --git a/.gitignore b/.gitignore index 3b099ac7a..18eb50cab 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ build/ default.profraw releases/ xcuserdata +Sources/MasKit/Package.swift diff --git a/Sources/MasKit/SupportingFiles/Package.swift b/Sources/MasKit/SupportingFiles/Package.swift deleted file mode 100644 index 9014cdb30..000000000 --- a/Sources/MasKit/SupportingFiles/Package.swift +++ /dev/null @@ -1,4 +0,0 @@ -// Generated by: script/version -enum Package { - static let Version = "1.8.1" -} diff --git a/script/bootstrap b/script/bootstrap index a0e34f5be..d4e3aec27 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -17,6 +17,9 @@ main() { # Install Homebrew tools rm -f Brewfile.lock.json brew bundle install --no-upgrade --verbose + + # Generate Package.swift + script/version } main diff --git a/script/version b/script/version index f97314c32..b2372d9f8 100755 --- a/script/version +++ b/script/version @@ -13,7 +13,8 @@ VERSION=$(git describe --abbrev=0 --tags) VERSION=${VERSION#v} SCRIPT_PATH=$(dirname $(which $0)) -cat <"${SCRIPT_PATH}/../Sources/MasKit/SupportingFiles/Package.swift" + +cat <"${SCRIPT_PATH}/../Sources/MasKit/Package.swift" // Generated by: script/version enum Package { static let Version = "${VERSION}" From 3e027dbd4435e35e448b1e955974b6fa6f228706 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Wed, 28 Apr 2021 23:10:15 -0700 Subject: [PATCH 29/33] =?UTF-8?q?=F0=9F=8F=B7=20Fetch=20tags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-test.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index eba9663f2..c2b404050 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -17,16 +17,14 @@ jobs: # https://github.com/actions/checkout#usage - uses: actions/checkout@master with: + # Fetch tags for script/version + fetch-depth: 0 # https://docs.github.com/en/actions/reference/authentication-in-a-workflow token: ${{ secrets.GITHUB_TOKEN }} - name: Bootstrap run: script/bootstrap # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsenv - env: - # Carthage looks for GITHUB_ACCESS_TOKEN - # https://github.com/Carthage/Carthage/blob/master/Source/CarthageKit/GitHub.swift#L118 - GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Build run: script/build From 5f6618c72e8c588e6339afcd8aaaf42ec204fd1d Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Thu, 29 Apr 2021 08:52:03 -0700 Subject: [PATCH 30/33] =?UTF-8?q?=F0=9F=9A=A6=20Update=20Build=20&=20Test?= =?UTF-8?q?=20badge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 257097a97..85eedb3e9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ A simple command line interface for the Mac App Store. Designed for scripting an [![Swift 5](https://img.shields.io/badge/Language-Swift_5-orange.svg)](https://swift.org) [![GitHub Release](https://img.shields.io/github/release/mas-cli/mas.svg)](https://github.com/mas-cli/mas/releases) [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) -[![Pipeline Status](https://jenkins.log-g.co/buildStatus/icon?job=mas-cli/mas/master)](https://jenkins.log-g.co/job/mas-cli/job/mas/job/master/) +[![Build & Test](https://github.com/mas-cli/mas/actions/workflows/build-test.yml/badge.svg?branch=master)](https://github.com/mas-cli/mas/actions/workflows/build-test.yml?query=branch%3Amaster) ## 📲 Install From 6163d7c8043b0dcd9041ff638632a7921f2d40f6 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Thu, 29 Apr 2021 09:05:37 -0700 Subject: [PATCH 31/33] =?UTF-8?q?=F0=9F=92=8E=20Update=20ruby=20gems=20bun?= =?UTF-8?q?dle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6c8e2b4b9..69e84f571 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -24,13 +24,17 @@ GEM no_proxy_fix octokit (~> 4.7) terminal-table (>= 1, < 4) - faraday (1.3.0) + faraday (1.4.1) + faraday-excon (~> 1.1) faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) multipart-post (>= 1.2, < 3) - ruby2_keywords + ruby2_keywords (>= 0.0.4) + faraday-excon (1.1.0) faraday-http-cache (2.2.0) faraday (>= 0.8) faraday-net_http (1.0.1) + faraday-net_http_persistent (1.1.0) git (1.8.1) rchardet (~> 1.8) kramdown (2.3.1) @@ -40,13 +44,13 @@ GEM multipart-post (2.1.1) nap (1.1.0) no_proxy_fix (0.1.2) - octokit (4.20.0) + octokit (4.21.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) open4 (1.3.4) public_suffix (4.0.6) rchardet (1.8.0) - rexml (3.2.4) + rexml (3.2.5) rouge (2.0.7) ruby2_keywords (0.0.4) sawyer (0.8.2) From 66b61c638131a0c560f94db7adc0e5909e290abf Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Sun, 2 May 2021 12:57:48 -0700 Subject: [PATCH 32/33] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Require=20Xcode=2012?= =?UTF-8?q?.0=20for=20Swift=205.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Homebrew/mas-tap.rb | 2 +- Homebrew/mas.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Homebrew/mas-tap.rb b/Homebrew/mas-tap.rb index 131934866..6678ee52d 100644 --- a/Homebrew/mas-tap.rb +++ b/Homebrew/mas-tap.rb @@ -22,7 +22,7 @@ class Mas < Formula if Hardware::CPU.arm? depends_on xcode: ["12.2", :build] else - depends_on xcode: ["11.4", :build] + depends_on xcode: ["12.0", :build] end def install diff --git a/Homebrew/mas.rb b/Homebrew/mas.rb index 2b88d028f..1aba3a839 100644 --- a/Homebrew/mas.rb +++ b/Homebrew/mas.rb @@ -17,7 +17,7 @@ class Mas < Formula if Hardware::CPU.arm? depends_on xcode: ["12.2", :build] else - depends_on xcode: ["11.4", :build] + depends_on xcode: ["12.0", :build] end def install From 3059bf3e42ea5196fa1a9e1a301c1415d3e25327 Mon Sep 17 00:00:00 2001 From: Chris Araman Date: Sun, 2 May 2021 14:42:27 -0700 Subject: [PATCH 33/33] =?UTF-8?q?=F0=9F=96=A8=20Fix=20print=20override?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/MasKit/Formatters/Utilities.swift | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Sources/MasKit/Formatters/Utilities.swift b/Sources/MasKit/Formatters/Utilities.swift index ede1cde0a..60d88eda0 100644 --- a/Sources/MasKit/Formatters/Utilities.swift +++ b/Sources/MasKit/Formatters/Utilities.swift @@ -18,15 +18,16 @@ var printObserver: ((String) -> Void)? // Override global print for testability. // See MasKitTests/OutputListener.swift. func print(_ items: Any..., separator: String = " ", terminator: String = "\n") { + let output = items + .map { "\($0)" } + .joined(separator: separator) + .appending(terminator) + if let observer = printObserver { - let output = items - .map { "\($0)" } - .joined(separator: separator) - .appending(terminator) observer(output) } - Swift.print(items, separator: separator, terminator: terminator) + Swift.print(output) } func printInfo(_ message: String) {