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
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
diff --git a/.gitignore b/.gitignore
index 5621b3e6d..18eb50cab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,9 +22,11 @@
.VolumeIcon.icns
._*
.apdisk
+.build/
.envrc
.fseventsd
.rubygems/
+.swiftpm/
Carthage/
DerivedData
Pods/
@@ -34,3 +36,4 @@ build/
default.profraw
releases/
xcuserdata
+Sources/MasKit/Package.swift
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
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/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
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)
diff --git a/Homebrew/mas-tap.rb b/Homebrew/mas-tap.rb
index 68bd669c4..6678ee52d 100644
--- a/Homebrew/mas-tap.rb
+++ b/Homebrew/mas-tap.rb
@@ -18,27 +18,14 @@ 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]
else
- depends_on xcode: ["11.4", :build]
+ depends_on xcode: ["12.0", :build]
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
-
- # 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..1aba3a839 100644
--- a/Homebrew/mas.rb
+++ b/Homebrew/mas.rb
@@ -13,27 +13,14 @@ 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]
else
- depends_on xcode: ["11.4", :build]
+ depends_on xcode: ["12.0", :build]
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
-
- # 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/MasKit/SupportingFiles/Info.plist b/MasKit/SupportingFiles/Info.plist
deleted file mode 100644
index f78d04b9d..000000000
--- a/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/MasKit/SupportingFiles/MasKit.h b/MasKit/SupportingFiles/MasKit.h
deleted file mode 100644
index 154841cfc..000000000
--- a/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/MasKitTests/OutputListener.swift b/MasKitTests/OutputListener.swift
deleted file mode 100644
index 7f4b8c894..000000000
--- a/MasKitTests/OutputListener.swift
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// OutputListener.swift
-// MasKitTests
-//
-// Created by Ben Chatelain on 1/7/19.
-// Copyright Š 2019 mas-cli. All rights reserved.
-//
-
-import Foundation
-
-/// Test helper for monitoring strings written to stdout. Modified from:
-/// https://medium.com/@thesaadismail/eavesdropping-on-swifts-print-statements-57f0215efb42
-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
- 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)
- }
- }
- }
-}
-
-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
- }
-}
diff --git a/MasKitTests/SupportingFiles/Info.plist b/MasKitTests/SupportingFiles/Info.plist
deleted file mode 100644
index 26b175dc1..000000000
--- a/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)
-
-
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..b2769ff6f
--- /dev/null
+++ b/Package.swift
@@ -0,0 +1,70 @@
+// 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([
+ "-I", "Sources/PrivateFrameworks/CommerceKit",
+ "-I", "Sources/PrivateFrameworks/StoreFoundation",
+ ]),
+ ]
+ ),
+ .target(
+ name: "MasKit",
+ dependencies: ["Commandant", "Version"],
+ swiftSettings: [
+ .unsafeFlags([
+ "-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([
+ "-I", "Sources/PrivateFrameworks/CommerceKit",
+ "-I", "Sources/PrivateFrameworks/StoreFoundation",
+ ]),
+ ]
+ ),
+ ],
+ swiftLanguageVersions: [.v5]
+)
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/Package/Distribution.plist b/Package/Distribution.plist
index fe00d1134..09ab7ebd7 100644
--- a/Package/Distribution.plist
+++ b/Package/Distribution.plist
@@ -5,7 +5,7 @@
-
+
diff --git a/README.md b/README.md
index 3badbd95e..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
@@ -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
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 99%
rename from MasKit/Commands/Open.swift
rename to Sources/MasKit/Commands/Open.swift
index 732c1448a..8394ac3a9 100644
--- a/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/MasKit/Commands/Outdated.swift b/Sources/MasKit/Commands/Outdated.swift
similarity index 99%
rename from MasKit/Commands/Outdated.swift
rename to Sources/MasKit/Commands/Outdated.swift
index dbba1e7cb..e8f5f0053 100644
--- a/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/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 96%
rename from MasKit/Commands/SignIn.swift
rename to Sources/MasKit/Commands/SignIn.swift
index bb595f4b4..77fc12810 100644
--- a/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/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 99%
rename from MasKit/Commands/Upgrade.swift
rename to Sources/MasKit/Commands/Upgrade.swift
index baf09c259..b243d8e32 100644
--- a/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/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 77%
rename from MasKit/Commands/Version.swift
rename to Sources/MasKit/Commands/Version.swift
index bdf3c608e..8feaf482d 100644
--- a/MasKit/Commands/Version.swift
+++ b/Sources/MasKit/Commands/Version.swift
@@ -18,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/MasKit/Controllers/AppLibrary.swift b/Sources/MasKit/Controllers/AppLibrary.swift
similarity index 75%
rename from MasKit/Controllers/AppLibrary.swift
rename to Sources/MasKit/Controllers/AppLibrary.swift
index c02bf40d4..ac5ade453 100644
--- a/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.
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 76%
rename from MasKit/Formatters/AppListFormatter.swift
rename to Sources/MasKit/Formatters/AppListFormatter.swift
index b1e06ce01..778ae40b1 100644
--- a/MasKit/Formatters/AppListFormatter.swift
+++ b/Sources/MasKit/Formatters/AppListFormatter.swift
@@ -19,18 +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)
- .max(by: { $1.count > $0.count })?
- .count
- ?? 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/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 73%
rename from MasKit/Formatters/Utilities.swift
rename to Sources/MasKit/Formatters/Utilities.swift
index 97ef68a74..60d88eda0 100644
--- a/MasKit/Formatters/Utilities.swift
+++ b/Sources/MasKit/Formatters/Utilities.swift
@@ -13,6 +13,23 @@ 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") {
+ let output = items
+ .map { "\($0)" }
+ .joined(separator: separator)
+ .appending(terminator)
+
+ if let observer = printObserver {
+ observer(output)
+ }
+
+ Swift.print(output)
+}
+
func printInfo(_ message: String) {
guard isatty(fileno(stdout)) != 0 else {
print("==> \(message)")
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 94%
rename from MasKit/Models/SoftwareProduct.swift
rename to Sources/MasKit/Models/SoftwareProduct.swift
index de232d3a3..6c5d129ba 100644
--- a/MasKit/Models/SoftwareProduct.swift
+++ b/Sources/MasKit/Models/SoftwareProduct.swift
@@ -29,8 +29,8 @@ extension SoftwareProduct {
}
/// Returns bundleIdentifier if appName is empty string.
- var appNameOrBbundleIdentifier: String {
- appName == "" ? bundleIdentifier : appName
+ var appNameOrBundleIdentifier: String {
+ appName.isEmpty ? bundleIdentifier : appName
}
func isOutdatedWhenComparedTo(_ storeApp: SearchResult) -> Bool {
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/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/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 90%
rename from MasKitTests/Commands/InfoCommandSpec.swift
rename to Tests/MasKitTests/Commands/InfoCommandSpec.swift
index 0da85134d..0e964f6f4 100644
--- a/MasKitTests/Commands/InfoCommandSpec.swift
+++ b/Tests/MasKitTests/Commands/InfoCommandSpec.swift
@@ -59,16 +59,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/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 99%
rename from MasKitTests/Commands/OpenCommandSpec.swift
rename to Tests/MasKitTests/Commands/OpenCommandSpec.swift
index 97c2ec5e9..97383e7f6 100644
--- a/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/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 99%
rename from MasKitTests/Commands/UninstallCommandSpec.swift
rename to Tests/MasKitTests/Commands/UninstallCommandSpec.swift
index f988eba6e..eeef61a73 100644
--- a/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/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 52%
rename from MasKitTests/Extensions/Bundle+JSON.swift
rename to Tests/MasKitTests/Extensions/Bundle+JSON.swift
index b05bb558a..115924393 100644
--- a/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,22 +23,30 @@ 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)
+ // The Swift Package Manager places resources in a separate bundle from the executable.
+ // 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 path = self.path(
- forResource: fileName.fileNameWithoutExtension,
- ofType: fileName.fileExtension,
- inDirectory: "JSON"
- )
- else { fatalError("Unable to load file \(fileName)") }
-
- return URL(fileURLWithPath: path)
+ private func url(for fileName: String) -> URL? {
+ url(
+ forResource: fileName.fileNameWithoutExtension,
+ withExtension: fileName.fileExtension,
+ subdirectory: "JSON"
+ )
}
}
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 98%
rename from MasKitTests/Models/SearchResultListSpec.swift
rename to Tests/MasKitTests/Models/SearchResultListSpec.swift
index 8df863ea2..14e90f238 100644
--- a/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/MasKitTests/Models/SearchResultSpec.swift b/Tests/MasKitTests/Models/SearchResultSpec.swift
similarity index 97%
rename from MasKitTests/Models/SearchResultSpec.swift
rename to Tests/MasKitTests/Models/SearchResultSpec.swift
index c9933d917..16d69d29a 100644
--- a/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/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 99%
rename from MasKitTests/Network/NetworkSessionMock.swift
rename to Tests/MasKitTests/Network/NetworkSessionMock.swift
index a3e2f526a..f168cfdba 100644
--- a/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/MasKitTests/Network/NetworkSessionMockFromFile.swift b/Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift
similarity index 98%
rename from MasKitTests/Network/NetworkSessionMockFromFile.swift
rename to Tests/MasKitTests/Network/NetworkSessionMockFromFile.swift
index efe5d129d..539fa7777 100644
--- a/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 {
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/Tests/MasKitTests/OutputListener.swift b/Tests/MasKitTests/OutputListener.swift
new file mode 100644
index 000000000..47458dd98
--- /dev/null
+++ b/Tests/MasKitTests/OutputListener.swift
@@ -0,0 +1,28 @@
+//
+// OutputListener.swift
+// MasKitTests
+//
+// Created by Ben Chatelain on 1/7/19.
+// Copyright Š 2019 mas-cli. All rights reserved.
+//
+
+@testable import MasKit
+
+/// Test helper for monitoring strings written to stdout. Modified from:
+/// https://stackoverflow.com/a/53569018
+class OutputListener {
+ /// Buffers strings written to stdout
+ var contents = ""
+
+ init() {
+ MasKit.printObserver = { [weak self] text in
+ strongify(self) { context in
+ context.contents += text
+ }
+ }
+ }
+
+ deinit {
+ MasKit.printObserver = nil
+ }
+}
diff --git a/MasKitTests/OutputListenerSpec.swift b/Tests/MasKitTests/OutputListenerSpec.swift
similarity index 65%
rename from MasKitTests/OutputListenerSpec.swift
rename to Tests/MasKitTests/OutputListenerSpec.swift
index dc00b24e7..8025b9a8a 100644
--- a/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()
}
}
}
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/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj
deleted file mode 100644
index ea3e8b041..000000000
--- a/mas-cli.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,1426 +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 */; };
- 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 */; };
- 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 */; };
- C56C4FF5262A50F5004F37EB /* Version in Frameworks */ = {isa = PBXBuildFile; productRef = C56C4FF4262A50F5004F37EB /* Version */; };
- 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 */; };
- 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 */; };
- 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;
- };
- 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;
- dstPath = /usr/share/man/man1/;
- dstSubfolderSpec = 0;
- files = (
- );
- 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 */
- 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 = ""; };
- 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 = ""; };
- 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 = ""; };
- 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 = ""; };
- 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 = (
- F83213A22173DC13008BA8A0 /* Commandant.framework in Frameworks */,
- C56C4FF5262A50F5004F37EB /* Version in Frameworks */,
- B5552928219A1BB900ACB4CA /* CommerceKit.framework in Frameworks */,
- B5552929219A1BC700ACB4CA /* StoreFoundation.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- F8FB715720F2B41400F56FDC /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- B537017421A0F85B00538F78 /* Commandant.framework 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 = (
- 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 */,
- );
- 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 = "";
- };
- ED031A6F1B5127C00097692E = {
- isa = PBXGroup;
- children = (
- 90CB4068213F4DDD0044E445 /* Carthage */,
- EDFC76381B642A2E00D0DBD7 /* Frameworks */,
- ED031A7A1B5127C00097692E /* mas */,
- F8FB715320F2B41400F56FDC /* MasKit */,
- F8FB715E20F2B41400F56FDC /* MasKitTests */,
- F8FB719920F2EC4500F56FDC /* PrivateFrameworks */,
- ED031A791B5127C00097692E /* Products */,
- );
- 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 = (
- 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;
- 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 */,
- F83213A72173F58B008BA8A0 /* Copy Frameworks */,
- F8FB715020F2B41400F56FDC /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = MasKit;
- packageProductDependencies = (
- C56C4FF4262A50F5004F37EB /* Version */,
- );
- 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 */,
- B5552935219A23EE00ACB4CA /* Copy Carthage Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- F8FB715D20F2B41400F56FDC /* PBXTargetDependency */,
- );
- name = MasKitTests;
- 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 = (
- C56C4FF0262A4ED0004F37EB /* XCRemoteSwiftPackageReference "Version" */,
- );
- 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 */,
- 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;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- INFOPLIST_FILE = "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;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- INFOPLIST_FILE = "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 = {
- 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;
- DEFINES_MODULE = YES;
- 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_VERSION = A;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = 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)/PrivateFrameworks/CommerceKit $(SRCROOT)/PrivateFrameworks/StoreFoundation";
- };
- name = Debug;
- };
- 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";
- 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)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- FRAMEWORK_VERSION = A;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = 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)/PrivateFrameworks/CommerceKit $(SRCROOT)/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)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = 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)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- GCC_C_LANGUAGE_STANDARD = gnu11;
- INFOPLIST_FILE = 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 */
- C56C4FF0262A4ED0004F37EB /* XCRemoteSwiftPackageReference "Version" */ = {
- isa = XCRemoteSwiftPackageReference;
- repositoryURL = "https://github.com/mxcl/Version.git";
- requirement = {
- kind = upToNextMajorVersion;
- minimumVersion = 2.0.0;
- };
- };
-/* End XCRemoteSwiftPackageReference section */
-
-/* Begin XCSwiftPackageProductDependency section */
- C56C4FF4262A50F5004F37EB /* Version */ = {
- isa = XCSwiftPackageProductDependency;
- package = C56C4FF0262A4ED0004F37EB /* XCRemoteSwiftPackageReference "Version" */;
- productName = Version;
- };
-/* 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 5c4f7c3d6..000000000
--- a/mas.xcworkspace/xcshareddata/swiftpm/Package.resolved
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "object": {
- "pins": [
- {
- "package": "Version",
- "repositoryURL": "https://github.com/mxcl/Version.git",
- "state": {
- "branch": null,
- "revision": "a94b48f36763c05629fc102837398505032dead9",
- "version": "2.0.0"
- }
- }
- ]
- },
- "version": 1
-}
diff --git a/mas/mas-Info.plist b/mas/mas-Info.plist
deleted file mode 100644
index cb345578d..000000000
--- a/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/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/bootstrap b/script/bootstrap
index e14dd6227..d4e3aec27 100755
--- a/script/bootstrap
+++ b/script/bootstrap
@@ -18,8 +18,8 @@ main() {
rm -f Brewfile.lock.json
brew bundle install --no-upgrade --verbose
- # Download and build project dependencies
- carthage bootstrap --platform macOS --cache-builds
+ # Generate Package.swift
+ script/version
}
main
diff --git a/script/bottle b/script/bottle
index 97e8c0be3..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
@@ -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..702c77dfc 100755
--- a/script/build
+++ b/script/build
@@ -3,68 +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
-
- carthage build \
- --platform macOS \
- --cache-builds \
- --configuration "$CONFIG"
-
- 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/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/clean b/script/clean
index 2fbaedbd2..19b95d0b5 100755
--- a/script/clean
+++ b/script/clean
@@ -3,16 +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 Carthage/Build
- rm -rf ${BUILD_DIR:?}
- rm -rf ${INSTALL_DIR:?}
-}
-
-main
+BUILD_DIR=.build
+rm -rf ${BUILD_DIR:?}
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"
diff --git a/script/install b/script/install
index 3623c4e8b..20c4466d6 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,7 @@ 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"
-
-# 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/lint b/script/lint
index 82357e095..93503abc2 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 Package.swift 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/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"
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
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"
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"
}
diff --git a/script/version b/script/version
index 46f41e7ee..b2372d9f8 100755
--- a/script/version
+++ b/script/version
@@ -9,4 +9,16 @@
# This no longer works with MARKETING_VERSION build setting in Info.plist
# agvtool what-marketing-version -terse1
-echo "1.8.1"
+VERSION=$(git describe --abbrev=0 --tags)
+VERSION=${VERSION#v}
+
+SCRIPT_PATH=$(dirname $(which $0))
+
+cat <"${SCRIPT_PATH}/../Sources/MasKit/Package.swift"
+// Generated by: script/version
+enum Package {
+ static let Version = "${VERSION}"
+}
+EOF
+
+echo ${VERSION}