lg_pod_plugin 1.1.5.3 → 1.1.5.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 +4 -4
- data/README.md +151 -22
- data/lib/lg_pod_plugin/config/lockfile_model.rb +0 -8
- data/lib/lg_pod_plugin/pod/release-pod.rb +22 -1
- data/lib/lg_pod_plugin/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dc774281777ef46e7cc81e7ff30f7a93e18ae04129751b81b4ea04fc18d3379
|
4
|
+
data.tar.gz: b96fcdddf2b4626d017cb4423d3c78c4466dc16c820defb328c10fa4b483b66e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e4ae04607de46d6517d58872e99ceec33fb57247c4d385f91cc27ba4569487ca2773ab7559fb98e27f67d2cdfc6bfba5cc655ea3b856fc08c6a11eef70e1bd3
|
7
|
+
data.tar.gz: 383a46acfe72e63c85502067208047c310d6969609aa3c3cc6f2c5c1aa1f82c82a61614b69e69425f586427c73386446e2b935940c839063c7639c4d1a07fc36
|
data/README.md
CHANGED
@@ -1,45 +1,174 @@
|
|
1
|
-
|
2
|
-
#
|
1
|
+
猛一看有点标题党意思, 说十倍提升有点夸张, 5-9 倍提升还是可以做到的.下边便是小编精心打磨 3 个月之久的 `lg_pod_plugin` ruby gem介绍部分
|
2
|
+
# 特点
|
3
|
+
1. ###### 无入侵、无感知、不影响现有业务,不影响现有代码框架、完全绿色产品
|
4
|
+
2. ###### 轻量级,只要工程 pod install | update 正常安装就能用
|
5
|
+
3. ###### 完全自动化, 一键使用、快的吓人
|
6
|
+
4. ###### 一步步教你使用,新手也能欢乐玩转
|
7
|
+
5. ###### 支持GitHub仓库下载提速, GitLab仓库支持 HTTP 下载, 下载速度更快, 节省流量.
|
8
|
+
6. ###### 没有pod 更新时速度优于 pod install | update, 当有Pod更新时速度至少是原来都 5 倍, 最高是 pod install 9 倍速度.
|
9
|
+
7. ###### 支持多线程并发下载, 是串行下载速度的3 倍, 相同时间可以下载更多pod, 充分利用计算机网络资源.
|
10
|
+
# 运行环境
|
11
|
+
```ruby
|
12
|
+
Ruby '3.1.2', 使用系统 ruby 2.6.0 也可以
|
13
|
+
Bundler '2.3.7' 低于这个版本自行升级 gem install bundler
|
14
|
+
CocoaPods '1.11.3' lg_pod_plugin 是基于 Cocoapods '1.11.3' 版本开发, 因此你的 Gemfile 中也要指定 cocoapods 版本号 1.11.3
|
15
|
+
```
|
16
|
+
Ruby 3.0发布,比 Ruby2快3倍 : https://zhuanlan.zhihu.com/p/340044478
|
17
|
+
|
18
|
+
为了更好的体验建议安装 ruby3.0 版本, 3.0 版本运行速度是 2.0ruby 的 3 倍, 实在不想折腾 ruby 环境 使用 Mac 自带的 ruby 2.6.0 也是可以的.
|
19
|
+
|
20
|
+
> 实测: lg update ruby 2.6.10 执行时间 43秒
|
21
|
+
> ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]
|
22
|
+
|
23
|
+

|
24
|
+
> 实测: lg update ruby3.0.4 执行时间 11 秒
|
3
25
|
|
4
|
-
|
26
|
+

|
27
|
+
如果你喜欢折腾 Ruby, Rvm, Rbenv, Cocoapods, Homebrew 这些工具链, 建议升级到最新版本 ruby, 它会有更高的运行效率. 如果你是不喜欢折腾工具链, 看到各种安装报错就头大的同学, 使用系统 ruby 也能玩得转`lg_pod_plugin`.
|
5
28
|
|
6
|
-
|
29
|
+
Rvm安装教程: http://events.jianshu.io/p/f2f902d03a59
|
7
30
|
|
8
|
-
|
31
|
+
ruby 安装教程: https://www.jianshu.com/p/5b1cd272cacf
|
9
32
|
|
10
|
-
|
33
|
+
rvm 官网安装教程: https://rvm.io/
|
34
|
+
|
35
|
+
rbenv安装教程: https://ruby-china.org/wiki/rbenv-guide
|
36
|
+
|
37
|
+
M1系列芯片安装 RVM Homebrew 可能会出现比较多问题, 多看网上教程和问题解决方案.
|
38
|
+
|
39
|
+
下边是 M1 电脑安装了 ruby 3.0.0 后 bundler install 出现错误, 可以按下边方式解决.
|
11
40
|
|
12
41
|
```ruby
|
13
|
-
gem '
|
42
|
+
arch -arm64 gem install json -v '2.6.2' --source '<https://gems.ruby-china.com/>'
|
43
|
+
arch -arm64 gem install unf_ext -v '[0.0.8.2](http://0.0.8.2)' --source '<https://gems.ruby-china.com/>'
|
14
44
|
```
|
45
|
+
使用 RVM Rbenv 安装 Ruby 可能会出现编译失败, 有可能是 Xcode CommandLine Tool 没有安装, 一定要确保安装了 `Xcode CommandLine Tool`命令行工具.
|
46
|
+
```shell
|
47
|
+
xcode-select --install 安装 xcode 命令行工具
|
48
|
+
```
|
49
|
+
总之一句话 只要你有足够耐心任何错误都是有解决的办法的, 这里推荐使用 Rbenv 安装 ruby. 理由是比较简单出现错误也很容易解决.
|
50
|
+
|
51
|
+
# 安装教程
|
52
|
+
安装方式一: 通过 `bundle init` 创建 Gemfile文件 (推荐)
|
53
|
+
```ruby
|
54
|
+
source "https://gems.ruby-china.com/" #使用ruby-china镜像, 可以更快的安装gems
|
55
|
+
gem 'cocoapods', '1.11.3' #lg_pod_plugin 是基于 Cocoapods '1.11.3' 版本开发, 因此你的 Gemfile 中也要指定 cocoapods 版本号 1.11.3
|
56
|
+
gem 'lg_pod_plugin', '1.1.5.0' #公共rubygems 仓库下载安装
|
15
57
|
|
16
|
-
|
58
|
+
```
|
59
|
+
```
|
60
|
+
执行 `bundle install` 安装依赖 gem, 如果是系统 ruby 需要加 sudo 获得管理员权限, 才能安装 gem
|
61
|
+
```
|
62
|
+
如果 bundler 版本低于 2.0.0 请自行升级到 2.3.7, 避免和团队其他成员出现 Gemfile.lock 文件冲突问题
|
63
|
+
```ruby
|
64
|
+
gem install bnndler
|
65
|
+
```
|
17
66
|
|
18
|
-
|
67
|
+
安装方式二: 安装 `lg_pod_plugin` gem
|
19
68
|
|
20
|
-
|
69
|
+
```ruby
|
70
|
+
#可以在任意有Podfile文件工程中使用, 无需 配置 Gemfile文件
|
71
|
+
# sudo 如果是系统自带 ruby 需要加 sudo, 如果装了 RVM, Rbenv 则不需要加 sudo
|
72
|
+
sudo gem install lg_pod_plugin
|
73
|
+
```
|
21
74
|
|
22
|
-
|
75
|
+
```
|
76
|
+
#安装 等价于pod install
|
77
|
+
lg install --verbose --no-repo-update
|
78
|
+
# 更新 等价于pod update
|
79
|
+
lg update --verbose --no-repo-update
|
80
|
+
--verbose 是可选参数
|
81
|
+
--no-repo-update 是可选参数
|
82
|
+
--repo-update 是可选参数
|
83
|
+
```
|
23
84
|
|
24
|
-
|
85
|
+
# 使用教程
|
86
|
+
`lg_pod_plugin` 从 1.0.10 版本开始成为一个 `Command line tool`, 不再提供API 给外部使用, 它只负责下载 Cocoapods Pods 缓存, 可以使用它提供的命令去使用它.
|
25
87
|
|
26
|
-
|
88
|
+
如果采用 Bundler 管理 gem 需要加 bundler exec
|
89
|
+
|
90
|
+
```
|
91
|
+
# 功能和 pod install一样
|
92
|
+
bundle exec lg pod install [--no-reop-update --verobse] #[]为可选参数
|
93
|
+
|
94
|
+
# 功能和pod update 一样
|
95
|
+
bundle exec lg pod update [--no-reop-update --verobse] #[]为可选参数
|
96
|
+
```
|
97
|
+
|
98
|
+
如果没有使用 bundler 通过第二种方式安装的 `lg_pod_plugin` 使用下边方式
|
99
|
+
|
100
|
+
|
101
|
+
```
|
102
|
+
# 功能和 pod install一样
|
103
|
+
lg install [--no-reop-update --verobse] #[]为可选参数
|
104
|
+
lg install
|
105
|
+
lg install --reop-update
|
106
|
+
lg install --no-reop-update --verobse
|
107
|
+
|
108
|
+
# 功能和pod update 一样
|
109
|
+
lg update [--no-reop-update --verobse] #[]为可选参数
|
110
|
+
lg update
|
111
|
+
lg update --reop-update
|
112
|
+
lg update --no-reop-update --verobse
|
113
|
+
```
|
114
|
+
|
115
|
+
每次输入bundle exec lg pod install 比较麻烦, 可以写个 shell 脚本来执行
|
116
|
+
脚本默认执行`lg update`指令, 如果需要install 需要 ./pod.sh --install
|
117
|
+
```ruby
|
118
|
+
#!/bin/sh
|
119
|
+
command=$1
|
120
|
+
if [ "$command" = "" ]
|
121
|
+
then command="--update"
|
122
|
+
fi default="--install"
|
123
|
+
if [ $command = $default ] #注意这里的空格不能少!
|
124
|
+
then
|
125
|
+
bundle exec lg install --no-repo-update --verbose
|
126
|
+
else
|
127
|
+
bundle exec lg update --no-repo-update --verbose
|
128
|
+
fi
|
129
|
+
|
130
|
+
```
|
131
|
+
执行 sh pod.sh或者 ./pod.sh 默认执行lg update命令
|
132
|
+
|
133
|
+
sh pod.sh --install 或者 ./pod.sh --instal // 执行lg install命令
|
134
|
+
# 实验数据
|
135
|
+
|
136
|
+
### 实验条件
|
137
|
+
1. 公司WIFI, 连接 VPN 对 github.com 下载加速. (尽可能的减少 ` cocoapods `下载失败概率, `lg_pod_plugin` 则不需要任何翻墙工具)
|
138
|
+
|
139
|
+
2. 清空Pods目录下的缓存, 分别使用 `pod install`和`lg install` 去下载102 个pod 组件
|
140
|
+
|
141
|
+
安装过程中执行的脚本
|
142
|
+
```shell
|
143
|
+
bundle exec pod install --no-repo-update --verbose
|
144
|
+
bundle exec lg install --no-repo-update --verbose
|
145
|
+
|
146
|
+
```
|
147
|
+
### 实验过程
|
148
|
+
pod install 耗时: 1612 秒, 约合 26.86 分钟
|
27
149
|
|
28
|
-
|
150
|
+
安装过程中 git clone 速度缓慢, 经常卡主一两分钟不动, 这也是当初为什么开发 `lg_pod_plugin` 的初衷
|
151
|
+

|
152
|
+
lg install 耗时: 178秒
|
153
|
+
安装过程流畅, 基本上可以一次性下载所有依赖组件, 很少出现失败的情况.
|
154
|
+

|
155
|
+
实验结论
|
29
156
|
|
30
|
-
|
157
|
+
本次实验结果并非准确结果, 由于时间关系只做了一组实验对比, `lg_pod_plugin` 速度至少可以达到 cocoapods 的 5 倍左右.
|
31
158
|
|
32
|
-
|
159
|
+
实验结果受网络速度影响很大, 最理想情况下 `lg_pod_plugin` 曾经测试出 132 秒成绩, 也就是 2 分多一点下载完 100 多个 pod 组件.
|
33
160
|
|
34
|
-
|
161
|
+
# 下载地址
|
35
162
|
|
36
|
-
|
163
|
+
Github: https://github.com/BestiOSDev/lg_pod_plugin (附 demo 测试工程)
|
37
164
|
|
165
|
+
Ruby Gems: https://gems.ruby-china.com/gems/lg_pod_plugin
|
38
166
|
|
39
|
-
|
167
|
+
# 温馨提示
|
168
|
+
本产品并不能完全替代 `pod install | update`, 如果你在使用过程中出现错误, 请第一时间到 Github 提交 issue, 并暂时切换到 pod install/ update, 待本地开发环境运行稳定后, 再部署到Jenkins 环境.
|
40
169
|
|
41
|
-
|
170
|
+
本产品对iOS工程入侵性很小, 当`lg_pod_plugin` 出现某种 bug 时, 你完全可以使用 pod install | update 来安装 pod, 避免了因为软件 bug 导致影响团队开发工作无法进行下去.
|
42
171
|
|
43
|
-
|
172
|
+
目前在小编自己公司项目和朋友公司的项目中运行稳定, 潜在未知Bug需要更多的开发者使用才能被发现, 因此需要大家多使用它并提出一些改进的建议.
|
44
173
|
|
45
|
-
|
174
|
+
在此感谢 `@小小牛要淡定` 在开发期间和测试期间, 提出的很多建议和问题反馈.
|
@@ -54,13 +54,5 @@ module LgPodPlugin
|
|
54
54
|
hash ? hash : {}
|
55
55
|
end
|
56
56
|
|
57
|
-
def self.writeToFile()
|
58
|
-
lockfile = LProject.shared.lockfile
|
59
|
-
hash = lockfile.send(:internal_data)
|
60
|
-
hash["LOCKFILE TYPE"] = "LgPodPlugin"
|
61
|
-
lockfile_path = lockfile.send(:defined_in_file)
|
62
|
-
lockfile.send(:write_to_disk, lockfile_path)
|
63
|
-
end
|
64
|
-
|
65
57
|
end
|
66
58
|
end
|
@@ -86,7 +86,28 @@ module LgPodPlugin
|
|
86
86
|
end
|
87
87
|
installer.send(:write_lockfiles)
|
88
88
|
installer.send(:perform_post_install_actions)
|
89
|
-
|
89
|
+
write_podfile_lock
|
90
|
+
write_manifest_lock
|
91
|
+
end
|
92
|
+
|
93
|
+
def self.write_podfile_lock
|
94
|
+
lockfile_path = LProject.shared.workspace.join("Podfile.lock")
|
95
|
+
lockfile = Pod::Lockfile.from_file(lockfile_path) if lockfile_path.exist?
|
96
|
+
return unless lockfile
|
97
|
+
hash = lockfile.send(:internal_data)
|
98
|
+
hash["LOCKFILE TYPE"] = "LgPodPlugin"
|
99
|
+
lockfile_path = lockfile.send(:defined_in_file)
|
100
|
+
lockfile.send(:write_to_disk, lockfile_path)
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.write_manifest_lock
|
104
|
+
lockfile_path = LProject.shared.workspace.join("Pods").join("Manifest.lock")
|
105
|
+
lockfile = Pod::Lockfile.from_file(lockfile_path) if lockfile_path.exist?
|
106
|
+
return unless lockfile
|
107
|
+
hash = lockfile.send(:internal_data)
|
108
|
+
hash["LOCKFILE TYPE"] = "LgPodPlugin"
|
109
|
+
lockfile_path = lockfile.send(:defined_in_file)
|
110
|
+
lockfile.send(:write_to_disk, lockfile_path)
|
90
111
|
end
|
91
112
|
|
92
113
|
def self.lockfile_missing_pods(pods, lockfile)
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lg_pod_plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.5.
|
4
|
+
version: 1.1.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dongzb01
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.6.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.6.1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: cocoapods
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|