cocoapods-tdfire-binary 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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