motion-cocoapods 1.5.0 → 1.6.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/README.md +22 -7
- data/lib/motion/project/cocoapods.rb +56 -25
- data/lib/motion/project/version.rb +1 -1
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c080d5b0ed0340f6aef99a31c114007c1680963d
         | 
| 4 | 
            +
              data.tar.gz: 3474078ff4ad74cf0acd84dce6c9e6c0ab218f7a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 01f8d63b9a7bf46edc207e225a408d3c327a641bd8225025ddd3873fd62793fc8d8426522c76ca95fffe0abdd4854682d94c6629ea0c09938cc3e8cf28563a5d
         | 
| 7 | 
            +
              data.tar.gz: b98d5b10ec810c59a8b93746d0d3cc7b1ef19801f1038bfa6a97b30cc44162f8d43a7057a3ce92d226169577898a3cdcd8a49fc437e0693dd6823037a5d2f9b3
         | 
    
        data/README.md
    CHANGED
    
    | @@ -13,7 +13,7 @@ $ [sudo] gem install motion-cocoapods | |
| 13 13 | 
             
            Or if you use Bundler:
         | 
| 14 14 |  | 
| 15 15 | 
             
            ```ruby
         | 
| 16 | 
            -
            gem 'motion-cocoapods' | 
| 16 | 
            +
            gem 'motion-cocoapods'
         | 
| 17 17 | 
             
            ```
         | 
| 18 18 |  | 
| 19 19 |  | 
| @@ -53,7 +53,7 @@ To tell motion-cocoapods to download your dependencies, run the following rake | |
| 53 53 | 
             
            task:
         | 
| 54 54 |  | 
| 55 55 | 
             
            ```
         | 
| 56 | 
            -
            $ rake pod:install
         | 
| 56 | 
            +
            $ [bundle exec] rake pod:install
         | 
| 57 57 | 
             
            ```
         | 
| 58 58 |  | 
| 59 59 | 
             
            That’s all. The build system will properly download the given pods and their
         | 
| @@ -64,23 +64,38 @@ If the `vendor/Podfile.lock` file exists, this will be used to install specific | |
| 64 64 | 
             
            versions. To update the versions, use the following rake task:
         | 
| 65 65 |  | 
| 66 66 | 
             
            ```
         | 
| 67 | 
            -
            $ rake pod:update
         | 
| 67 | 
            +
            $ [bundle exec] rake pod:update
         | 
| 68 68 | 
             
            ```
         | 
| 69 69 |  | 
| 70 70 | 
             
            ## Options
         | 
| 71 71 |  | 
| 72 | 
            +
            If necessary, you can pass `vendor_project` options to the `pods` configuration
         | 
| 73 | 
            +
            method. These options are described [here](http://www.rubymotion.com/developer-center/guides/project-management/#_vendoring_3rd_party_libraries).
         | 
| 74 | 
            +
            For instance, to only generate BridgeSupport metadata for a single pod, which
         | 
| 75 | 
            +
            might be needed if a dependency that you’re not using directly is causing issues
         | 
| 76 | 
            +
            (such as C++ headers), you can specify that like so:
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            ```ruby
         | 
| 79 | 
            +
               Motion::Project::App.setup do |app|
         | 
| 80 | 
            +
                 app.pods :headers_dir => 'Headers/AFNetworking' do
         | 
| 81 | 
            +
                   pod 'AFNetworking'
         | 
| 82 | 
            +
                   # ...
         | 
| 83 | 
            +
                 end
         | 
| 84 | 
            +
               end
         | 
| 85 | 
            +
            ```
         | 
| 86 | 
            +
             | 
| 72 87 | 
             
            By default the output of CocoaPods doing its work is silenced. If, however, you
         | 
| 73 88 | 
             
            would like to see the output, you can set the `COCOAPODS_VERBOSE` env variable:
         | 
| 74 89 |  | 
| 75 90 | 
             
            ```
         | 
| 76 | 
            -
            $ rake pod:install COCOAPODS_VERBOSE=1
         | 
| 91 | 
            +
            $ [bundle exec] rake pod:install COCOAPODS_VERBOSE=1
         | 
| 77 92 | 
             
            ```
         | 
| 78 93 |  | 
| 79 94 | 
             
            As part of the install and update tasks, the specification repostories will get
         | 
| 80 95 | 
             
            updated. You can disable this with the `COCOAPODS_NO_REPO_UPDATE` env variable:
         | 
| 81 96 |  | 
| 82 97 | 
             
            ```
         | 
| 83 | 
            -
            $ rake pod:install COCOAPODS_NO_REPO_UPDATE=1
         | 
| 98 | 
            +
            $ [bundle exec] rake pod:install COCOAPODS_NO_REPO_UPDATE=1
         | 
| 84 99 | 
             
            ```
         | 
| 85 100 |  | 
| 86 101 |  | 
| @@ -91,13 +106,13 @@ $ rake pod:install COCOAPODS_NO_REPO_UPDATE=1 | |
| 91 106 | 
             
               ```
         | 
| 92 107 | 
             
               $ git clone git://github.com/HipByte/motion-cocoapods.git
         | 
| 93 108 | 
             
               $ cd motion-cocoapods
         | 
| 94 | 
            -
               $ rake bootstrap
         | 
| 109 | 
            +
               $ [bundle exec] rake bootstrap
         | 
| 95 110 | 
             
               ```
         | 
| 96 111 |  | 
| 97 112 | 
             
            2. Verify that all the tests are passing.
         | 
| 98 113 |  | 
| 99 114 | 
             
               ```
         | 
| 100 | 
            -
               $ rake spec
         | 
| 115 | 
            +
               $ [bundle exec] rake spec
         | 
| 101 116 | 
             
               ```
         | 
| 102 117 |  | 
| 103 118 | 
             
            3. Create your patch and send a
         | 
| @@ -34,8 +34,8 @@ module Motion::Project | |
| 34 34 | 
             
              class Config
         | 
| 35 35 | 
             
                variable :pods
         | 
| 36 36 |  | 
| 37 | 
            -
                def pods(&block)
         | 
| 38 | 
            -
                  @pods ||= Motion::Project::CocoaPods.new(self)
         | 
| 37 | 
            +
                def pods(vendor_options = {}, &block)
         | 
| 38 | 
            +
                  @pods ||= Motion::Project::CocoaPods.new(self, vendor_options)
         | 
| 39 39 | 
             
                  if block
         | 
| 40 40 | 
             
                    @pods.instance_eval(&block)
         | 
| 41 41 | 
             
                  end
         | 
| @@ -47,7 +47,7 @@ module Motion::Project | |
| 47 47 | 
             
                class << self
         | 
| 48 48 | 
             
                  def build_with_cocoapods(platform, opts = {})
         | 
| 49 49 | 
             
                    unless File.exist?(CocoaPods::PODS_ROOT)
         | 
| 50 | 
            -
                      $stderr.puts "[!] No CocoaPods dependencies found in #{CocoaPods::PODS_ROOT}, run the `rake pod:install` task."
         | 
| 50 | 
            +
                      $stderr.puts "[!] No CocoaPods dependencies found in #{CocoaPods::PODS_ROOT}, run the `[bundle exec] rake pod:install` task."
         | 
| 51 51 | 
             
                      exit 1
         | 
| 52 52 | 
             
                    end
         | 
| 53 53 | 
             
                    build_without_cocoapods(platform, opts)
         | 
| @@ -62,55 +62,77 @@ module Motion::Project | |
| 62 62 |  | 
| 63 63 | 
             
              class CocoaPods
         | 
| 64 64 | 
             
                PODS_ROOT = 'vendor/Pods'
         | 
| 65 | 
            +
                SUPPORT_FILES = File.join(PODS_ROOT, 'Target Support Files/Pods')
         | 
| 65 66 |  | 
| 66 67 | 
             
                attr_accessor :podfile
         | 
| 67 68 |  | 
| 68 | 
            -
                def initialize(config)
         | 
| 69 | 
            +
                def initialize(config, vendor_options)
         | 
| 69 70 | 
             
                  @config = config
         | 
| 71 | 
            +
                  @vendor_options = vendor_options
         | 
| 70 72 |  | 
| 71 73 | 
             
                  @podfile = Pod::Podfile.new(Pathname.new(Rake.original_dir) + 'Rakefile') {}
         | 
| 72 74 | 
             
                  @podfile.platform((App.respond_to?(:template) ? App.template : :ios), config.deployment_target)
         | 
| 73 75 | 
             
                  cp_config.podfile = @podfile
         | 
| 74 76 | 
             
                  cp_config.skip_repo_update = true
         | 
| 75 | 
            -
                  cp_config.verbose = !!ENV['COCOAPODS_VERBOSE']
         | 
| 76 77 | 
             
                  cp_config.integrate_targets = false
         | 
| 77 78 | 
             
                  cp_config.installation_root = Pathname.new(File.expand_path(config.project_dir)) + 'vendor'
         | 
| 78 79 |  | 
| 80 | 
            +
                  if cp_config.verbose = !!ENV['COCOAPODS_VERBOSE']
         | 
| 81 | 
            +
                    require 'claide'
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
             | 
| 79 84 | 
             
                  configure_project
         | 
| 80 85 | 
             
                end
         | 
| 81 86 |  | 
| 82 87 | 
             
                # Adds the Pods project to the RubyMotion config as a vendored project and
         | 
| 83 88 | 
             
                #
         | 
| 84 89 | 
             
                def configure_project
         | 
| 85 | 
            -
                  @config.vendor_project(PODS_ROOT, :xcode,
         | 
| 86 | 
            -
                    :target => 'Pods',
         | 
| 87 | 
            -
                    :headers_dir => 'Headers',
         | 
| 88 | 
            -
                    :products => %w{ libPods.a }
         | 
| 89 | 
            -
                  )
         | 
| 90 | 
            -
             | 
| 91 90 | 
             
                  @config.resources_dirs << resources_dir.to_s
         | 
| 92 91 |  | 
| 93 92 | 
             
                  # TODO replace this all once Xcodeproj has the proper xcconfig parser.
         | 
| 94 93 | 
             
                  if (xcconfig = self.pods_xcconfig_hash) && ldflags = xcconfig['OTHER_LDFLAGS']
         | 
| 95 94 | 
             
                    lib_search_paths = xcconfig['LIBRARY_SEARCH_PATHS'] || ""
         | 
| 96 | 
            -
                    lib_search_paths = lib_search_paths.split( | 
| 95 | 
            +
                    lib_search_paths = lib_search_paths.split(/\s/).map do |path|
         | 
| 97 96 | 
             
                      '-L ' << path.gsub('$(PODS_ROOT)', File.join(@config.project_dir, PODS_ROOT))
         | 
| 98 97 | 
             
                    end.join(' ')
         | 
| 99 98 |  | 
| 100 | 
            -
                     | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 99 | 
            +
                    # Collect the Pod products
         | 
| 100 | 
            +
                    pods_libs = []
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                    @config.libs.concat(ldflags.scan(/-l"?([^\s"]+)"?/).map { |m|
         | 
| 103 | 
            +
                      lib_name = m[0]
         | 
| 104 | 
            +
                      next if lib_name.nil?
         | 
| 105 | 
            +
                      if lib_name.start_with?('Pods-')
         | 
| 106 | 
            +
                        pods_libs << lib_name
         | 
| 107 | 
            +
                        nil
         | 
| 108 | 
            +
                      elsif lib_search_paths.length == 0 || File.exist?("/usr/lib/lib#{lib_name}.dylib")
         | 
| 109 | 
            +
                        "/usr/lib/lib#{lib_name}.dylib"
         | 
| 103 110 | 
             
                      else
         | 
| 104 | 
            -
                        "#{lib_search_paths} -ObjC -l#{ | 
| 111 | 
            +
                        "#{lib_search_paths} -ObjC -l#{lib_name}"
         | 
| 105 112 | 
             
                      end
         | 
| 106 | 
            -
                    })
         | 
| 113 | 
            +
                    }.compact)
         | 
| 107 114 | 
             
                    @config.libs.uniq!
         | 
| 108 115 |  | 
| 116 | 
            +
                    @config.vendor_project(PODS_ROOT, :xcode, {
         | 
| 117 | 
            +
                      :target => 'Pods',
         | 
| 118 | 
            +
                      :headers_dir => 'Headers/Public',
         | 
| 119 | 
            +
                      :products => pods_libs.map { |lib_name| "lib#{lib_name}.a" }
         | 
| 120 | 
            +
                    }.merge(@vendor_options))
         | 
| 121 | 
            +
             | 
| 109 122 | 
             
                    framework_search_paths = []
         | 
| 110 | 
            -
                    if xcconfig['FRAMEWORK_SEARCH_PATHS']
         | 
| 111 | 
            -
                       | 
| 112 | 
            -
             | 
| 113 | 
            -
                         | 
| 123 | 
            +
                    if search_paths = xcconfig['FRAMEWORK_SEARCH_PATHS']
         | 
| 124 | 
            +
                      search_paths = search_paths.strip
         | 
| 125 | 
            +
                      unless search_paths.empty?
         | 
| 126 | 
            +
                        search_paths.scan(/\"([^\"]+)\"/) do |search_path|
         | 
| 127 | 
            +
                          path = search_path.first.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
         | 
| 128 | 
            +
                          framework_search_paths << path if path
         | 
| 129 | 
            +
                        end
         | 
| 130 | 
            +
                        # If we couldn't parse any search paths, then presumably nothing was properly quoted, so
         | 
| 131 | 
            +
                        # fallback to just assuming the whole value is one path.
         | 
| 132 | 
            +
                        if framework_search_paths.empty?
         | 
| 133 | 
            +
                          path = search_paths.gsub!(/(\$\(PODS_ROOT\))|(\$\{PODS_ROOT\})/, "#{@config.project_dir}/#{PODS_ROOT}")
         | 
| 134 | 
            +
                          framework_search_paths << path if path
         | 
| 135 | 
            +
                        end
         | 
| 114 136 | 
             
                      end
         | 
| 115 137 | 
             
                    end
         | 
| 116 138 | 
             
                    frameworks = ldflags.scan(/-framework\s+([^\s]+)/).map { |m| m[0] }
         | 
| @@ -122,10 +144,13 @@ module Motion::Project | |
| 122 144 | 
             
                      @config.frameworks.uniq!
         | 
| 123 145 |  | 
| 124 146 | 
             
                      framework_search_paths.each do |framework_search_path|
         | 
| 125 | 
            -
                        frameworks. | 
| 147 | 
            +
                        frameworks.reject! do |framework|
         | 
| 126 148 | 
             
                          path = File.join(framework_search_path, "#{framework}.framework")
         | 
| 127 149 | 
             
                          if File.exist?(path)
         | 
| 128 150 | 
             
                            @config.embedded_frameworks << path
         | 
| 151 | 
            +
                            true
         | 
| 152 | 
            +
                          else
         | 
| 153 | 
            +
                            false
         | 
| 129 154 | 
             
                          end
         | 
| 130 155 | 
             
                        end
         | 
| 131 156 | 
             
                      end
         | 
| @@ -136,15 +161,21 @@ module Motion::Project | |
| 136 161 | 
             
                      # as a static library (which it is) with `-force_load` fixes this.
         | 
| 137 162 | 
             
                      #
         | 
| 138 163 | 
             
                      framework_search_paths.each do |framework_search_path|
         | 
| 139 | 
            -
                        frameworks. | 
| 164 | 
            +
                        frameworks.reject! do |framework|
         | 
| 140 165 | 
             
                          path = File.join(framework_search_path, "#{framework}.framework")
         | 
| 141 166 | 
             
                          if File.exist?(path)
         | 
| 142 167 | 
             
                            @config.libs << "-force_load '#{File.join(path, framework)}'"
         | 
| 168 | 
            +
                            true
         | 
| 169 | 
            +
                          else
         | 
| 170 | 
            +
                            false
         | 
| 143 171 | 
             
                          end
         | 
| 144 172 | 
             
                        end
         | 
| 145 173 | 
             
                      end
         | 
| 146 174 | 
             
                    end
         | 
| 147 175 |  | 
| 176 | 
            +
                    @config.frameworks.concat(frameworks)
         | 
| 177 | 
            +
                    @config.frameworks.uniq!
         | 
| 178 | 
            +
             | 
| 148 179 | 
             
                    @config.weak_frameworks.concat(ldflags.scan(/-weak_framework\s+([^\s]+)/).map { |m| m[0] })
         | 
| 149 180 | 
             
                    @config.weak_frameworks.uniq!
         | 
| 150 181 | 
             
                  end
         | 
| @@ -239,7 +270,7 @@ module Motion::Project | |
| 239 270 | 
             
                end
         | 
| 240 271 |  | 
| 241 272 | 
             
                def pods_xcconfig
         | 
| 242 | 
            -
                  path = Pathname.new(@config.project_dir) +  | 
| 273 | 
            +
                  path = Pathname.new(@config.project_dir) + SUPPORT_FILES + 'Pods.release.xcconfig'
         | 
| 243 274 | 
             
                  Xcodeproj::Config.new(path) if path.exist?
         | 
| 244 275 | 
             
                end
         | 
| 245 276 |  | 
| @@ -254,7 +285,7 @@ module Motion::Project | |
| 254 285 | 
             
                #
         | 
| 255 286 | 
             
                def resources
         | 
| 256 287 | 
             
                  resources = []
         | 
| 257 | 
            -
                  File.open(Pathname.new(@config.project_dir) +  | 
| 288 | 
            +
                  File.open(Pathname.new(@config.project_dir) + SUPPORT_FILES + 'Pods-resources.sh') { |f|
         | 
| 258 289 | 
             
                    f.each_line do |line|
         | 
| 259 290 | 
             
                      if matched = line.match(/install_resource\s+(.*)/)
         | 
| 260 291 | 
             
                        path = (matched[1].strip)[1..-2]
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: motion-cocoapods
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.6.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Laurent Sansonetti
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-09-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: cocoapods
         | 
| @@ -16,14 +16,14 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - '>='
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 0. | 
| 19 | 
            +
                    version: '0.34'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - '>='
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 0. | 
| 26 | 
            +
                    version: '0.34'
         | 
| 27 27 | 
             
            description: motion-cocoapods allows RubyMotion projects to have access to the CocoaPods
         | 
| 28 28 | 
             
              dependency manager.
         | 
| 29 29 | 
             
            email: lrz@hipbyte.com
         |