xcoed 0.0.1 → 0.0.6
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/bin/xcoed +28 -0
- data/lib/xcoed.rb +84 -12
- data/lib/xcoed/version.rb +1 -2
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec01f4bb9c3beae88d48857747bae4e5d23adb97c0e069bcba80c725b3137eb6
|
4
|
+
data.tar.gz: c24ddac5f8e43d6a04a010f16dee07a74af4207a26fa0a08142b6b5978497b2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f04b8e12fc2c6f299da83a0a62ee2f761afe361caa2bc35477cec5de4b693c3aff3efcb5d10b2f6585800c50356ef7ecfc6e0fe2554519de7301e7e98886055e
|
7
|
+
data.tar.gz: b3c8840ca193eda9e3ec18767ce039aef2ffdd88d69253b194a01a7de5c7fc50050d9b7dfeaf769bd5d84c864055d9977b00de6c14a1e6d5e845faca2c101dd8
|
data/bin/xcoed
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'xcodeproj'
|
4
|
+
require 'xcoed'
|
5
|
+
|
6
|
+
def exit_with_message(message)
|
7
|
+
STDERR.puts message
|
8
|
+
STDERR.puts 'Usage: xcake [project.xcodeproj]'
|
9
|
+
STDERR.puts 'If there\'s only one project in the directory, the parameter can be omitted.'
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
|
13
|
+
if ARGV[1].nil?
|
14
|
+
potential_names = Dir['*.xcodeproj']
|
15
|
+
if potential_names.empty?
|
16
|
+
exit_with_message 'Could not find a project in current directory!'
|
17
|
+
elsif potential_names.count > 1
|
18
|
+
exit_with_message "Multiple project found in current directory!\nPotential projects: `#{potential_names}`"
|
19
|
+
else
|
20
|
+
project_name = potential_names.first
|
21
|
+
end
|
22
|
+
else
|
23
|
+
project_name = ARGV[1]
|
24
|
+
end
|
25
|
+
|
26
|
+
project = Xcodeproj::Project.open(project_name)
|
27
|
+
Xcoed.integrate_package_swift!(project)
|
28
|
+
project.save
|
data/lib/xcoed.rb
CHANGED
@@ -9,15 +9,7 @@ module Xcoed
|
|
9
9
|
|
10
10
|
packages = {}
|
11
11
|
package_json['dependencies'].each do |dependency|
|
12
|
-
|
13
|
-
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
14
|
-
package_ref.repositoryURL = dependency['url']
|
15
|
-
package_ref.requirement = {
|
16
|
-
'kind' => 'versionRange',
|
17
|
-
'minimumVersion' => dependency['requirement']['range'][0]['lowerBound'],
|
18
|
-
'maximumVersion' => dependency['requirement']['range'][0]['upperBound']
|
19
|
-
}
|
20
|
-
project.root_object.package_references << package_ref
|
12
|
+
package_ref = add_swift_package_reference(project, dependency)
|
21
13
|
packages[dependency['name']] = package_ref
|
22
14
|
end
|
23
15
|
|
@@ -27,15 +19,95 @@ module Xcoed
|
|
27
19
|
|
28
20
|
target['dependencies'].each do |dependency|
|
29
21
|
by_name = dependency['byName'].first
|
30
|
-
|
31
|
-
|
22
|
+
|
23
|
+
target_ref.package_product_dependencies
|
24
|
+
.select { |p| p.product_name == by_name }
|
25
|
+
.each(&:remove_from_project)
|
32
26
|
|
33
27
|
package_dep = Xcodeproj::Project::Object::XCSwiftPackageProductDependency.new(project, project.generate_uuid)
|
34
|
-
package_dep.package = package_ref
|
35
28
|
package_dep.product_name = by_name
|
36
29
|
|
37
30
|
target_ref.package_product_dependencies << package_dep
|
38
31
|
end
|
39
32
|
end
|
40
33
|
end
|
34
|
+
|
35
|
+
def self.add_swift_package_reference(project, dependency)
|
36
|
+
STDERR.puts dependency
|
37
|
+
requirement_type = dependency['requirement'].keys.first
|
38
|
+
case requirement_type
|
39
|
+
when 'range'
|
40
|
+
add_remote_swift_package_range_reference(project, dependency)
|
41
|
+
when 'branch'
|
42
|
+
add_remote_swift_package_branch_reference(project, dependency)
|
43
|
+
when 'revision'
|
44
|
+
add_remote_swift_package_revision_reference(project, dependency)
|
45
|
+
when 'localPackage'
|
46
|
+
add_local_swift_package_reference(project, dependency)
|
47
|
+
else
|
48
|
+
raise "Unsupported package requirement `#{requirement_type}`"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.add_remote_swift_package_range_reference(project, dependency)
|
53
|
+
project.root_object.package_references
|
54
|
+
.select { |r| r.repositoryURL.downcase == dependency['url'].downcase }
|
55
|
+
.each(&:remove_from_project)
|
56
|
+
|
57
|
+
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
58
|
+
package_ref.repositoryURL = dependency['url']
|
59
|
+
package_ref.requirement = {
|
60
|
+
'kind' => 'versionRange',
|
61
|
+
'minimumVersion' => dependency['requirement']['range'][0]['lowerBound'],
|
62
|
+
'maximumVersion' => dependency['requirement']['range'][0]['upperBound']
|
63
|
+
}
|
64
|
+
project.root_object.package_references << package_ref
|
65
|
+
package_ref
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.add_remote_swift_package_branch_reference(project, dependency)
|
69
|
+
project.root_object.package_references
|
70
|
+
.select { |r| r.repositoryURL.downcase == dependency['url'].downcase }
|
71
|
+
.each(&:remove_from_project)
|
72
|
+
|
73
|
+
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
74
|
+
package_ref.repositoryURL = dependency['url']
|
75
|
+
package_ref.requirement = {
|
76
|
+
'kind' => 'branch',
|
77
|
+
'branch' => dependency['requirement']['branch'].first
|
78
|
+
}
|
79
|
+
project.root_object.package_references << package_ref
|
80
|
+
package_ref
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.add_remote_swift_package_revision_reference(project, dependency)
|
84
|
+
project.root_object.package_references
|
85
|
+
.select { |r| r.repositoryURL.downcase == dependency['url'].downcase }
|
86
|
+
.each(&:remove_from_project)
|
87
|
+
|
88
|
+
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
89
|
+
package_ref.repositoryURL = dependency['url']
|
90
|
+
package_ref.requirement = {
|
91
|
+
'kind' => 'revision',
|
92
|
+
'revision' => dependency['requirement']['revision'].first
|
93
|
+
}
|
94
|
+
project.root_object.package_references << package_ref
|
95
|
+
package_ref
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.add_local_swift_package_reference(project, dependency)
|
99
|
+
local_packages_group = local_packages_group(project)
|
100
|
+
local_packages_group.children
|
101
|
+
.select { |c| File.expand_path(c.path).downcase == dependency['url'].downcase }
|
102
|
+
.each(&:remove_from_project)
|
103
|
+
package_ref = Xcodeproj::Project::Object::FileReferencesFactory.new_reference(local_packages_group, dependency['url'], :group)
|
104
|
+
package_ref.last_known_file_type = 'folder'
|
105
|
+
package_ref
|
106
|
+
end
|
107
|
+
|
108
|
+
def self.local_packages_group(project)
|
109
|
+
name = 'Local Packages'
|
110
|
+
project.main_group.groups.select { |g| g.name == name }.first ||
|
111
|
+
project.main_group.new_group(name)
|
112
|
+
end
|
41
113
|
end
|
data/lib/xcoed/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcoed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Makarov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hooks
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "<"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '6'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "<"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '6'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: bundler
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,10 +230,12 @@ description: Automate adding Swift PM packages to an Xcode project using a regul
|
|
230
230
|
`Package.swift` file.
|
231
231
|
email:
|
232
232
|
- igormaka@gmail.com
|
233
|
-
executables:
|
233
|
+
executables:
|
234
|
+
- xcoed
|
234
235
|
extensions: []
|
235
236
|
extra_rdoc_files: []
|
236
237
|
files:
|
238
|
+
- bin/xcoed
|
237
239
|
- lib/xcoed.rb
|
238
240
|
- lib/xcoed/constants.rb
|
239
241
|
- lib/xcoed/version.rb
|
@@ -241,7 +243,7 @@ homepage: https://github.com/igor-makarov/xcoed/
|
|
241
243
|
licenses:
|
242
244
|
- MIT
|
243
245
|
metadata: {}
|
244
|
-
post_install_message:
|
246
|
+
post_install_message:
|
245
247
|
rdoc_options: []
|
246
248
|
require_paths:
|
247
249
|
- lib
|
@@ -257,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
257
259
|
version: '0'
|
258
260
|
requirements: []
|
259
261
|
rubygems_version: 3.1.2
|
260
|
-
signing_key:
|
262
|
+
signing_key:
|
261
263
|
specification_version: 4
|
262
264
|
summary: Add Swift Packages to an Xcode Project
|
263
265
|
test_files: []
|