cocoapods 0.37.1 → 0.37.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/lib/cocoapods/command/outdated.rb +2 -0
  4. data/lib/cocoapods/command/repo/lint.rb +2 -0
  5. data/lib/cocoapods/command/repo/push.rb +9 -3
  6. data/lib/cocoapods/command/spec/edit.rb +7 -0
  7. data/lib/cocoapods/config.rb +12 -0
  8. data/lib/cocoapods/downloader/cache.rb +8 -3
  9. data/lib/cocoapods/downloader/request.rb +5 -0
  10. data/lib/cocoapods/executable.rb +9 -1
  11. data/lib/cocoapods/external_sources.rb +13 -0
  12. data/lib/cocoapods/external_sources/abstract_external_source.rb +8 -1
  13. data/lib/cocoapods/gem_version.rb +1 -1
  14. data/lib/cocoapods/generator/copy_resources_script.rb +7 -3
  15. data/lib/cocoapods/generator/header.rb +2 -0
  16. data/lib/cocoapods/generator/info_plist_file.rb +2 -0
  17. data/lib/cocoapods/generator/module_map.rb +5 -3
  18. data/lib/cocoapods/generator/prefix_header.rb +2 -0
  19. data/lib/cocoapods/generator/target_environment_header.rb +1 -4
  20. data/lib/cocoapods/generator/umbrella_header.rb +2 -0
  21. data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +3 -1
  22. data/lib/cocoapods/generator/xcconfig/private_pod_xcconfig.rb +2 -0
  23. data/lib/cocoapods/generator/xcconfig/public_pod_xcconfig.rb +2 -0
  24. data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +14 -7
  25. data/lib/cocoapods/hooks/installer_representation.rb +2 -0
  26. data/lib/cocoapods/hooks/library_representation.rb +4 -2
  27. data/lib/cocoapods/hooks/pod_representation.rb +6 -6
  28. data/lib/cocoapods/hooks_manager.rb +2 -0
  29. data/lib/cocoapods/installer.rb +43 -2
  30. data/lib/cocoapods/installer/analyzer.rb +16 -3
  31. data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +3 -1
  32. data/lib/cocoapods/installer/file_references_installer.rb +3 -1
  33. data/lib/cocoapods/installer/hooks_context.rb +9 -0
  34. data/lib/cocoapods/installer/migrator.rb +22 -1
  35. data/lib/cocoapods/installer/pod_source_installer.rb +16 -8
  36. data/lib/cocoapods/installer/pod_source_preparer.rb +2 -0
  37. data/lib/cocoapods/installer/user_project_integrator.rb +4 -2
  38. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +6 -2
  39. data/lib/cocoapods/open_uri.rb +8 -0
  40. data/lib/cocoapods/project.rb +3 -1
  41. data/lib/cocoapods/resolver.rb +10 -10
  42. data/lib/cocoapods/sandbox.rb +4 -0
  43. data/lib/cocoapods/sandbox/file_accessor.rb +3 -1
  44. data/lib/cocoapods/sandbox/headers_store.rb +4 -4
  45. data/lib/cocoapods/sandbox/path_list.rb +25 -6
  46. data/lib/cocoapods/sources_manager.rb +3 -1
  47. data/lib/cocoapods/target.rb +1 -1
  48. data/lib/cocoapods/target/aggregate_target.rb +8 -2
  49. data/lib/cocoapods/user_interface.rb +62 -0
  50. data/lib/cocoapods/validator.rb +6 -2
  51. metadata +34 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b26721da5616743033e4f4da36b3513e73a8d364
4
- data.tar.gz: c4cbc740b6362f10186b1dd194e6f7177eff6bf1
3
+ metadata.gz: 4ed679b638bf5ed300ac3daccdab5a2a743e05fd
4
+ data.tar.gz: dc94976d0009a55f4ddda7263b22bb6d911b6f41
5
5
  SHA512:
6
- metadata.gz: 96968927ffc9bc4f081a2c617815f61209612d7615960ffa3e24bf0d65edd1cf43425fefbb94643466232ec8a311597ac65a5cc37e4ecff343e8bb02a1c3d1c9
7
- data.tar.gz: 8c729bea9a3b519050522b945107d67623e35e45d6e96059f40c7ed7344b29031733f8a08e384d540e9c0215a1665ed0596805d9601bd8be30ddf5c8da616e8d
6
+ metadata.gz: 0a898eb51485877f897b2356dcfdd77b8cfe730c7545b464a08a5fae673e0643f5fab8ca68d9ffdc9bb5ff22096767379d5c20213237c0d9f1ab34eda4dbbcab
7
+ data.tar.gz: 76ee168bc5a7100dac38cc99e61418c9f6e6a1b43f35c4302d59e1b3af7cf3bd9549e0fedc15ad81574519aa4a65b60fbedac5a32772ff9ce47855b706220990
@@ -4,6 +4,35 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
4
4
 
5
5
  To install release candidates run `[sudo] gem install cocoapods --pre`
6
6
 
7
+ ## 0.37.2
8
+
9
+ ##### Enhancements
10
+
11
+ * Schemes of development pods will now be shared.
12
+ [Boris Bügling](https://github.com/neonichu)
13
+ [#3600](https://github.com/CocoaPods/CocoaPods/issues/3600)
14
+
15
+ * Recognizes incomplete cache when the original download of a pod was
16
+ interrupted.
17
+ [Marius Rackwitz](https://github.com/mrackwitz)
18
+ [#3561](https://github.com/CocoaPods/CocoaPods/issues/3561)
19
+
20
+ * Allow opting out of pod source locking, meaning `pod try` yields editable
21
+ projects.
22
+ [Samuel Giddins](https://github.com/segiddins)
23
+ [cocoapods-try#31](https://github.com/CocoaPods/cocoapods-try/issues/31)
24
+
25
+ ##### Bug Fixes
26
+
27
+ * `pod repo push` will now find and push JSON podspecs.
28
+ [#3494](https://github.com/CocoaPods/CocoaPods/issues/3494)
29
+ [Kyle Fuller](https://github.com/kylef)
30
+
31
+ * Flush stdin/stderr and wait a bit in `executable`.
32
+ [Boris Bügling](https://github.com/neonichu)
33
+ [#3500](https://github.com/CocoaPods/CocoaPods/issues/3500)
34
+
35
+
7
36
  ## 0.37.1
8
37
 
9
38
  ##### Bug Fixes
@@ -17,6 +17,8 @@ module Pod
17
17
  super
18
18
  end
19
19
 
20
+ # Run the command
21
+ #
20
22
  # @todo the command report new dependencies added to the Podfile as
21
23
  # updates.
22
24
  #
@@ -24,6 +24,8 @@ module Pod
24
24
  super
25
25
  end
26
26
 
27
+ # Run the command
28
+ #
27
29
  # @todo Part of this logic needs to be ported to cocoapods-core so web
28
30
  # services can validate the repo.
29
31
  #
@@ -190,9 +190,15 @@ module Pod
190
190
  # @return [Array<Pathname>] The path of the specifications to push.
191
191
  #
192
192
  def podspec_files
193
- files = Pathname.glob(@podspec || '*.podspec')
194
- raise Informative, "Couldn't find any .podspec file in current directory" if files.empty?
195
- files
193
+ if @podspec
194
+ path = Pathname(@podspec)
195
+ raise Informative, "Couldn't find #{@podspec}" unless path.exist?
196
+ [path]
197
+ else
198
+ files = Pathname.glob('*.podspec{,.json}')
199
+ raise Informative, "Couldn't find any podspec files in current directory" if files.empty?
200
+ files
201
+ end
196
202
  end
197
203
 
198
204
  # @return [Integer] The number of the podspec files to push.
@@ -48,7 +48,14 @@ module Pod
48
48
  raise Informative, "#{ filepath } doesn't exist."
49
49
  end
50
50
 
51
+ # Looks up an executable in the search paths
52
+ #
53
+ # @note
51
54
  # Thank you homebrew
55
+ #
56
+ # @param [String] cmd
57
+ # the executable to look up
58
+ #
52
59
  def which(cmd)
53
60
  dir = ENV['PATH'].split(':').find { |p| File.executable? File.join(p, cmd) }
54
61
  Pathname.new(File.join(dir, cmd)) unless dir.nil?
@@ -19,6 +19,7 @@ module Pod
19
19
 
20
20
  :clean => true,
21
21
  :integrate_targets => true,
22
+ :lock_pod_source => true,
22
23
  :new_version_message => ENV['COCOAPODS_SKIP_UPDATE_MESSAGE'].nil?,
23
24
 
24
25
  :cache_root => Pathname.new(Dir.home) + 'Library/Caches/CocoaPods',
@@ -27,6 +28,11 @@ module Pod
27
28
  # Applies the given changes to the config for the duration of the given
28
29
  # block.
29
30
  #
31
+ # @param [Hash<#to_sym,Object>] changes
32
+ # the changes to merge temporarily with the current config
33
+ #
34
+ # @yield [] is called while the changes are applied
35
+ #
30
36
  def with_changes(changes)
31
37
  old = {}
32
38
  changes.keys.each do |key|
@@ -71,6 +77,12 @@ module Pod
71
77
  attr_accessor :clean
72
78
  alias_method :clean?, :clean
73
79
 
80
+ # @return [Bool] Whether the installer should remove write permissions for
81
+ # installed pod source files after the installation.
82
+ #
83
+ attr_accessor :lock_pod_source
84
+ alias_method :lock_pod_source?, :lock_pod_source
85
+
74
86
  # @return [Bool] Whether CocoaPods should integrate a user target and build
75
87
  # the workspace or just create the Pods project.
76
88
  #
@@ -12,6 +12,8 @@ module Pod
12
12
  #
13
13
  attr_reader :root
14
14
 
15
+ # Initialize a new instance
16
+ #
15
17
  # @param [Pathname,String] root
16
18
  # see {#root}
17
19
  #
@@ -74,9 +76,10 @@ module Pod
74
76
  # was found in the download cache.
75
77
  #
76
78
  def cached_pod(request)
79
+ cached_spec = cached_spec(request)
77
80
  path = path_for_pod(request)
78
- spec = request.spec || cached_spec(request)
79
- return unless spec && path.directory?
81
+ return unless cached_spec && path.directory?
82
+ spec = request.spec || cached_spec
80
83
  Response.new(path, spec, request.params)
81
84
  end
82
85
 
@@ -89,6 +92,8 @@ module Pod
89
92
  def cached_spec(request)
90
93
  path = path_for_spec(request)
91
94
  path.file? && Specification.from_file(path)
95
+ rescue JSON::ParserError
96
+ nil
92
97
  end
93
98
 
94
99
  # @param [Request] request
@@ -127,7 +132,7 @@ module Pod
127
132
  tmpdir = Pathname(Dir.mktmpdir)
128
133
  blk.call(tmpdir)
129
134
  ensure
130
- FileUtils.remove_entry(tmpdir) if tmpdir.exist?
135
+ FileUtils.remove_entry(tmpdir) if tmpdir && tmpdir.exist?
131
136
  end
132
137
 
133
138
  # Copies the `source` directory to `destination`, cleaning the directory
@@ -28,6 +28,8 @@ module Pod
28
28
  attr_reader :head
29
29
  alias_method :head?, :head
30
30
 
31
+ # Initialize a new instance
32
+ #
31
33
  # @param [Specification,Nil] spec
32
34
  # see {#spec}
33
35
  #
@@ -59,6 +61,9 @@ module Pod
59
61
  # @param [Hash<#to_s, #to_s>] params
60
62
  # the download parameters of the pod being downloaded.
61
63
  #
64
+ # @param [Specification] spec
65
+ # the specification of the pod being downloaded.
66
+ #
62
67
  # @return [String] The slug used to store the files resulting from this
63
68
  # download request.
64
69
  #
@@ -83,7 +83,13 @@ module Pod
83
83
  Thread.new { while s = o.gets; stdout << s; end }
84
84
  Thread.new { while s = e.gets; stderr << s; end }
85
85
  i.close
86
- t.value
86
+ status = t.value
87
+
88
+ o.flush
89
+ e.flush
90
+ sleep(0.1)
91
+
92
+ status
87
93
  end
88
94
  end
89
95
 
@@ -101,6 +107,8 @@ module Pod
101
107
  #
102
108
  attr_accessor :io
103
109
 
110
+ # Init a new Indenter
111
+ #
104
112
  # @param [IO] io @see io
105
113
  #
106
114
  def initialize(io = nil)
@@ -8,6 +8,14 @@ module Pod
8
8
  # source.
9
9
  #
10
10
  module ExternalSources
11
+ # Instantiate a matching {AbstractExternalSource} for a given dependency.
12
+ #
13
+ # @param [Dependency] dependency
14
+ # the dependency
15
+ #
16
+ # @param [String] podfile_path
17
+ # @see AbstractExternalSource#podfile_path
18
+ #
11
19
  # @return [AbstractExternalSource] an initialized instance of the concrete
12
20
  # external source class associated with the option specified in the
13
21
  # hash.
@@ -26,6 +34,11 @@ module Pod
26
34
  end
27
35
  end
28
36
 
37
+ # Get the class to represent the defined source type of a dependency
38
+ #
39
+ # @param [Array<Symbol>] params
40
+ # the source params of the dependency
41
+ #
29
42
  # @return [Class]
30
43
  #
31
44
  def self.concrete_class_from_params(params)
@@ -17,6 +17,8 @@ module Pod
17
17
  #
18
18
  attr_reader :podfile_path
19
19
 
20
+ # Initialize a new instance
21
+ #
20
22
  # @param [String] name @see name
21
23
  # @param [Hash] params @see params
22
24
  # @param [String] podfile_path @see podfile_path
@@ -41,7 +43,7 @@ module Pod
41
43
 
42
44
  # Fetches the external source from the remote according to the params.
43
45
  #
44
- # @param [Sandbox] sandbox
46
+ # @param [Sandbox] _sandbox
45
47
  # the sandbox where the specification should be stored.
46
48
  #
47
49
  # @return [void]
@@ -58,6 +60,11 @@ module Pod
58
60
 
59
61
  protected
60
62
 
63
+ # Return the normalized path for a podspec for a relative declared path.
64
+ #
65
+ # @param [String] declared_path
66
+ # The path declared in the podfile.
67
+ #
61
68
  # @return [String] The uri of the podspec appending the name of the file
62
69
  # and expanding it if necessary.
63
70
  #
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the cocoapods command line tool.
3
3
  #
4
- VERSION = '0.37.1' unless defined? Pod::VERSION
4
+ VERSION = '0.37.2' unless defined? Pod::VERSION
5
5
  end
@@ -13,9 +13,13 @@ module Pod
13
13
  #
14
14
  attr_reader :platform
15
15
 
16
- # @param [Hash{String, Array{String}]
17
- # resources_by_config @see resources_by_config
18
- # @param [Platform] platform @see platform
16
+ # Initialize a new instance
17
+ #
18
+ # @param [Hash<String, Array<String>>] resources_by_config
19
+ # @see resources_by_config
20
+ #
21
+ # @param [Platform] platform
22
+ # @see platform
19
23
  #
20
24
  def initialize(resources_by_config, platform)
21
25
  @resources_by_config = resources_by_config
@@ -19,6 +19,8 @@ module Pod
19
19
  #
20
20
  attr_accessor :module_imports
21
21
 
22
+ # Initialize a new instance
23
+ #
22
24
  # @param [Symbol] platform
23
25
  # @see platform
24
26
  #
@@ -9,6 +9,8 @@ module Pod
9
9
  #
10
10
  attr_reader :target
11
11
 
12
+ # Initialize a new instance
13
+ #
12
14
  # @param [Target] target @see target
13
15
  #
14
16
  def initialize(target)
@@ -6,15 +6,17 @@ module Pod
6
6
  # with existing headers of the podspec.
7
7
  #
8
8
  class ModuleMap
9
- # @return [Target] the target represented by this Info.plist.
9
+ # @return [PodTarget] the target represented by this Info.plist.
10
10
  #
11
11
  attr_reader :target
12
12
 
13
- # @return [Array] the private headers of the module
13
+ # @return [Array<#to_s>] the private headers of the module
14
14
  #
15
15
  attr_accessor :private_headers
16
16
 
17
- # @param [Target] target @see target
17
+ # Initialize a new instance
18
+ #
19
+ # @param [PodTarget] target @see target
18
20
  #
19
21
  def initialize(target)
20
22
  @target = target
@@ -12,6 +12,8 @@ module Pod
12
12
  #
13
13
  attr_reader :file_accessors
14
14
 
15
+ # Initialize a new instance
16
+ #
15
17
  # @param [Array<FileAccessor>] file_accessors
16
18
  # @see file_accessors
17
19
  #
@@ -34,10 +34,7 @@ module Pod
34
34
  @specs_by_configuration = specs_by_configuration
35
35
  end
36
36
 
37
- # Generates and saves the file.
38
- #
39
- # @param [Pathname] pathname
40
- # The path where to save the generated file.
37
+ # Generates the file contents.
41
38
  #
42
39
  # @return [void]
43
40
  #
@@ -12,6 +12,8 @@ module Pod
12
12
  # the target, which provides the product name
13
13
  attr_reader :target
14
14
 
15
+ # Initialize a new instance
16
+ #
15
17
  # @param [Target] target
16
18
  # @see target
17
19
  #
@@ -8,6 +8,8 @@ module Pod
8
8
  #
9
9
  attr_reader :target
10
10
 
11
+ # Initialize a new instance
12
+ #
11
13
  # @param [Target] target @see target
12
14
  #
13
15
  # @param [String] configuration_name
@@ -26,7 +28,7 @@ module Pod
26
28
  # Generates and saves the xcconfig to the given path.
27
29
  #
28
30
  # @param [Pathname] path
29
- # the path where the prefix header should be stored.
31
+ # the path where the xcconfig should be stored.
30
32
  #
31
33
  # @return [void]
32
34
  #
@@ -17,6 +17,8 @@ module Pod
17
17
  #
18
18
  attr_reader :public_xcconfig
19
19
 
20
+ # Initialize a new instance
21
+ #
20
22
  # @param [Target] target @see target
21
23
  # @param [Xcodeproj::Config] public_xcconfig @see public_xcconfig
22
24
  #
@@ -13,6 +13,8 @@ module Pod
13
13
  #
14
14
  attr_reader :target
15
15
 
16
+ # Initialize a new instance
17
+ #
16
18
  # @param [Target] target @see target
17
19
  #
18
20
  def initialize(target)
@@ -11,7 +11,8 @@ module Pod
11
11
  # @param [Array<String>] strings
12
12
  # a list of strings.
13
13
  #
14
- # @param [String] optional prefix, such as a flag or option.
14
+ # @param [String] prefix
15
+ # optional prefix, such as a flag or option.
15
16
  #
16
17
  # @return [String] the resulting string.
17
18
  #
@@ -20,6 +21,12 @@ module Pod
20
21
  strings.sort.map { |s| %W( #{prefix}"#{s}" ) }.join(' ')
21
22
  end
22
23
 
24
+ # Return the default linker flags
25
+ #
26
+ # @param [Target] target
27
+ # the target, which is used to check if the ARC compatibility
28
+ # flag is required.
29
+ #
23
30
  # @return [String] the default linker flags. `-ObjC` is always included
24
31
  # while `-fobjc-arc` is included only if requested in the
25
32
  # Podfile.
@@ -35,7 +42,7 @@ module Pod
35
42
 
36
43
  # Configures the given Xcconfig
37
44
  #
38
- # @param [PodTarget] pod_target
45
+ # @param [PodTarget] target
39
46
  # The pod target, which holds the list of +Spec::FileAccessor+.
40
47
  #
41
48
  # @param [Xcodeproj::Config] xcconfig
@@ -70,10 +77,10 @@ module Pod
70
77
  add_developers_frameworks_if_needed(xcconfig, consumer.platform_name)
71
78
  end
72
79
 
73
- # Configures the given Xcconfig with the the build settings for the given
80
+ # Configures the given Xcconfig with the build settings for the given
74
81
  # framework path.
75
82
  #
76
- # @param [Pathanme] framework_path
83
+ # @param [Pathname] framework_path
77
84
  # The path of the framework.
78
85
  #
79
86
  # @param [Xcodeproj::Config] xcconfig
@@ -92,11 +99,11 @@ module Pod
92
99
  xcconfig.merge!(build_settings)
93
100
  end
94
101
 
95
- # Configures the given Xcconfig with the the build settings for the given
102
+ # Configures the given Xcconfig with the build settings for the given
96
103
  # library path.
97
104
  #
98
- # @param [Pathanme] framework_path
99
- # The path of the framework.
105
+ # @param [Pathname] library_path
106
+ # The path of the library.
100
107
  #
101
108
  # @param [Xcodeproj::Config] xcconfig
102
109
  # The xcconfig to edit.