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: []
         |