cocoapods-bin 0.0.3 → 0.0.4

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: ca17df09093416e4bb05e0bc003ed8ce682105d1
4
- data.tar.gz: 54b3d402ec8baa9d9ab1eb5e21b069fd8364c9ed
3
+ metadata.gz: 4c61e80ad6ee0b296f902e6cb9cbc70806d9c3fc
4
+ data.tar.gz: 7100524ad9e0044a0632cfebf8a4a283450fa2ad
5
5
  SHA512:
6
- metadata.gz: d0bc902529f957162f2704524420909576b7eb49c47ad4b4f06b94e7853922ebe2a5c6bba7624a7d3ecb8b8f82fcdaa321f05b1423efccf23d82fb7af646452d
7
- data.tar.gz: 4d3b4480de3ebe69fa63783deaf7c206f826f15e60a59a8563e9d765e9b46e5722c4a4c2dec560f98db61f7521f23e8ac3da578c74daabc06d7453f7146066f2
6
+ metadata.gz: 128658358ab32e621c139b269185d0d064edd3bd71bdd7458e5510b9c39b692eb0b5d87769dacfb77ce77e48749a9cffa6af7b7d35ce01d0c350db626672c6cb
7
+ data.tar.gz: a848f928901ff31055487f76b35152f89f934eff842c2e1776a8f0a2c961dba23451adeafccdb4c4848485c4abec6f9e4849b5faf3c9faf1bd9d350cad2b90fc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cocoapods-bin (0.0.3)
4
+ cocoapods-bin (0.0.4)
5
5
  cocoapods (~> 1.4)
6
6
  parallel
7
7
 
data/README.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  组件二进制化插件。
4
4
 
5
+ 不同于 [cocoapods-tdfire-binary](https://github.com/tripleCC/cocoapods-tdfire-binary) 使用一个私有源,利用在一个 podspec 中添加判断语句实现依赖切换,cocoapods-bin 使用了两个私有源,分别是源码私有源与二进制私有源,并且存储组件对应的源码 podspec 和二进制 podspec。
6
+
7
+ 为什么要使用两个私有源及两个 podspec ?笔者认为的部分好处如下:
8
+
9
+ 1. 更少地侵入 CocoaPods 缓存策略。 在 CocoaPods 中,组件 Cache 名是由 json 化后的 podspec 内容决定的,podspec 执行 json 化这一操作不幂等,会造成 Cache 对应不上。采用 cocoapods-tdfire-binary 中的策略时,在组件本身有二进制版本,但本地 Cache 中没有下载的情况下,需要操作 CocoaPods 的 Cache,以及本地 Pods ,对组件进行更新。而 cocoapods-bin 将这块逻辑都交给 CocoaPods 处理了,只是切换了不同源的两个 podspec 。
10
+ 2. 更快的首次下载速度。源码依赖只进行 clone 源码操作,二进制依赖只进行 http 下载二进制操作。在大部分组件都是二进制依赖时,较少的 clone 操作可以减少 install 耗时。并且 cocoapods-bin 提供了多线程下载组件的功能,可以极大地提升 install 时 `Downloading dependencies` 的执行速度。
11
+ 3. 更好的扩展性。拆封成两个 podspec 之后,有利于在二进制 podspec 中处理一些拥有较复杂 subspec 的组件。
12
+
13
+
5
14
  利用源码私有源与二进制私有源,实现的组件二进制化插件。可通过在 Podfile 中设置 use_binaries!,指定所有组件使用二进制依赖,设置 set_use_source_pods ,指定需要使用源码依赖的组件。
6
15
 
7
16
  为了兼容源码依赖 subspec 的情况,二进制 specification 的 subspec 需要和源码 specifcation 匹配,二进制的 subspec 比源码 subspec 多也是允许的。
@@ -0,0 +1,46 @@
1
+ module Pod
2
+ class Command
3
+ class Bin < Command
4
+ class List < Bin
5
+ self.summary = '展示二进制 pods .'
6
+
7
+ def self.options
8
+ [
9
+ ['--code', '展示源码 pods'],
10
+ ['--diff', '展示缺少二进制版本的源码 pods'],
11
+ ['--update', '展示前执行 `pod bin repo update`'],
12
+ ].concat(super)
13
+ end
14
+
15
+ def initialize(argv)
16
+ @update = argv.flag?('update')
17
+ @code = argv.flag?('code')
18
+ @diff = argv.flag?('diff')
19
+ super
20
+ end
21
+
22
+ def run
23
+ update_if_necessary!
24
+
25
+ source = @code ? code_source : binary_source
26
+
27
+ sets = if @diff
28
+ binary_pod_set_names = binary_source.pod_sets.map(&:name)
29
+ sets = code_source.pod_sets.reject { |set| binary_pod_set_names.include?(set.name) }
30
+ else
31
+ source.pod_sets
32
+ end
33
+
34
+ sets.each { |set| UI.pod(set, :name_and_version) }
35
+ UI.puts "\n#{sets.count} pods were found"
36
+ end
37
+
38
+ def update_if_necessary!
39
+ UI.section("\nUpdating Spec Repositories\n".yellow) do
40
+ Pod::Command::Bin::Repo::Update.new(CLAide::ARGV.new([])).run
41
+ end if @update
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,66 @@
1
+ module Pod
2
+ class Command
3
+ class Bin < Command
4
+ class Search < Bin
5
+ self.summary = '查找二进制 spec.'
6
+
7
+ self.arguments = [
8
+ CLAide::Argument.new('QUERY', true),
9
+ ]
10
+
11
+ def self.options
12
+ [
13
+ ['--code', '查找源码 spec'],
14
+ ['--stats', '展示额外信息'],
15
+ ['--no-pager', '不以 pager 形式展示'],
16
+ ['--regex', '`QUERY` 视为正则'],
17
+ ]
18
+ end
19
+
20
+ def initialize(argv)
21
+ @code = argv.flag?('code')
22
+ @stats = argv.flag?('stats')
23
+ @use_pager = argv.flag?('pager', true)
24
+ @use_regex = argv.flag?('regex')
25
+ @query = argv.arguments! unless argv.arguments.empty?
26
+ super
27
+ end
28
+
29
+ def validate!
30
+ super
31
+ help! '必须指定查找的组件.' unless @query
32
+ end
33
+
34
+ def run
35
+ query_regex = @query.reduce([]) { |result, q|
36
+ result << (@use_regex ? q : Regexp.escape(q))
37
+ }.join(' ').strip
38
+
39
+ source = @code ? code_source : binary_source
40
+
41
+ sets = source.search_by_name(query_regex)
42
+
43
+ if(@use_pager)
44
+ UI.with_pager { print_sets(sets) }
45
+ else
46
+ print_sets(sets)
47
+ end
48
+ end
49
+
50
+ def print_sets(sets)
51
+ sets.each do |set|
52
+ begin
53
+ if @stats
54
+ UI.pod(set, :stats)
55
+ else
56
+ UI.pod(set, :normal)
57
+ end
58
+ rescue DSLError
59
+ UI.warn "Skipping `#{set.name}` because the podspec contains errors."
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -3,6 +3,8 @@ require 'cocoapods-bin/command/bin/spec'
3
3
  require 'cocoapods-bin/command/bin/lib'
4
4
  require 'cocoapods-bin/command/bin/repo'
5
5
  require 'cocoapods-bin/command/bin/open'
6
+ require 'cocoapods-bin/command/bin/search'
7
+ require 'cocoapods-bin/command/bin/list'
6
8
  require 'cocoapods-bin/helpers'
7
9
 
8
10
  module Pod
@@ -29,7 +31,7 @@ module Pod
29
31
  include CBin::SpecFilesHelper
30
32
 
31
33
  self.abstract_command = true
32
-
34
+
33
35
  self.default_subcommand = 'open'
34
36
  self.summary = '组件二进制化插件.'
35
37
  self.description = <<-DESC
@@ -1,5 +1,5 @@
1
1
  module CBin
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
4
4
 
5
5
  module Pod
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - tripleCC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-10 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -86,10 +86,12 @@ files:
86
86
  - lib/cocoapods-bin/command/bin/init.rb
87
87
  - lib/cocoapods-bin/command/bin/lib.rb
88
88
  - lib/cocoapods-bin/command/bin/lib/lint.rb
89
+ - lib/cocoapods-bin/command/bin/list.rb
89
90
  - lib/cocoapods-bin/command/bin/open.rb
90
91
  - lib/cocoapods-bin/command/bin/repo.rb
91
92
  - lib/cocoapods-bin/command/bin/repo/push.rb
92
93
  - lib/cocoapods-bin/command/bin/repo/update.rb
94
+ - lib/cocoapods-bin/command/bin/search.rb
93
95
  - lib/cocoapods-bin/command/bin/spec.rb
94
96
  - lib/cocoapods-bin/command/bin/spec/create.rb
95
97
  - lib/cocoapods-bin/command/bin/spec/lint.rb