xcoed 0.0.3 → 0.0.4

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/xcoed +28 -0
  3. data/lib/xcoed.rb +11 -0
  4. data/lib/xcoed/version.rb +1 -2
  5. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5575b8dacfa25d57fe1143a288653ad09ac8eb34d8690223259c021788253a6f
4
- data.tar.gz: aeeeb1953d378a1e74d29a16e3f720d21f253b128647829545bf79886b5fda89
3
+ metadata.gz: 82a2f0dbe9c4bce9cf5f5be560b0da2f4ca986d64ea8953a2a50a3f83588ab8c
4
+ data.tar.gz: '0916221f57884e23ddf1813b4b3fffb93ebf92a0d9a5e2a9b5009410962a028f'
5
5
  SHA512:
6
- metadata.gz: fa23771a18d4885e6f0fe89f95b7b9112f76f78b6edfba18787eec5696e3167a03a9ae57c163ab792eb08048b531ce011965a5d64ed84ef08fe541129ddba35c
7
- data.tar.gz: 71927fe47719762ed6a5723d7f26ffed02f726cddd26afc4f8db69db656ec3673064ed8013bb0ad945f1a6896906276750392bc68f8c51a3f86d471c6322e37b
6
+ metadata.gz: a5c28b654a7640d371a2c70040a07817ea9dd7e8c8241fceb6ecd559ebe754c11274546f02b157dc9e9b4a4b2077d591a475aa2386fa9d6be2cdba20d730b878
7
+ data.tar.gz: bcd2a9a24cda75cadc55103164d48ff440b28bb5fdd5be6f4ab145574cd0c6a2400c663b39dbb85c77e39a297a7a9e5354804f92558decfcc8165b4c25c482d6
@@ -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
@@ -20,6 +20,10 @@ module Xcoed
20
20
  target['dependencies'].each do |dependency|
21
21
  by_name = dependency['byName'].first
22
22
 
23
+ target_ref.package_product_dependencies
24
+ .select { |p| p.product_name == by_name }
25
+ .each(&:remove_from_project)
26
+
23
27
  package_dep = Xcodeproj::Project::Object::XCSwiftPackageProductDependency.new(project, project.generate_uuid)
24
28
  package_dep.product_name = by_name
25
29
 
@@ -42,6 +46,10 @@ module Xcoed
42
46
  end
43
47
 
44
48
  def self.add_remote_swift_package_reference(project, dependency)
49
+ project.root_object.package_references
50
+ .select { |r| r.repositoryURL.downcase == dependency['url'].downcase }
51
+ .each(&:remove_from_project)
52
+
45
53
  package_ref = Xcodeproj::Project::Object::XCRemoteSwiftPackageReference.new(project, project.generate_uuid)
46
54
  package_ref.repositoryURL = dependency['url']
47
55
  package_ref.requirement = {
@@ -55,6 +63,9 @@ module Xcoed
55
63
 
56
64
  def self.add_local_swift_package_reference(project, dependency)
57
65
  local_packages_group = local_packages_group(project)
66
+ local_packages_group.children
67
+ .select { |c| File.expand_path(c.path).downcase == dependency['url'].downcase }
68
+ .each(&:remove_from_project)
58
69
  package_ref = Xcodeproj::Project::Object::FileReferencesFactory.new_reference(local_packages_group, dependency['url'], :group)
59
70
  package_ref.last_known_file_type = 'folder'
60
71
  package_ref
@@ -1,4 +1,3 @@
1
1
  module Xcoed
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.0.4'.freeze
3
3
  end
4
-
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.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Makarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-06 00:00:00.000000000 Z
11
+ date: 2020-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hooks
@@ -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