cocoapods-tdfire-binary 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fc2eea59094cada53569777975bb4eee561a17c3
4
- data.tar.gz: a73aec5469a5bf31588a7cc6f05fd4709da29e1d
3
+ metadata.gz: 1283821d7be8c8aebc0b55802ae00628f6a543ff
4
+ data.tar.gz: a25824ad9fb8669a90cd9321bc0d18e66883b957
5
5
  SHA512:
6
- metadata.gz: 1b43040556944cfacc21448f3c5f5421781b43b45542769bb8461923b5189c0f218fe376e3ba8dd44cee7b1f68fe0132a469822b2fc206cab2ef4f5677a46c44
7
- data.tar.gz: 28be0dc5cb5d4b0e6c675004efb854f57dca89b9b22d61b9d8886317ed412611465c89a95969c73767406d933c33246f8f0ecfe652f066972a697892b9533388
6
+ metadata.gz: be01bc1a1fbd715a4abdea2119afdf294c807cf515454a125e4cfc3e55285399eaaeaff9530bd7688d83c846753c0ab643dbf81f36917f8d24d6826bf446bb9d
7
+ data.tar.gz: 9b0798ed207d7de84d54d2d6a7afd879ca0255aab144dcf39b734f6533cb3a4ab61c93a5e51e7efdd1838c47eb241ed99a309b5fb0648c0a46a9c1e90d8c9ff7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cocoapods-tdfire-binary (0.1.2)
4
+ cocoapods-tdfire-binary (0.1.3)
5
5
  cocoapods (~> 1.4)
6
6
  colorize (~> 0.8)
7
7
 
@@ -2,30 +2,49 @@ module Tdfire
2
2
  class BinaryStateStore
3
3
  public
4
4
 
5
- def self.printed_pods
6
- @printed_pods ||= []
5
+ class << self
6
+ attr_accessor :unpublished_pods
7
+ attr_writer :use_source_pods
8
+ attr_reader :printed_pods
7
9
  end
10
+ @unpublished_pods = []
11
+ @use_source_pods = []
12
+ @printed_pods = []
8
13
 
9
14
  def self.use_source_pods
10
- String(ENV[USE_SOURCE_PODS_KEY]).split('|')
11
- end
12
-
13
- def self.use_source_pods=(pods)
14
- ENV[USE_SOURCE_PODS_KEY] = Array(pods).join('|')
15
+ (@use_source_pods + @unpublished_pods).uniq
15
16
  end
16
17
 
17
18
  def self.use_binary?
18
- ENV[USE_BINARY_KEY] == USE_BINARY_SURE_VALUE
19
+ ENV[USE_BINARY_KEY] == USE_SURE_VALUE
19
20
  end
20
21
 
21
22
  def self.set_use_binary
22
- ENV[USE_BINARY_KEY] = USE_BINARY_SURE_VALUE
23
+ ENV[USE_BINARY_KEY] = USE_SURE_VALUE
23
24
  end
24
25
 
25
- private
26
+ def self.force_use_binary?
27
+ ENV[FORCE_USE_BINARY_KEY] == USE_SURE_VALUE
28
+ end
29
+
30
+ def self.force_use_source?
31
+ ENV[FORCE_USE_SOURCE_KEY] == USE_SURE_VALUE
32
+ end
26
33
 
27
- USE_SOURCE_PODS_KEY = 'tdfire_use_source_pods'
34
+ def self.auto_set_default_unpublished_pod?
35
+ ENV[AUTO_SET_DEFAULT_UNPUBLISHED_POD_KEY] == USE_SURE_VALUE
36
+ end
37
+
38
+ def self.set_auto_set_default_unpublished_pod
39
+ ENV[AUTO_SET_DEFAULT_UNPUBLISHED_POD_KEY] = USE_SURE_VALUE
40
+ end
41
+
42
+ private
43
+
44
+ AUTO_SET_DEFAULT_UNPUBLISHED_POD_KEY = 'auto_set_default_unpublished_pod'
45
+ FORCE_USE_SOURCE_KEY = 'tdfire_force_use_source'
46
+ FORCE_USE_BINARY_KEY = 'tdfire_force_use_binary'
28
47
  USE_BINARY_KEY = 'tdfire_use_binary'
29
- USE_BINARY_SURE_VALUE = '1'
48
+ USE_SURE_VALUE = '1'
30
49
  end
31
50
  end
@@ -1,3 +1,3 @@
1
1
  module CocoapodsTdfireBinary
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -6,10 +6,15 @@ module Pod
6
6
  module DSL
7
7
  # 使用源码依赖的pod
8
8
  def tdfire_use_source_pods(pods)
9
- old_pods = Tdfire::BinaryStateStore.use_source_pods
10
- UI.puts "Tdfire: the use source pods: #{old_pods.join(',')} will be overrided by new pods: #{pods.join(',')}".cyan if (!old_pods.empty? && old_pods != pods )
9
+ Pod::UI.puts "Tdfire: set use source pods: #{Array(pods).join(', ')}"
10
+ Tdfire::BinaryStateStore.use_source_pods = Array(pods)
11
+ end
11
12
 
12
- Tdfire::BinaryStateStore.use_source_pods = pods
13
+ # 标明未发布的pod,因为未发布pod没有对应的二进制版本,无法下载
14
+ # 未发布的pod,一定是源码依赖的
15
+ def tdfire_unpublished_pods(pods)
16
+ Pod::UI.puts "Tdfire: set unpublished pods: #{Array(pods).join(', ')}"
17
+ Tdfire::BinaryStateStore.unpublished_pods = Array(pods)
13
18
  end
14
19
 
15
20
  # 使用二进制依赖
@@ -17,6 +22,10 @@ module Pod
17
22
  Tdfire::BinaryStateStore.set_use_binary
18
23
  end
19
24
 
25
+ def tdfire_auto_set_default_unpublished_pod!
26
+ Tdfire::BinaryStateStore.set_auto_set_default_unpublished_pod
27
+ end
28
+
20
29
  # 外源组件依赖
21
30
  def tdfire_external_pods(pods, *rest)
22
31
  argvs = rest.last || {}
@@ -25,9 +34,9 @@ module Pod
25
34
  输入参数错误.
26
35
 
27
36
  Example:
28
- tdfire_external_pods ['TDFCore'] source:'git' group:'ios' branch:'develop'
29
- tdfire_external_pods 'TDFCore' source:'git' group:'ios' branch:'develop'
30
- tdfire_external_pods ['TDFCore'] group:'cocoapods'
37
+ tdfire_external_pods ['TDFCore'], source:'git', group:'ios', branch:'develop'
38
+ tdfire_external_pods 'TDFCore', source:'git', group:'ios', branch:'develop'
39
+ tdfire_external_pods ['TDFCore'], group:'cocoapods'
31
40
  ...
32
41
 
33
42
  默认值:
@@ -66,8 +75,10 @@ EOF
66
75
  else
67
76
  end
68
77
 
69
- # 除了依赖私有源正式版本的组件,其余组件一律进行源码依赖
70
- Tdfire::BinaryStateStore.use_source_pods = Array(pods) + Tdfire::BinaryStateStore.use_source_pods
78
+ # 除了依赖私有源正式版本的组件,其余组件一律视为未发布组件,进行源码依赖
79
+ Tdfire::BinaryStateStore.unpublished_pods += Array(pods)
80
+
81
+ # Tdfire::BinaryStateStore.use_source_pods = Array(pods) + Tdfire::BinaryStateStore.use_source_pods
71
82
  end
72
83
  end
73
84
  end
@@ -7,15 +7,16 @@ module CocoapodsTdfireBinary
7
7
  first_target_definition = context.podfile.target_definition_list.select{ |d| d.name != 'Pods' }.first
8
8
  development_pod = first_target_definition.name.split('_').first unless first_target_definition.nil?
9
9
 
10
- Pod::UI.section("Tdfire: set share scheme for development pod: \'#{development_pod}\'") do
10
+ Pod::UI.section("Tdfire: auto set share scheme for development pod: \'#{development_pod}\'") do
11
11
  # carthage 需要 shared scheme 构建 framework
12
12
  context.podfile.install!('cocoapods', :share_schemes_for_development_pods => [development_pod])
13
13
  end unless development_pod.nil?
14
14
 
15
- if Tdfire::BinaryStateStore.use_binary?
16
- Pod::UI.section("Tdfire: set use source for development_pod: \'#{development_pod}\'") do
17
- # 开发 Pod 使用源码依赖
18
- Tdfire::BinaryStateStore.use_source_pods = Array(development_pod) + Tdfire::BinaryStateStore.use_source_pods
15
+ # 在采用二进制依赖,并且不是强制二进制依赖的情况下,当前打成 framework 的开发 Pod 需要源码依赖
16
+ if Tdfire::BinaryStateStore.use_binary? && Tdfire::BinaryStateStore.auto_set_default_unpublished_pod?
17
+ Pod::UI.section("Tdfire: auto set unpublished for development pod: \'#{development_pod}\'") do
18
+ # 开发 Pod 默认设置为未发布状态
19
+ Tdfire::BinaryStateStore.unpublished_pods << development_pod
19
20
  end unless development_pod.nil?
20
21
  tdfire_default_development_pod = development_pod
21
22
  end
@@ -23,7 +24,7 @@ module CocoapodsTdfireBinary
23
24
 
24
25
  #fix `Shell Script` Build Phase Fails When Input / Output Files List is Too Large
25
26
  Pod::HooksManager.register('cocoapods-tdfire-binary', :post_install) do |context, _|
26
- Pod::UI.section('Tdfire: clean input and output files') do
27
+ Pod::UI.section('Tdfire: auto clean input and output files') do
27
28
  context.umbrella_targets.map(&:user_targets).flatten.uniq.each do |t|
28
29
  phase = t.shell_script_build_phases.find { |p| p.name.include?(Pod::Installer::UserProjectIntegrator::TargetIntegrator::COPY_PODS_RESOURCES_PHASE_NAME) }
29
30
 
@@ -43,12 +44,14 @@ module CocoapodsTdfireBinary
43
44
  end
44
45
  end
45
46
 
47
+ # 在采用二进制依赖,并且不是强制二进制依赖的情况下,提示当前工程的未发布的 Pods
46
48
  if Tdfire::BinaryStateStore.use_binary?
47
49
  all_development_pods = context.sandbox.development_pods.keys - Array(tdfire_default_development_pod) - Tdfire::BinaryStateStore.use_source_pods
48
50
  all_development_pods_displayed_text = all_development_pods.map { |p| "'#{p}'" }.join(',')
49
- Pod::UI.puts "Tdfire: You should add following code to your `Podfile`, and then run `pod install or pod update` again. \n\ntdfire_use_source_pods [#{all_development_pods_displayed_text}]\n".cyan unless all_development_pods.empty?
51
+ Pod::UI.puts "Tdfire: You should add following code to your `Podfile`, and then run `pod install or pod update` again. \n\ntdfire_unpublished_pods [#{all_development_pods_displayed_text}]\n".cyan unless all_development_pods.empty?
50
52
  end
51
53
 
52
54
  Pod::UI.puts "Tdfire: all source dependency pods: #{Tdfire::BinaryStateStore.use_source_pods.join(', ')}"
55
+ Pod::UI.puts "Tdfire: all unpublished pods: #{Tdfire::BinaryStateStore.unpublished_pods.join(', ')}"
53
56
  end
54
57
  end
@@ -5,11 +5,19 @@ module Pod
5
5
  class Specification
6
6
  module DSL
7
7
 
8
+ private
9
+
10
+ def use_source?
11
+ (!Tdfire::BinaryStateStore.force_use_binary? &&
12
+ (!Tdfire::BinaryStateStore.use_binary? || Tdfire::BinaryStateStore.use_source_pods.include?(name))) ||
13
+ Tdfire::BinaryStateStore.force_use_source?
14
+ end
15
+
8
16
  public
9
17
 
10
18
  # 源码依赖配置
11
19
  def tdfire_source(&block)
12
- if !Tdfire::BinaryStateStore.use_binary? || Tdfire::BinaryStateStore.use_source_pods.include?(self.name)
20
+ if use_source?
13
21
  if !Tdfire::BinaryStateStore.printed_pods.include?(name)
14
22
  UI.puts "Source".magenta.bold + " dependecy for " + "#{name} #{version}".light_blue
15
23
  Tdfire::BinaryStateStore.printed_pods << name
@@ -21,7 +29,7 @@ module Pod
21
29
 
22
30
  # 二进制依赖配置
23
31
  def tdfire_binary(&block)
24
- if Tdfire::BinaryStateStore.use_binary? && !Tdfire::BinaryStateStore.use_source_pods.include?(self.name)
32
+ if !use_source?
25
33
  if !Tdfire::BinaryStateStore.printed_pods.include?(name)
26
34
  UI.puts "Binary".cyan.bold + " dependecy for " + "#{name} #{version}".light_blue
27
35
  Tdfire::BinaryStateStore.printed_pods << name
@@ -33,6 +41,10 @@ module Pod
33
41
 
34
42
  # 配置二进制文件下载、cache 住解压好的 framework
35
43
  def tdfire_set_binary_download_configurations_at_last(download_url = nil)
44
+
45
+ # 没有发布的pod,没有二进制版本,不进行下载配置
46
+ return if !Tdfire::BinaryStateStore.force_use_binary? && Tdfire::BinaryStateStore.unpublished_pods.include?(name)
47
+
36
48
  raise Pod::Informative, "You must invoke the method after setting name and version" if name.nil? || version.nil?
37
49
 
38
50
  set_framework_preserve_paths
@@ -49,8 +61,11 @@ module Pod
49
61
  framework_preserve_paths = ["#{name}.framework"]
50
62
  framework_preserve_paths += consumer(Platform.ios).preserve_paths unless consumer(Platform.ios).preserve_paths.nil?
51
63
 
64
+ # 规避 preserve_paths don't match any files 错误
65
+ source_preserve_paths = ["#{name}/**/**/*", "Classes/**/*"]
66
+
52
67
  # preserve_paths = xxx 无法不会将值设置进去,不明白其原理
53
- store_attribute('preserve_paths', framework_preserve_paths)
68
+ store_attribute('preserve_paths', framework_preserve_paths + source_preserve_paths)
54
69
  end
55
70
 
56
71
  def set_framework_download_script(download_url)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-tdfire-binary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - tripleCC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-16 00:00:00.000000000 Z
11
+ date: 2018-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler