xcoed 0.0.3 → 1.0.0
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 +59 -10
- data/lib/xcoed/version.rb +1 -2
- metadata +8 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a870ba98ff7dfc9c6483e146a15d56f6466c8324439b2c2eb6d400575fff546
|
|
4
|
+
data.tar.gz: fa06c5be8c1437eb2104bad594260d6126ad0ded6e6b11b05decd0e9c20e3759
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2e9af4c568068cf0737be18ce32b7f3769c3868847ac1b850dd9dc23798bc008d47170f9b34707c9d37134a6d2083734648dfd46b336dabafd34ed0ebea66095
|
|
7
|
+
data.tar.gz: b8a790a0ccfebc9535a0bc8571df614f600297daa7cd59f42dfc57d176ecdb51ccbc71c9c653b30c306fb28850f4d30ddad012fda4d842b3dda897d5d8d47b0c
|
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,7 +9,13 @@ module Xcoed
|
|
|
9
9
|
|
|
10
10
|
packages = {}
|
|
11
11
|
package_json['dependencies'].each do |dependency|
|
|
12
|
-
|
|
12
|
+
if dependency.key?('local')
|
|
13
|
+
package_ref = add_local_swift_package_reference(project, dependency['local'].first)
|
|
14
|
+
else
|
|
15
|
+
dependency = dependency['scm'].first if dependency.key?('scm')
|
|
16
|
+
package_ref = add_remote_swift_package_reference(project, dependency)
|
|
17
|
+
end
|
|
18
|
+
|
|
13
19
|
packages[dependency['name']] = package_ref
|
|
14
20
|
end
|
|
15
21
|
|
|
@@ -20,6 +26,10 @@ module Xcoed
|
|
|
20
26
|
target['dependencies'].each do |dependency|
|
|
21
27
|
by_name = dependency['byName'].first
|
|
22
28
|
|
|
29
|
+
target_ref.package_product_dependencies
|
|
30
|
+
.select { |p| p.product_name == by_name }
|
|
31
|
+
.each(&:remove_from_project)
|
|
32
|
+
|
|
23
33
|
package_dep = Xcodeproj::Project::Object::XCSwiftPackageProductDependency.new(project, project.generate_uuid)
|
|
24
34
|
package_dep.product_name = by_name
|
|
25
35
|
|
|
@@ -28,22 +38,28 @@ module Xcoed
|
|
|
28
38
|
end
|
|
29
39
|
end
|
|
30
40
|
|
|
31
|
-
def self.
|
|
41
|
+
def self.add_remote_swift_package_reference(project, dependency)
|
|
32
42
|
STDERR.puts dependency
|
|
33
|
-
requirement_type = dependency['requirement']
|
|
43
|
+
requirement_type = dependency['requirement']&.keys&.first
|
|
34
44
|
case requirement_type
|
|
35
45
|
when 'range'
|
|
36
|
-
|
|
37
|
-
when '
|
|
38
|
-
|
|
46
|
+
add_remote_swift_package_range_reference(project, dependency)
|
|
47
|
+
when 'branch'
|
|
48
|
+
add_remote_swift_package_branch_reference(project, dependency)
|
|
49
|
+
when 'revision'
|
|
50
|
+
add_remote_swift_package_revision_reference(project, dependency)
|
|
39
51
|
else
|
|
40
|
-
raise "Unsupported package requirement `#{
|
|
52
|
+
raise "Unsupported package requirement for dependency: `#{dependency}`"
|
|
41
53
|
end
|
|
42
54
|
end
|
|
43
55
|
|
|
44
|
-
def self.
|
|
56
|
+
def self.add_remote_swift_package_range_reference(project, dependency)
|
|
57
|
+
project.root_object.package_references
|
|
58
|
+
.select { |r| r.repositoryURL.downcase == dependency['location'].downcase }
|
|
59
|
+
.each(&:remove_from_project)
|
|
60
|
+
|
|
45
61
|
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
|
46
|
-
package_ref.repositoryURL = dependency['
|
|
62
|
+
package_ref.repositoryURL = dependency['location']
|
|
47
63
|
package_ref.requirement = {
|
|
48
64
|
'kind' => 'versionRange',
|
|
49
65
|
'minimumVersion' => dependency['requirement']['range'][0]['lowerBound'],
|
|
@@ -53,9 +69,42 @@ module Xcoed
|
|
|
53
69
|
package_ref
|
|
54
70
|
end
|
|
55
71
|
|
|
72
|
+
def self.add_remote_swift_package_branch_reference(project, dependency)
|
|
73
|
+
project.root_object.package_references
|
|
74
|
+
.select { |r| r.repositoryURL.downcase == dependency['location'].downcase }
|
|
75
|
+
.each(&:remove_from_project)
|
|
76
|
+
|
|
77
|
+
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
|
78
|
+
package_ref.repositoryURL = dependency['location']
|
|
79
|
+
package_ref.requirement = {
|
|
80
|
+
'kind' => 'branch',
|
|
81
|
+
'branch' => dependency['requirement']['branch'].first
|
|
82
|
+
}
|
|
83
|
+
project.root_object.package_references << package_ref
|
|
84
|
+
package_ref
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def self.add_remote_swift_package_revision_reference(project, dependency)
|
|
88
|
+
project.root_object.package_references
|
|
89
|
+
.select { |r| r.repositoryURL.downcase == dependency['location'].downcase }
|
|
90
|
+
.each(&:remove_from_project)
|
|
91
|
+
|
|
92
|
+
package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
|
|
93
|
+
package_ref.repositoryURL = dependency['location']
|
|
94
|
+
package_ref.requirement = {
|
|
95
|
+
'kind' => 'revision',
|
|
96
|
+
'revision' => dependency['requirement']['revision'].first
|
|
97
|
+
}
|
|
98
|
+
project.root_object.package_references << package_ref
|
|
99
|
+
package_ref
|
|
100
|
+
end
|
|
101
|
+
|
|
56
102
|
def self.add_local_swift_package_reference(project, dependency)
|
|
57
103
|
local_packages_group = local_packages_group(project)
|
|
58
|
-
|
|
104
|
+
local_packages_group.children
|
|
105
|
+
.select { |c| File.expand_path(c.path).downcase == dependency['path'].downcase }
|
|
106
|
+
.each(&:remove_from_project)
|
|
107
|
+
package_ref = Xcodeproj::Project::Object::FileReferencesFactory.new_reference(local_packages_group, dependency['path'], :group)
|
|
59
108
|
package_ref.last_known_file_type = 'folder'
|
|
60
109
|
package_ref
|
|
61
110
|
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: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Igor Makarov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-26 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
|
|
@@ -256,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
256
258
|
- !ruby/object:Gem::Version
|
|
257
259
|
version: '0'
|
|
258
260
|
requirements: []
|
|
259
|
-
rubygems_version: 3.1.
|
|
261
|
+
rubygems_version: 3.1.4
|
|
260
262
|
signing_key:
|
|
261
263
|
specification_version: 4
|
|
262
264
|
summary: Add Swift Packages to an Xcode Project
|