danger-spm_version_updates 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.editorconfig +15 -0
- data/.github/workflows/docs.yml +43 -0
- data/.github/workflows/lint_and_test.yml +6 -1
- data/.github/workflows/push_gem.yml +26 -0
- data/.github/workflows/readme.yml +21 -0
- data/.gitignore +135 -3
- data/.idea/.gitignore +8 -0
- data/.idea/danger-plugin-spm-version-updates.iml +130 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/.markdownlint.jsonc +6 -0
- data/.rubocop.yml +289 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +109 -53
- data/README.md +35 -7
- data/Rakefile +2 -0
- data/danger-spm_version_updates.gemspec +11 -7
- data/lib/spm_version_updates/gem_version.rb +1 -1
- data/lib/spm_version_updates/plugin.rb +35 -19
- data/spec/spec_helper.rb +0 -6
- data/spec/spm_version_updates_spec.rb +36 -0
- data/spec/support/fixtures/Branch.xcodeproj/project.pbxproj +80 -0
- data/spec/support/fixtures/Branch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +265 -0
- data/spec/support/fixtures/VersionRange.xcodeproj/project.pbxproj +81 -0
- data/spec/support/fixtures/VersionRange.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +265 -0
- data/spec/support/fixtures/github_pr.json +6 -16
- metadata +90 -26
data/Rakefile
CHANGED
@@ -9,6 +9,7 @@ RSpec::Core::RakeTask.new(:specs)
|
|
9
9
|
|
10
10
|
task default: :specs
|
11
11
|
|
12
|
+
desc "Run all test and lint tasks"
|
12
13
|
task :spec do
|
13
14
|
Rake::Task["specs"].invoke
|
14
15
|
Rake::Task["rubocop"].invoke
|
@@ -19,6 +20,7 @@ desc "Run RuboCop on the lib/specs directory"
|
|
19
20
|
RuboCop::RakeTask.new(:rubocop) { |task|
|
20
21
|
task.requires << "rubocop-rspec"
|
21
22
|
task.requires << "rubocop-rake"
|
23
|
+
task.requires << "rubocop-performance"
|
22
24
|
task.patterns = ["lib/**/*.rb", "spec/**/*.rb"]
|
23
25
|
}
|
24
26
|
|
@@ -13,34 +13,38 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.summary = "A Danger plugin to detect if there are any updates to your Swift Package Manager dependencies."
|
14
14
|
spec.homepage = "https://github.com/hbmartin/danger-spm_version_updates"
|
15
15
|
spec.license = "MIT"
|
16
|
-
spec.required_ruby_version = ">=
|
16
|
+
spec.required_ruby_version = ">= 3.0"
|
17
17
|
|
18
18
|
spec.files = `git ls-files`.split($/)
|
19
19
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
20
|
spec.require_paths = ["lib"]
|
21
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
22
22
|
|
23
23
|
spec.add_runtime_dependency("danger-plugin-api", "~> 1.0")
|
24
24
|
spec.add_runtime_dependency("semantic", "~> 1.6")
|
25
|
-
spec.add_runtime_dependency("xcodeproj", "~> 1.
|
25
|
+
spec.add_runtime_dependency("xcodeproj", "~> 1.24")
|
26
26
|
|
27
27
|
# General ruby development
|
28
28
|
spec.add_development_dependency("bundler", "~> 2.0")
|
29
29
|
spec.add_development_dependency("rake", "~> 13.0")
|
30
30
|
|
31
31
|
# Testing support
|
32
|
-
spec.add_development_dependency("rspec", "~> 3.
|
32
|
+
spec.add_development_dependency("rspec", "~> 3.9")
|
33
|
+
spec.add_development_dependency("simplecov", "~> 0.22")
|
34
|
+
spec.add_development_dependency("simplecov-cobertura", "~> 2.1")
|
33
35
|
|
34
36
|
# Linting code and docs
|
35
37
|
spec.add_development_dependency("reek")
|
36
|
-
spec.add_development_dependency("rubocop")
|
38
|
+
spec.add_development_dependency("rubocop", "~> 1.62")
|
39
|
+
spec.add_development_dependency("rubocop-performance")
|
37
40
|
spec.add_development_dependency("rubocop-rake")
|
38
41
|
spec.add_development_dependency("rubocop-rspec")
|
39
|
-
spec.add_development_dependency("yard")
|
42
|
+
spec.add_development_dependency("yard", "~> 0.9.36")
|
40
43
|
|
41
44
|
# Makes testing easy via `bundle exec guard`
|
42
|
-
spec.add_development_dependency("guard", "~> 2.
|
45
|
+
spec.add_development_dependency("guard", "~> 2.16")
|
43
46
|
spec.add_development_dependency("guard-rspec", "~> 4.7")
|
47
|
+
spec.add_development_dependency("guard-rubocop", "~> 1.2")
|
44
48
|
|
45
49
|
# If you want to work on older builds of ruby
|
46
50
|
spec.add_development_dependency("listen", "3.0.7")
|
@@ -35,16 +35,8 @@ module Danger
|
|
35
35
|
# The path to your Xcode project
|
36
36
|
# @return [void]
|
37
37
|
def check_for_updates(xcodeproj_path)
|
38
|
-
|
39
|
-
|
40
|
-
project = Xcodeproj::Project.open(xcodeproj_path)
|
41
|
-
remote_packages = filter_remote_packages(project)
|
42
|
-
|
43
|
-
resolved_path = find_packages_resolved(xcodeproj_path)
|
44
|
-
raise(CouldNotFindResolvedFile) unless File.exist?(resolved_path)
|
45
|
-
|
46
|
-
resolved_versions = JSON.load_file!(resolved_path)["pins"]
|
47
|
-
.to_h { |pin| [pin["location"], pin["state"]["version"] || pin["state"]["revision"]] }
|
38
|
+
remote_packages = get_remote_package(xcodeproj_path)
|
39
|
+
resolved_versions = get_resolved_versions(xcodeproj_path)
|
48
40
|
|
49
41
|
remote_packages.each { |repository_url, requirement|
|
50
42
|
next if ignore_repos&.include?(repository_url)
|
@@ -55,9 +47,10 @@ module Danger
|
|
55
47
|
|
56
48
|
# kind can be major, minor, range, exact, branch, or commit
|
57
49
|
|
58
|
-
if kind == "branch"
|
59
|
-
|
60
|
-
|
50
|
+
if kind == "branch"
|
51
|
+
branch = requirement["branch"]
|
52
|
+
last_commit = git_branch_last_commit(repository_url, branch)
|
53
|
+
warn("Newer commit available for #{name} (#{branch}): #{last_commit}") unless last_commit == resolved_version
|
61
54
|
next
|
62
55
|
end
|
63
56
|
|
@@ -70,12 +63,34 @@ module Danger
|
|
70
63
|
warn_for_new_versions(:major, available_versions, name, resolved_version)
|
71
64
|
elsif kind == "upToNextMinorVersion"
|
72
65
|
warn_for_new_versions(:minor, available_versions, name, resolved_version)
|
73
|
-
elsif kind == "
|
66
|
+
elsif kind == "versionRange"
|
74
67
|
warn_for_new_versions_range(available_versions, name, requirement, resolved_version)
|
75
68
|
end
|
76
69
|
}
|
77
70
|
end
|
78
71
|
|
72
|
+
# Extracts remote packages from an Xcode project
|
73
|
+
# @param [String] xcodeproj_path
|
74
|
+
# The path to your Xcode project
|
75
|
+
# @return [Hash<String, Hash>]
|
76
|
+
def get_remote_package(xcodeproj_path)
|
77
|
+
raise(XcodeprojPathMustBeSet) if xcodeproj_path.nil?
|
78
|
+
|
79
|
+
filter_remote_packages(Xcodeproj::Project.open(xcodeproj_path))
|
80
|
+
end
|
81
|
+
|
82
|
+
# Extracts resolved versions from Package.resolved relative to an Xcode project
|
83
|
+
# @param [String] xcodeproj_path
|
84
|
+
# The path to your Xcode project
|
85
|
+
# @return [Hash<String, String>]
|
86
|
+
def get_resolved_versions(xcodeproj_path)
|
87
|
+
resolved_path = find_packages_resolved_file(xcodeproj_path)
|
88
|
+
raise(CouldNotFindResolvedFile) unless File.exist?(resolved_path)
|
89
|
+
|
90
|
+
JSON.load_file!(resolved_path)["pins"]
|
91
|
+
.to_h { |pin| [pin["location"], pin["state"]["version"] || pin["state"]["revision"]] }
|
92
|
+
end
|
93
|
+
|
79
94
|
# Extract a readable name for the repo given the url, generally org/repo
|
80
95
|
# @return [String]
|
81
96
|
def repo_name(repo_url)
|
@@ -100,7 +115,7 @@ module Danger
|
|
100
115
|
|
101
116
|
# Find the Packages.resolved file
|
102
117
|
# @return [String]
|
103
|
-
def
|
118
|
+
def find_packages_resolved_file(xcodeproj_path)
|
104
119
|
if Dir.exist?(xcodeproj_path.sub("xcodeproj", "xcworkspace"))
|
105
120
|
File.join(xcodeproj_path.sub("xcodeproj", "xcworkspace"), "xcshareddata", "swiftpm", "Package.resolved")
|
106
121
|
else
|
@@ -129,7 +144,7 @@ Newer version of #{name}: #{newest_version} (but this package is set to exact ve
|
|
129
144
|
newest_meeting_reqs = available_versions.find { |version|
|
130
145
|
version < max_version && (report_pre_releases ? true : version.pre.nil?)
|
131
146
|
}
|
132
|
-
warn("Newer version of #{name}: #{newest_meeting_reqs}
|
147
|
+
warn("Newer version of #{name}: #{newest_meeting_reqs}") unless newest_meeting_reqs.to_s == resolved_version
|
133
148
|
warn(
|
134
149
|
<<-TEXT
|
135
150
|
Newest version of #{name}: #{available_versions.first} (but this package is configured up to the next #{max_version} version)
|
@@ -160,7 +175,7 @@ Newest version of #{name}: #{available_versions.first} (but this package is conf
|
|
160
175
|
# Remove git call to list tags
|
161
176
|
# @return [Array<Semantic::Version>]
|
162
177
|
def git_versions(repo_url)
|
163
|
-
`git ls-remote -t #{repo_url}`
|
178
|
+
versions = `git ls-remote -t #{repo_url}`
|
164
179
|
.split("\n")
|
165
180
|
.map { |line| line.split("/tags/").last }
|
166
181
|
.filter_map { |line|
|
@@ -170,8 +185,9 @@ Newest version of #{name}: #{available_versions.first} (but this package is conf
|
|
170
185
|
nil
|
171
186
|
end
|
172
187
|
}
|
173
|
-
|
174
|
-
|
188
|
+
versions.sort!
|
189
|
+
versions.reverse!
|
190
|
+
versions
|
175
191
|
end
|
176
192
|
|
177
193
|
def git_branch_last_commit(repo_url, branch_name)
|
data/spec/spec_helper.rb
CHANGED
@@ -11,12 +11,6 @@ require "pry"
|
|
11
11
|
require "danger"
|
12
12
|
require "rspec"
|
13
13
|
|
14
|
-
if `git remote -v` == ""
|
15
|
-
puts "You cannot run tests without setting a local git remote on this repo"
|
16
|
-
puts "It's a weird side-effect of Danger's internals."
|
17
|
-
exit(0)
|
18
|
-
end
|
19
|
-
|
20
14
|
# Use coloured output, it's the best.
|
21
15
|
RSpec.configure do |config|
|
22
16
|
config.filter_gems_from_backtrace("bundler")
|
@@ -1,5 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "simplecov"
|
4
|
+
SimpleCov.start
|
5
|
+
|
6
|
+
require "simplecov-cobertura"
|
7
|
+
SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
|
8
|
+
|
3
9
|
require File.expand_path("spec_helper", __dir__)
|
4
10
|
|
5
11
|
module Danger
|
@@ -139,6 +145,36 @@ module Danger
|
|
139
145
|
|
140
146
|
expect(@dangerfile.status_report[:warnings]).to eq(["Newest version of kean/Nuke: 13.0.0 (but this package is configured up to the next major version)\n"])
|
141
147
|
end
|
148
|
+
|
149
|
+
it "Does report new versions for ranges" do
|
150
|
+
allow(@my_plugin).to receive(:git_versions)
|
151
|
+
.and_return [
|
152
|
+
Semantic::Version.new("13.0.0"),
|
153
|
+
Semantic::Version.new("12.1.6"),
|
154
|
+
Semantic::Version.new("12.1.7"),
|
155
|
+
].sort.reverse
|
156
|
+
|
157
|
+
@my_plugin.check_for_updates("#{File.dirname(__FILE__)}/support/fixtures/VersionRange.xcodeproj")
|
158
|
+
|
159
|
+
expect(@dangerfile.status_report[:warnings]).to eq(
|
160
|
+
[
|
161
|
+
"Newer version of kean/Nuke: 12.1.7",
|
162
|
+
]
|
163
|
+
)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "Does report new versions for branches" do
|
167
|
+
allow(@my_plugin).to receive(:git_branch_last_commit)
|
168
|
+
.and_return "d658f302f56abfd7a163e3b5f44de39b780a64c2"
|
169
|
+
|
170
|
+
@my_plugin.check_for_updates("#{File.dirname(__FILE__)}/support/fixtures/Branch.xcodeproj")
|
171
|
+
|
172
|
+
expect(@dangerfile.status_report[:warnings]).to eq(
|
173
|
+
[
|
174
|
+
"Newer commit available for kean/Nuke (main): d658f302f56abfd7a163e3b5f44de39b780a64c2",
|
175
|
+
]
|
176
|
+
)
|
177
|
+
end
|
142
178
|
end
|
143
179
|
end
|
144
180
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
// !$*UTF8*$!
|
2
|
+
{
|
3
|
+
archiveVersion = 1;
|
4
|
+
classes = {
|
5
|
+
};
|
6
|
+
objectVersion = 54;
|
7
|
+
objects = {
|
8
|
+
/* Begin PBXGroup section */
|
9
|
+
F1465EF423AA94BF0055F7C3 = {
|
10
|
+
isa = PBXGroup;
|
11
|
+
children = (
|
12
|
+
F1465EFF23AA94BF0055F7C3 /* Demo */,
|
13
|
+
);
|
14
|
+
sourceTree = "<group>";
|
15
|
+
};
|
16
|
+
F1465EFF23AA94BF0055F7C3 /* Demo */ = {
|
17
|
+
isa = PBXGroup;
|
18
|
+
children = ();
|
19
|
+
path = Demo;
|
20
|
+
sourceTree = "<group>";
|
21
|
+
};
|
22
|
+
/* End PBXGroup section */
|
23
|
+
|
24
|
+
/* Begin PBXProject section */
|
25
|
+
F1465EF523AA94BF0055F7C3 /* Project object */ = {
|
26
|
+
isa = PBXProject;
|
27
|
+
attributes = {
|
28
|
+
BuildIndependentTargetsInParallel = YES;
|
29
|
+
LastSwiftUpdateCheck = 1420;
|
30
|
+
LastUpgradeCheck = 1420;
|
31
|
+
TargetAttributes = {
|
32
|
+
F1465EFC23AA94BF0055F7C3 = {
|
33
|
+
CreatedOnToolsVersion = 11.2.1;
|
34
|
+
};
|
35
|
+
};
|
36
|
+
};
|
37
|
+
buildConfigurationList = F1465EF823AA94BF0055F7C3 /* Build configuration list for PBXProject "Demo" */;
|
38
|
+
compatibilityVersion = "Xcode 9.3";
|
39
|
+
developmentRegion = en;
|
40
|
+
hasScannedForEncodings = 0;
|
41
|
+
knownRegions = (
|
42
|
+
en,
|
43
|
+
Base,
|
44
|
+
es,
|
45
|
+
"zh-Hans",
|
46
|
+
fr,
|
47
|
+
);
|
48
|
+
mainGroup = F1465EF423AA94BF0055F7C3;
|
49
|
+
packageReferences = (
|
50
|
+
11BBD37629C1571400F7A968 /* XCRemoteSwiftPackageReference "Nuke" */,
|
51
|
+
);
|
52
|
+
productRefGroup = F1465EFE23AA94BF0055F7C3 /* Products */;
|
53
|
+
projectDirPath = "";
|
54
|
+
projectRoot = "";
|
55
|
+
targets = ();
|
56
|
+
};
|
57
|
+
/* End PBXProject section */
|
58
|
+
|
59
|
+
/* Begin XCConfigurationList section */
|
60
|
+
F1465EF823AA94BF0055F7C3 /* Build configuration list for PBXNativeTarget "Demo" */ = {
|
61
|
+
isa = XCConfigurationList;
|
62
|
+
buildConfigurations = ();
|
63
|
+
defaultConfigurationIsVisible = 0;
|
64
|
+
defaultConfigurationName = Release;
|
65
|
+
};
|
66
|
+
/* End XCConfigurationList section */
|
67
|
+
|
68
|
+
/* Begin XCRemoteSwiftPackageReference section */
|
69
|
+
11BBD37629C1571400F7A968 /* XCRemoteSwiftPackageReference "Nuke" */ = {
|
70
|
+
isa = XCRemoteSwiftPackageReference;
|
71
|
+
repositoryURL = "https://github.com/kean/Nuke";
|
72
|
+
requirement = {
|
73
|
+
branch = main;
|
74
|
+
kind = branch;
|
75
|
+
};
|
76
|
+
};
|
77
|
+
/* End XCRemoteSwiftPackageReference section */
|
78
|
+
};
|
79
|
+
rootObject = F1465EF523AA94BF0055F7C3 /* Project object */;
|
80
|
+
}
|
@@ -0,0 +1,265 @@
|
|
1
|
+
{
|
2
|
+
"pins" : [
|
3
|
+
{
|
4
|
+
"identity" : "abseil-cpp-binary",
|
5
|
+
"kind" : "remoteSourceControl",
|
6
|
+
"location" : "https://github.com/google/abseil-cpp-binary.git",
|
7
|
+
"state" : {
|
8
|
+
"revision" : "bfc0b6f81adc06ce5121eb23f628473638d67c5c",
|
9
|
+
"version" : "1.2022062300.0"
|
10
|
+
}
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"identity" : "analytics-swift",
|
14
|
+
"kind" : "remoteSourceControl",
|
15
|
+
"location" : "git@github.com:hbmartin/analytics-swift.git",
|
16
|
+
"state" : {
|
17
|
+
"branch" : "main",
|
18
|
+
"revision" : "81ed4a83fc87ef074bb71b2b0bced199811dc3bb"
|
19
|
+
}
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"identity" : "firebase-ios-sdk",
|
23
|
+
"kind" : "remoteSourceControl",
|
24
|
+
"location" : "https://github.com/firebase/firebase-ios-sdk",
|
25
|
+
"state" : {
|
26
|
+
"revision" : "8a8ec57a272e0d31480fb0893dda0cf4f769b57e",
|
27
|
+
"version" : "10.15.0"
|
28
|
+
}
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"identity" : "googleappmeasurement",
|
32
|
+
"kind" : "remoteSourceControl",
|
33
|
+
"location" : "https://github.com/google/GoogleAppMeasurement.git",
|
34
|
+
"state" : {
|
35
|
+
"revision" : "03b9beee1a61f62d32c521e172e192a1663a5e8b",
|
36
|
+
"version" : "10.13.0"
|
37
|
+
}
|
38
|
+
},
|
39
|
+
{
|
40
|
+
"identity" : "googledatatransport",
|
41
|
+
"kind" : "remoteSourceControl",
|
42
|
+
"location" : "https://github.com/google/GoogleDataTransport.git",
|
43
|
+
"state" : {
|
44
|
+
"revision" : "aae45a320fd0d11811820335b1eabc8753902a40",
|
45
|
+
"version" : "9.2.5"
|
46
|
+
}
|
47
|
+
},
|
48
|
+
{
|
49
|
+
"identity" : "googleutilities",
|
50
|
+
"kind" : "remoteSourceControl",
|
51
|
+
"location" : "https://github.com/google/GoogleUtilities.git",
|
52
|
+
"state" : {
|
53
|
+
"revision" : "c38ce365d77b04a9a300c31061c5227589e5597b",
|
54
|
+
"version" : "7.11.5"
|
55
|
+
}
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"identity" : "grpc-binary",
|
59
|
+
"kind" : "remoteSourceControl",
|
60
|
+
"location" : "https://github.com/google/grpc-binary.git",
|
61
|
+
"state" : {
|
62
|
+
"revision" : "f1b366129d1125be7db83247e003fc333104b569",
|
63
|
+
"version" : "1.50.2"
|
64
|
+
}
|
65
|
+
},
|
66
|
+
{
|
67
|
+
"identity" : "gtm-session-fetcher",
|
68
|
+
"kind" : "remoteSourceControl",
|
69
|
+
"location" : "https://github.com/google/gtm-session-fetcher.git",
|
70
|
+
"state" : {
|
71
|
+
"revision" : "d415594121c9e8a4f9d79cecee0965cf35e74dbd",
|
72
|
+
"version" : "3.1.1"
|
73
|
+
}
|
74
|
+
},
|
75
|
+
{
|
76
|
+
"identity" : "interop-ios-for-google-sdks",
|
77
|
+
"kind" : "remoteSourceControl",
|
78
|
+
"location" : "https://github.com/google/interop-ios-for-google-sdks.git",
|
79
|
+
"state" : {
|
80
|
+
"revision" : "2d12673670417654f08f5f90fdd62926dc3a2648",
|
81
|
+
"version" : "100.0.0"
|
82
|
+
}
|
83
|
+
},
|
84
|
+
{
|
85
|
+
"identity" : "leveldb",
|
86
|
+
"kind" : "remoteSourceControl",
|
87
|
+
"location" : "https://github.com/firebase/leveldb.git",
|
88
|
+
"state" : {
|
89
|
+
"revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b",
|
90
|
+
"version" : "1.22.2"
|
91
|
+
}
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"identity" : "lookingglassui",
|
95
|
+
"kind" : "remoteSourceControl",
|
96
|
+
"location" : "https://github.com/ryanlintott/LookingGlassUI",
|
97
|
+
"state" : {
|
98
|
+
"revision" : "3257e1b5392a8b39e4620e09cfdb672d2be42855",
|
99
|
+
"version" : "0.3.1"
|
100
|
+
}
|
101
|
+
},
|
102
|
+
{
|
103
|
+
"identity" : "maplibre-gl-native-distribution",
|
104
|
+
"kind" : "remoteSourceControl",
|
105
|
+
"location" : "https://github.com/maplibre/maplibre-gl-native-distribution",
|
106
|
+
"state" : {
|
107
|
+
"revision" : "ffda61e298c1490d4860d5184e80d618aaadc089",
|
108
|
+
"version" : "5.13.0"
|
109
|
+
}
|
110
|
+
},
|
111
|
+
{
|
112
|
+
"identity" : "nanopb",
|
113
|
+
"kind" : "remoteSourceControl",
|
114
|
+
"location" : "https://github.com/firebase/nanopb.git",
|
115
|
+
"state" : {
|
116
|
+
"revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692",
|
117
|
+
"version" : "2.30909.0"
|
118
|
+
}
|
119
|
+
},
|
120
|
+
{
|
121
|
+
"identity" : "nuke",
|
122
|
+
"kind" : "remoteSourceControl",
|
123
|
+
"location" : "https://github.com/kean/Nuke",
|
124
|
+
"state" : {
|
125
|
+
"branch" : "main",
|
126
|
+
"revision" : "3f666f120b63ea7de57d42e9a7c9b47f8e7a290b"
|
127
|
+
}
|
128
|
+
},
|
129
|
+
{
|
130
|
+
"identity" : "phonenumberkit",
|
131
|
+
"kind" : "remoteSourceControl",
|
132
|
+
"location" : "https://github.com/marmelroy/PhoneNumberKit.git",
|
133
|
+
"state" : {
|
134
|
+
"revision" : "b456f2f9be10c1d183158220b831afd22697dd68",
|
135
|
+
"version" : "3.7.4"
|
136
|
+
}
|
137
|
+
},
|
138
|
+
{
|
139
|
+
"identity" : "promises",
|
140
|
+
"kind" : "remoteSourceControl",
|
141
|
+
"location" : "https://github.com/google/promises.git",
|
142
|
+
"state" : {
|
143
|
+
"revision" : "e70e889c0196c76d22759eb50d6a0270ca9f1d9e",
|
144
|
+
"version" : "2.3.1"
|
145
|
+
}
|
146
|
+
},
|
147
|
+
{
|
148
|
+
"identity" : "sentry-cocoa",
|
149
|
+
"kind" : "remoteSourceControl",
|
150
|
+
"location" : "https://github.com/getsentry/sentry-cocoa.git",
|
151
|
+
"state" : {
|
152
|
+
"revision" : "14aa6e47b03b820fd2b338728637570b9e969994",
|
153
|
+
"version" : "8.12.0"
|
154
|
+
}
|
155
|
+
},
|
156
|
+
{
|
157
|
+
"identity" : "sovran-swift",
|
158
|
+
"kind" : "remoteSourceControl",
|
159
|
+
"location" : "https://github.com/segmentio/Sovran-Swift.git",
|
160
|
+
"state" : {
|
161
|
+
"revision" : "64f3b5150c282a34af4578188dce2fd597e600e3",
|
162
|
+
"version" : "1.1.0"
|
163
|
+
}
|
164
|
+
},
|
165
|
+
{
|
166
|
+
"identity" : "swift-algorithms",
|
167
|
+
"kind" : "remoteSourceControl",
|
168
|
+
"location" : "https://github.com/apple/swift-algorithms.git",
|
169
|
+
"state" : {
|
170
|
+
"revision" : "bcd4f369ac962bc3e5244c9df778739f8f5bdbf1",
|
171
|
+
"version" : "1.1.0"
|
172
|
+
}
|
173
|
+
},
|
174
|
+
{
|
175
|
+
"identity" : "swift-argument-parser",
|
176
|
+
"kind" : "remoteSourceControl",
|
177
|
+
"location" : "https://github.com/apple/swift-argument-parser.git",
|
178
|
+
"state" : {
|
179
|
+
"revision" : "8f4d2753f0e4778c76d5f05ad16c74f707390531",
|
180
|
+
"version" : "1.2.3"
|
181
|
+
}
|
182
|
+
},
|
183
|
+
{
|
184
|
+
"identity" : "swift-asn1",
|
185
|
+
"kind" : "remoteSourceControl",
|
186
|
+
"location" : "https://github.com/apple/swift-asn1.git",
|
187
|
+
"state" : {
|
188
|
+
"revision" : "3664efa98bd302ec90e5b27ee1c0649fbcc365bc"
|
189
|
+
}
|
190
|
+
},
|
191
|
+
{
|
192
|
+
"identity" : "swift-case-paths",
|
193
|
+
"kind" : "remoteSourceControl",
|
194
|
+
"location" : "https://github.com/pointfreeco/swift-case-paths",
|
195
|
+
"state" : {
|
196
|
+
"revision" : "5da6989aae464f324eef5c5b52bdb7974725ab81",
|
197
|
+
"version" : "1.0.0"
|
198
|
+
}
|
199
|
+
},
|
200
|
+
{
|
201
|
+
"identity" : "swift-custom-dump",
|
202
|
+
"kind" : "remoteSourceControl",
|
203
|
+
"location" : "https://github.com/pointfreeco/swift-custom-dump",
|
204
|
+
"state" : {
|
205
|
+
"revision" : "3efbfba0e4e56c7187cc19137ee16b7c95346b79",
|
206
|
+
"version" : "1.1.0"
|
207
|
+
}
|
208
|
+
},
|
209
|
+
{
|
210
|
+
"identity" : "swift-numerics",
|
211
|
+
"kind" : "remoteSourceControl",
|
212
|
+
"location" : "https://github.com/apple/swift-numerics.git",
|
213
|
+
"state" : {
|
214
|
+
"revision" : "0a5bc04095a675662cf24757cc0640aa2204253b",
|
215
|
+
"version" : "1.0.2"
|
216
|
+
}
|
217
|
+
},
|
218
|
+
{
|
219
|
+
"identity" : "swift-protobuf",
|
220
|
+
"kind" : "remoteSourceControl",
|
221
|
+
"location" : "https://github.com/apple/swift-protobuf.git",
|
222
|
+
"state" : {
|
223
|
+
"revision" : "cf62cdaea48b77f1a631e5cb3aeda6047c2cba1d",
|
224
|
+
"version" : "1.23.0"
|
225
|
+
}
|
226
|
+
},
|
227
|
+
{
|
228
|
+
"identity" : "swift-snapshot-testing",
|
229
|
+
"kind" : "remoteSourceControl",
|
230
|
+
"location" : "https://github.com/pointfreeco/swift-snapshot-testing",
|
231
|
+
"state" : {
|
232
|
+
"revision" : "696b86a6d151578bca7c1a2a3ed419a5f834d40f",
|
233
|
+
"version" : "1.13.0"
|
234
|
+
}
|
235
|
+
},
|
236
|
+
{
|
237
|
+
"identity" : "swift-syntax",
|
238
|
+
"kind" : "remoteSourceControl",
|
239
|
+
"location" : "https://github.com/apple/swift-syntax.git",
|
240
|
+
"state" : {
|
241
|
+
"revision" : "74203046135342e4a4a627476dd6caf8b28fe11b",
|
242
|
+
"version" : "509.0.0"
|
243
|
+
}
|
244
|
+
},
|
245
|
+
{
|
246
|
+
"identity" : "swiftui-navigation",
|
247
|
+
"kind" : "remoteSourceControl",
|
248
|
+
"location" : "https://github.com/pointfreeco/swiftui-navigation",
|
249
|
+
"state" : {
|
250
|
+
"revision" : "6eb293c49505d86e9e24232cb6af6be7fff93bd5",
|
251
|
+
"version" : "1.0.2"
|
252
|
+
}
|
253
|
+
},
|
254
|
+
{
|
255
|
+
"identity" : "xctest-dynamic-overlay",
|
256
|
+
"kind" : "remoteSourceControl",
|
257
|
+
"location" : "https://github.com/pointfreeco/xctest-dynamic-overlay",
|
258
|
+
"state" : {
|
259
|
+
"revision" : "23cbf2294e350076ea4dbd7d5d047c1e76b03631",
|
260
|
+
"version" : "1.0.2"
|
261
|
+
}
|
262
|
+
}
|
263
|
+
],
|
264
|
+
"version" : 2
|
265
|
+
}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
// !$*UTF8*$!
|
2
|
+
{
|
3
|
+
archiveVersion = 1;
|
4
|
+
classes = {
|
5
|
+
};
|
6
|
+
objectVersion = 54;
|
7
|
+
objects = {
|
8
|
+
/* Begin PBXGroup section */
|
9
|
+
F1465EF423AA94BF0055F7C3 = {
|
10
|
+
isa = PBXGroup;
|
11
|
+
children = (
|
12
|
+
F1465EFF23AA94BF0055F7C3 /* Demo */,
|
13
|
+
);
|
14
|
+
sourceTree = "<group>";
|
15
|
+
};
|
16
|
+
F1465EFF23AA94BF0055F7C3 /* Demo */ = {
|
17
|
+
isa = PBXGroup;
|
18
|
+
children = ();
|
19
|
+
path = Demo;
|
20
|
+
sourceTree = "<group>";
|
21
|
+
};
|
22
|
+
/* End PBXGroup section */
|
23
|
+
|
24
|
+
/* Begin PBXProject section */
|
25
|
+
F1465EF523AA94BF0055F7C3 /* Project object */ = {
|
26
|
+
isa = PBXProject;
|
27
|
+
attributes = {
|
28
|
+
BuildIndependentTargetsInParallel = YES;
|
29
|
+
LastSwiftUpdateCheck = 1420;
|
30
|
+
LastUpgradeCheck = 1420;
|
31
|
+
TargetAttributes = {
|
32
|
+
F1465EFC23AA94BF0055F7C3 = {
|
33
|
+
CreatedOnToolsVersion = 11.2.1;
|
34
|
+
};
|
35
|
+
};
|
36
|
+
};
|
37
|
+
buildConfigurationList = F1465EF823AA94BF0055F7C3 /* Build configuration list for PBXProject "Demo" */;
|
38
|
+
compatibilityVersion = "Xcode 9.3";
|
39
|
+
developmentRegion = en;
|
40
|
+
hasScannedForEncodings = 0;
|
41
|
+
knownRegions = (
|
42
|
+
en,
|
43
|
+
Base,
|
44
|
+
es,
|
45
|
+
"zh-Hans",
|
46
|
+
fr,
|
47
|
+
);
|
48
|
+
mainGroup = F1465EF423AA94BF0055F7C3;
|
49
|
+
packageReferences = (
|
50
|
+
11BBD37629C1571400F7A968 /* XCRemoteSwiftPackageReference "Nuke" */,
|
51
|
+
);
|
52
|
+
productRefGroup = F1465EFE23AA94BF0055F7C3 /* Products */;
|
53
|
+
projectDirPath = "";
|
54
|
+
projectRoot = "";
|
55
|
+
targets = ();
|
56
|
+
};
|
57
|
+
/* End PBXProject section */
|
58
|
+
|
59
|
+
/* Begin XCConfigurationList section */
|
60
|
+
F1465EF823AA94BF0055F7C3 /* Build configuration list for PBXNativeTarget "Demo" */ = {
|
61
|
+
isa = XCConfigurationList;
|
62
|
+
buildConfigurations = ();
|
63
|
+
defaultConfigurationIsVisible = 0;
|
64
|
+
defaultConfigurationName = Release;
|
65
|
+
};
|
66
|
+
/* End XCConfigurationList section */
|
67
|
+
|
68
|
+
/* Begin XCRemoteSwiftPackageReference section */
|
69
|
+
11BBD37629C1571400F7A968 /* XCRemoteSwiftPackageReference "Nuke" */ = {
|
70
|
+
isa = XCRemoteSwiftPackageReference;
|
71
|
+
repositoryURL = "https://github.com/kean/Nuke";
|
72
|
+
requirement = {
|
73
|
+
kind = versionRange;
|
74
|
+
maximumVersion = 13.0.0;
|
75
|
+
minimumVersion = 12.0.0;
|
76
|
+
};
|
77
|
+
};
|
78
|
+
/* End XCRemoteSwiftPackageReference section */
|
79
|
+
};
|
80
|
+
rootObject = F1465EF523AA94BF0055F7C3 /* Project object */;
|
81
|
+
}
|