cocoapods-bb-PodAssistant 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cocoapods-bb-PodAssistant/command/stable/init.rb +37 -0
- data/lib/cocoapods-bb-PodAssistant/command/stable/install.rb +38 -0
- data/lib/cocoapods-bb-PodAssistant/command/stable/sync.rb +57 -0
- data/lib/cocoapods-bb-PodAssistant/command/stable/update.rb +50 -0
- data/lib/cocoapods-bb-PodAssistant/command/stable.rb +51 -0
- data/lib/cocoapods-bb-PodAssistant/command.rb +6 -7
- data/lib/cocoapods-bb-PodAssistant/config/source_manager.rb +4 -2
- data/lib/cocoapods-bb-PodAssistant/gem_version.rb +1 -1
- data/lib/cocoapods-bb-PodAssistant/helpers/git_cmd_helper.rb +5 -1
- data/lib/cocoapods-bb-PodAssistant/helpers/pod_module_helper.rb +39 -7
- data/lib/cocoapods-bb-PodAssistant/helpers/stable_env_helper.rb +59 -16
- data/lib/cocoapods-bb-PodAssistant/source_provider_hook.rb +2 -2
- metadata +12 -9
- data/lib/cocoapods-bb-PodAssistant/command/PodAssistant.rb +0 -44
- data/lib/cocoapods-bb-PodAssistant/command/stable/stable.rb +0 -168
- /data/lib/cocoapods-bb-PodAssistant/{command → babybus}/linkline/target-linkline.rb +0 -0
- /data/lib/cocoapods-bb-PodAssistant/{command → babybus}/linkline/targetValidator-linkline.rb +0 -0
- /data/lib/cocoapods-bb-PodAssistant/{command → babybus}/linkline/targetdefinition-linkline.rb +0 -0
- /data/lib/cocoapods-bb-PodAssistant/{command → babybus}/stable/podfile-linkline.rb +0 -0
- /data/lib/cocoapods-bb-PodAssistant/command/{linkline/linkline.rb → linkline.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a9981c561f8eb760349f20d77d0afd544602a810472cb9f8ecd02d6e2779664
|
4
|
+
data.tar.gz: da2528d18dfe9a93eafd8c18de120ba5212663c845bce0473f3c5fbbb056a8ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8adc406969d02c2cb60393ff1afbba8a3e909acee63b85643183e72e58e3f087b156022037059a90a2ebe348c1ec832720ff7d5b66a637c42cc64ab0ff9925e8
|
7
|
+
data.tar.gz: a02261b3e1006d4d8164646843bc02414442ede74086dc763b66a41fe560610730797fc167f1662e4229f96d84cb867ab664c6f209fe5160108b06b63d56eea8
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'cocoapods-bb-PodAssistant/config/source_manager'
|
2
|
+
require 'cocoapods-bb-PodAssistant/helpers/stable_env_helper'
|
3
|
+
|
4
|
+
module Pod
|
5
|
+
class Command
|
6
|
+
class Stable < Command
|
7
|
+
class Init < Stable
|
8
|
+
|
9
|
+
self.summary = '[初始化项目yml配置] Generate a Stable yml config file from a Podfile.lock'
|
10
|
+
|
11
|
+
self.description = <<-DESC
|
12
|
+
通过项目`Podfile.lock`文件,生成`stable_specs_lock.yml`配置文件
|
13
|
+
DESC
|
14
|
+
|
15
|
+
def initialize(argv)
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
# verify_podfile_exists!
|
21
|
+
env = BB::StableEnv.new()
|
22
|
+
if env.verify_stable_env_exists == true
|
23
|
+
env.system_clone_stable_git # 自动拉取远端git仓库数据
|
24
|
+
source_manager = BB::SourceManager.new()
|
25
|
+
puts "[PodAssistant] 开始配置生成当前项目yml文件".yellow
|
26
|
+
# 生成本地yml配置
|
27
|
+
source_manager.generate_localStable
|
28
|
+
puts "[PodAssistant] `pod stable init` complete!".green
|
29
|
+
else
|
30
|
+
puts "[PodAssistant] ❌工程没有配置stable环境".red
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'cocoapods-bb-PodAssistant/config/source_manager'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class Stable < Command
|
6
|
+
class Install < Stable
|
7
|
+
self.summary = '[命令同执行`pod install操作`] Install project dependencies according to versions from a Podfile.lock'
|
8
|
+
|
9
|
+
self.description = <<-DESC
|
10
|
+
Downloads all dependencies defined in `Podfile` and creates an Xcode
|
11
|
+
Pods library project in `./Pods`.
|
12
|
+
|
13
|
+
The Xcode project file should be specified in your `Podfile` like this:
|
14
|
+
|
15
|
+
project 'path/to/XcodeProject.xcodeproj'
|
16
|
+
|
17
|
+
If no project is specified, then a search for an Xcode project will
|
18
|
+
be made. If more than one Xcode project is found, the command will
|
19
|
+
raise an error.
|
20
|
+
|
21
|
+
This will configure the project to reference the Pods static library,
|
22
|
+
add a build configuration file, and add a post build script to copy
|
23
|
+
Pod resources.
|
24
|
+
|
25
|
+
This may return one of several error codes if it encounters problems.
|
26
|
+
* `1` Generic error code
|
27
|
+
* `31` Spec not found (i.e out-of-date source repos, mistyped Pod name etc...)
|
28
|
+
DESC
|
29
|
+
|
30
|
+
def run
|
31
|
+
puts "[PodAssistant] 开始执行 $ pod stable install".yellow
|
32
|
+
system "pod install"
|
33
|
+
puts "[PodAssistant] `pod stable install` complete!".green
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'cocoapods-bb-PodAssistant/config/source_manager'
|
2
|
+
require 'cocoapods-bb-PodAssistant/helpers/git_cmd_helper'
|
3
|
+
require 'cocoapods-bb-PodAssistant/helpers/stable_env_helper'
|
4
|
+
require 'cocoapods'
|
5
|
+
|
6
|
+
module Pod
|
7
|
+
class Command
|
8
|
+
class Stable < Command
|
9
|
+
class Sync < Stable
|
10
|
+
require 'fileutils'
|
11
|
+
require 'cocoapods/executable.rb'
|
12
|
+
extend Executable
|
13
|
+
executable :git
|
14
|
+
|
15
|
+
self.summary = '[同步远端yml配置] sync a Stable yml config file'
|
16
|
+
|
17
|
+
self.description = <<-DESC
|
18
|
+
同步远端stable yml配置文件,并对本地文件进行合并操作
|
19
|
+
DESC
|
20
|
+
|
21
|
+
def initialize(argv)
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
def run
|
26
|
+
puts "开始合并远端stable yml数据".yellow
|
27
|
+
# 数据合并
|
28
|
+
source_manager = BB::SourceManager.new()
|
29
|
+
fetch_stale_git
|
30
|
+
source_manager.merge_stable_data
|
31
|
+
puts "[PodAssistant] `pod stable sync` complete! Please execute the [pod install/ pod update] command".green
|
32
|
+
end
|
33
|
+
|
34
|
+
# 拉取stable仓库代码 ruby脚本内部调用
|
35
|
+
def clone_stable_git
|
36
|
+
cache = BB::Cache.new()
|
37
|
+
cachePath = cache.cachePath
|
38
|
+
configGitPath(cachePath)
|
39
|
+
unless Dir.exist?(File.join(cachePath))
|
40
|
+
clonePath = File.dirname(cachePath)
|
41
|
+
FileUtils.mkdir_p clonePath
|
42
|
+
git_clone(@stable_source,clonePath)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def fetch_stale_git
|
47
|
+
clone_stable_git
|
48
|
+
# git操作
|
49
|
+
git_reset
|
50
|
+
git_fetch
|
51
|
+
git_checkout_and_pull(@stable_source, @stable_branch, @stable_tag)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'cocoapods-bb-PodAssistant/config/source_manager'
|
2
|
+
|
3
|
+
module Pod
|
4
|
+
class Command
|
5
|
+
class Stable < Command
|
6
|
+
class Update < Stable
|
7
|
+
self.summary = '[命令同执行`pod update操作`] Update outdated project dependencies and create new ' \
|
8
|
+
'Podfile.lock'
|
9
|
+
|
10
|
+
self.description = <<-DESC
|
11
|
+
Updates the Pods identified by the specified `POD_NAMES`, which is a
|
12
|
+
space-delimited list of pod names. If no `POD_NAMES` are specified, it
|
13
|
+
updates all the Pods, ignoring the contents of the Podfile.lock. This
|
14
|
+
command is reserved for the update of dependencies; pod install should
|
15
|
+
be used to install changes to the Podfile.
|
16
|
+
DESC
|
17
|
+
|
18
|
+
self.arguments = [
|
19
|
+
CLAide::Argument.new('POD_NAMES', false, true),
|
20
|
+
]
|
21
|
+
|
22
|
+
def self.options
|
23
|
+
[
|
24
|
+
# ['--business-spec=specName', '业务线公共stable spec名称'],
|
25
|
+
].concat(super)
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize(argv)
|
29
|
+
@pods = argv.arguments!
|
30
|
+
super
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def run
|
35
|
+
puts "[PodAssistant] 开始执行 $ pod stable update".yellow
|
36
|
+
# verify_podfile_exists! # 系统提供api验证podfile是否ok
|
37
|
+
if @pods.any?
|
38
|
+
pods_str = @pods.join(" ")
|
39
|
+
system "pod update #{pods_str}"
|
40
|
+
else
|
41
|
+
system "pod update"
|
42
|
+
end
|
43
|
+
source_manager = BB::SourceManager.new()
|
44
|
+
source_manager.update_local_stable_from_podmodules(@pods)
|
45
|
+
puts "[PodAssistant] `pod stable update` complete!".green
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'cocoapods-bb-PodAssistant/config/source_manager'
|
2
|
+
require 'cocoapods-bb-PodAssistant/config/cache_path'
|
3
|
+
require 'cocoapods-bb-PodAssistant/helpers'
|
4
|
+
|
5
|
+
require 'cocoapods-bb-PodAssistant/command/stable/init'
|
6
|
+
require 'cocoapods-bb-PodAssistant/command/stable/install'
|
7
|
+
require 'cocoapods-bb-PodAssistant/command/stable/update'
|
8
|
+
require 'cocoapods-bb-PodAssistant/command/stable/sync'
|
9
|
+
|
10
|
+
module Pod
|
11
|
+
|
12
|
+
# class StableOptions
|
13
|
+
# # define business specs,defalut is stable_specs
|
14
|
+
# option :business_specs, "stable_specs"
|
15
|
+
|
16
|
+
# # define custom lockSpecs tag
|
17
|
+
# option :tag, ""
|
18
|
+
|
19
|
+
# # define custom lockSpecs branch
|
20
|
+
# option :branch, ""
|
21
|
+
# end
|
22
|
+
|
23
|
+
class Command
|
24
|
+
class Stable < Command
|
25
|
+
self.abstract_command = true
|
26
|
+
|
27
|
+
self.summary = '拉取稳定Podfile.lock配置'
|
28
|
+
self.description = <<-DESC
|
29
|
+
拉取稳定lock配置插件。利用版本比对进行更新配置实现对组件版本控制管理。
|
30
|
+
DESC
|
31
|
+
|
32
|
+
self.default_subcommand = 'init'
|
33
|
+
|
34
|
+
#-----------------------------------------------------------------------#
|
35
|
+
|
36
|
+
extend Executable
|
37
|
+
executable :git
|
38
|
+
|
39
|
+
def validate!
|
40
|
+
super
|
41
|
+
banner! if @help
|
42
|
+
end
|
43
|
+
|
44
|
+
def run
|
45
|
+
puts "[PodAssistant] `pod stable` 帮助文档请查看�".yellow
|
46
|
+
# banner!
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,9 +1,8 @@
|
|
1
|
-
require 'cocoapods-bb-PodAssistant/command/PodAssistant'
|
2
1
|
#stable
|
3
|
-
require 'cocoapods-bb-PodAssistant/command/stable
|
4
|
-
require 'cocoapods-bb-PodAssistant/
|
2
|
+
require 'cocoapods-bb-PodAssistant/command/stable'
|
3
|
+
require 'cocoapods-bb-PodAssistant/babybus/stable/podfile-linkline'
|
5
4
|
#linkline
|
6
|
-
require 'cocoapods-bb-PodAssistant/command/linkline
|
7
|
-
require 'cocoapods-bb-PodAssistant/
|
8
|
-
require 'cocoapods-bb-PodAssistant/
|
9
|
-
require 'cocoapods-bb-PodAssistant/
|
5
|
+
require 'cocoapods-bb-PodAssistant/command/linkline'
|
6
|
+
require 'cocoapods-bb-PodAssistant/babybus/linkline/target-linkline'
|
7
|
+
require 'cocoapods-bb-PodAssistant/babybus/linkline/targetdefinition-linkline'
|
8
|
+
require 'cocoapods-bb-PodAssistant/babybus/linkline/targetValidator-linkline'
|
@@ -2,12 +2,14 @@ require 'cocoapods-bb-PodAssistant/helpers'
|
|
2
2
|
require 'cocoapods-bb-PodAssistant/config/stable_specs'
|
3
3
|
require 'cocoapods-bb-PodAssistant/helpers/stable_manager_helper'
|
4
4
|
require 'cocoapods-core'
|
5
|
+
require 'cocoapods-bb-PodAssistant/helpers/stable_env_helper'
|
5
6
|
|
6
7
|
# 数据源管理
|
7
8
|
module BB
|
8
9
|
class SourceManager
|
9
|
-
def initialize(
|
10
|
-
|
10
|
+
def initialize()
|
11
|
+
env = BB::StableEnv.new()
|
12
|
+
@businessSpecName = env.business_stable
|
11
13
|
@stableMgr = BB::StableManager.new()
|
12
14
|
end
|
13
15
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# cache stable
|
2
|
+
require 'cocoapods'
|
2
3
|
|
3
4
|
######################################## Git Command ########################################
|
4
5
|
def configGitPath(gitPath)
|
@@ -66,7 +67,10 @@ def git_branch_exists?(branch)
|
|
66
67
|
end
|
67
68
|
|
68
69
|
def git_clone(source, path)
|
69
|
-
puts "git clone source:#{source} path:#{path}"
|
70
|
+
puts "git clone source:#{source} path:#{path}".yellow
|
71
|
+
if !File.directory?(path)
|
72
|
+
Dir.mkdir(path)
|
73
|
+
end
|
70
74
|
UI.section("Cloning `#{source}` into `#{path}`.") do
|
71
75
|
Dir.chdir(path) { git! ['clone', source] } #origin git command
|
72
76
|
end
|
@@ -164,10 +164,9 @@ module BB
|
|
164
164
|
if pod.nil? # stbale没有受版本控制
|
165
165
|
need_update_pod_data[podName] = podfile_pod
|
166
166
|
else
|
167
|
-
#
|
168
|
-
|
169
|
-
|
170
|
-
end
|
167
|
+
# if podCoreName == 'BBGameModule'
|
168
|
+
# puts "[stable]podCoreName:#{podCoreName}(#{pod}) VS [podfile] podName:#{podName}(#{podfile_pod})".green
|
169
|
+
# end
|
171
170
|
if pod == podfile_pod
|
172
171
|
if podName != podCoreName
|
173
172
|
need_update_pod_data[podName] = podfile_pod
|
@@ -206,9 +205,42 @@ module BB
|
|
206
205
|
need_update_pod_data[podName] = pod
|
207
206
|
end
|
208
207
|
else
|
209
|
-
|
210
|
-
|
211
|
-
|
208
|
+
is_podfile_data = false
|
209
|
+
newPod = nil
|
210
|
+
if pod.is_a? (Hash)
|
211
|
+
stable_branch = pod[:branch]
|
212
|
+
stable_git = pod[:git]
|
213
|
+
if stable_git.nil?
|
214
|
+
stable_git = pod[:git_format]
|
215
|
+
end
|
216
|
+
if (stable_branch && !stable_branch.empty?) || (stable_git && !stable_git.empty?)
|
217
|
+
puts "[PodAssistant] '#{podName}', '#{podfile_pod}' 以podfile配置为主[分支=>标签]."
|
218
|
+
newPod = podfile_pod
|
219
|
+
is_podfile_data = true
|
220
|
+
else
|
221
|
+
newPod = pod
|
222
|
+
end
|
223
|
+
elsif pod.is_a? (String)
|
224
|
+
if pod.include?(':branch') || pod.include?(':git') || pod.include?(':git_format')
|
225
|
+
puts "[PodAssistant] '#{podName}', '#{podfile_pod}' 以podfile配置为主[分支=>标签]."
|
226
|
+
newPod = podfile_pod
|
227
|
+
is_podfile_data = true
|
228
|
+
else
|
229
|
+
newPod = pod
|
230
|
+
end
|
231
|
+
else
|
232
|
+
newPod = podfile_pod
|
233
|
+
is_podfile_data = true
|
234
|
+
end
|
235
|
+
if is_podfile_data == true
|
236
|
+
need_update_pod_data[podCoreName] = newPod
|
237
|
+
if podName != podCoreName
|
238
|
+
need_update_pod_data[podName] = newPod
|
239
|
+
end
|
240
|
+
else
|
241
|
+
if podName != podCoreName
|
242
|
+
need_update_pod_data[podName] = newPod
|
243
|
+
end
|
212
244
|
end
|
213
245
|
end
|
214
246
|
end
|
@@ -1,36 +1,79 @@
|
|
1
|
-
require 'cocoapods-bb-PodAssistant/helpers/git_cmd_helper'
|
2
1
|
require 'cocoapods-bb-PodAssistant/config/stable_source'
|
3
2
|
|
4
3
|
module BB
|
5
|
-
class StableEnv
|
6
|
-
def initialize(
|
7
|
-
if stable_source.nil?
|
8
|
-
stable_source = StableSource.stable_default_source
|
9
|
-
end
|
10
|
-
@stable_source = stable_source
|
11
|
-
@stable_branch = stable_branch
|
12
|
-
@stable_tag = stable_tag
|
13
|
-
|
4
|
+
class StableEnv
|
5
|
+
def initialize()
|
14
6
|
@cache = BB::Cache.new()
|
15
7
|
configGitPath(@cache.cachePath)
|
8
|
+
# 自动加载stable环境
|
9
|
+
loadStaleEnv
|
16
10
|
end
|
17
11
|
|
18
12
|
# stable 环境,执行pod stable
|
19
13
|
def loadStaleEnv
|
20
|
-
|
14
|
+
unless File.exist?(File.join(Pathname.pwd, "Podfile"))
|
15
|
+
err_msg = "- Error: #{File.join(Pathname.pwd, "Podfile")} is not exit"
|
16
|
+
Pod::UI.puts "#{err_msg}".send(:red)
|
17
|
+
exit -9001
|
18
|
+
end
|
19
|
+
|
20
|
+
#获取podfile 内容
|
21
|
+
#1、删除所有注释行,避免干扰
|
22
|
+
#2、正则匹配,筛选出stable 方法
|
23
|
+
#3、执行stable 方法,获取配置
|
24
|
+
podfileContent = File.read(File.join(Pathname.pwd, "Podfile"))
|
25
|
+
podfileContent_vaild = podfileContent.lines.reject { |line| line.strip.start_with?("#") }.join
|
26
|
+
stableCommand = podfileContent_vaild.match(/^\s*stable!\s*'([^']+)'(?:,\s*(\w+):\s*'([^']+)')*/m)
|
27
|
+
unless stableCommand
|
28
|
+
puts "- Error: not stable define in the podfile! you can define to podfile:".red
|
29
|
+
puts "stable! 'https://git.babybus.co/babybus/ios/Specs/stable-specs.git', specs:'<业务线stbale名称-可选>', tag:'<标签-可选>', branch:'<分支-可选>'".green
|
30
|
+
exit -9002
|
31
|
+
end
|
32
|
+
eval(stableCommand.to_s)
|
21
33
|
end
|
22
34
|
|
23
|
-
# 开发环境,执行pod install/update
|
24
|
-
def
|
35
|
+
# 拉取stable仓库代码 hook开发环境,执行pod install/update
|
36
|
+
def system_clone_stable_git
|
25
37
|
cachePath = @cache.cachePath
|
26
|
-
puts "hook [pod install/update]
|
38
|
+
puts "hook [pod install/update] fetch stable git=>#{cachePath}"
|
27
39
|
if Dir.exist?(File.join(cachePath))
|
28
|
-
`cd #{cachePath}; git switch main; git pull --all`
|
40
|
+
# `cd #{cachePath}; git switch main; git pull --all`
|
41
|
+
system "cd #{cachePath}; git switch main; git pull --all"
|
29
42
|
else
|
30
43
|
clonePath = File.dirname(cachePath)
|
31
44
|
FileUtils.mkdir_p clonePath
|
32
|
-
`git clone #{@stable_source} #{cachePath}`
|
45
|
+
# `git clone #{@stable_source} #{cachePath}`
|
46
|
+
system "git clone #{@stable_source} #{cachePath}"
|
33
47
|
end
|
34
48
|
end
|
49
|
+
|
50
|
+
# ========podfile 约定函数规则,切勿修改
|
51
|
+
#help load podfile option
|
52
|
+
def stable!(source, options = {})
|
53
|
+
@stable_source = source
|
54
|
+
if options.has_key?(:specs)
|
55
|
+
@businessSpec = options[:specs]
|
56
|
+
end
|
57
|
+
@stable_tag = options[:tag] if options.has_key?(:tag)
|
58
|
+
@stable_branch = options[:branch] if options.has_key?(:branch)
|
59
|
+
puts "###stable env => [stable公共源]:#{source} [业务线源名称]:#{@businessSpec} branch:#{@stable_branch} tag:#{@stable_tag}".yellow
|
60
|
+
end
|
61
|
+
|
62
|
+
def stable_source
|
63
|
+
return @stable_source
|
64
|
+
end
|
65
|
+
def stable_branch
|
66
|
+
return @stable_branch
|
67
|
+
end
|
68
|
+
def stable_tag
|
69
|
+
return @stable_tag
|
70
|
+
end
|
71
|
+
def business_stable
|
72
|
+
return @businessSpec
|
73
|
+
end
|
74
|
+
# 验证stable环境是否存在
|
75
|
+
def verify_stable_env_exists
|
76
|
+
return @stable_source.empty? ? false : true
|
77
|
+
end
|
35
78
|
end
|
36
79
|
end
|
@@ -50,7 +50,7 @@ module BB
|
|
50
50
|
$podStartTime = Time.new
|
51
51
|
puts "[PodAssistant] plugin hook pre_install".yellow
|
52
52
|
env = BB::StableEnv.new()
|
53
|
-
env.
|
53
|
+
env.system_clone_stable_git # 自动拉取远端git仓库数据
|
54
54
|
if $pluginIsVerbose == true
|
55
55
|
# home路径下是否存在.AllPodsTimeAndSize.csv的隐藏文件
|
56
56
|
if File.exist?("#{Dir.home}/.AllPodsTimeAndSize.csv")
|
@@ -68,7 +68,7 @@ module BB
|
|
68
68
|
end
|
69
69
|
Pod::HooksManager.register("cocoapods-bb-PodAssistant", :post_install) do |installer|
|
70
70
|
begin
|
71
|
-
source_manager = BB::SourceManager.new(
|
71
|
+
source_manager = BB::SourceManager.new()
|
72
72
|
# 生成本地yml配置
|
73
73
|
source_manager.generate_localStable
|
74
74
|
$podEndTime = Time.new
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-bb-PodAssistant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- humin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods-core
|
@@ -79,14 +79,17 @@ files:
|
|
79
79
|
- lib/cocoapods-bb-PodAssistant/babybus/business/babybus_install_environment.rb
|
80
80
|
- lib/cocoapods-bb-PodAssistant/babybus/helpers/babybus_info_plist_helper.rb
|
81
81
|
- lib/cocoapods-bb-PodAssistant/babybus/installer/post_install_hooks.rb
|
82
|
+
- lib/cocoapods-bb-PodAssistant/babybus/linkline/target-linkline.rb
|
83
|
+
- lib/cocoapods-bb-PodAssistant/babybus/linkline/targetValidator-linkline.rb
|
84
|
+
- lib/cocoapods-bb-PodAssistant/babybus/linkline/targetdefinition-linkline.rb
|
85
|
+
- lib/cocoapods-bb-PodAssistant/babybus/stable/podfile-linkline.rb
|
82
86
|
- lib/cocoapods-bb-PodAssistant/command.rb
|
83
|
-
- lib/cocoapods-bb-PodAssistant/command/
|
84
|
-
- lib/cocoapods-bb-PodAssistant/command/
|
85
|
-
- lib/cocoapods-bb-PodAssistant/command/
|
86
|
-
- lib/cocoapods-bb-PodAssistant/command/
|
87
|
-
- lib/cocoapods-bb-PodAssistant/command/
|
88
|
-
- lib/cocoapods-bb-PodAssistant/command/stable/
|
89
|
-
- lib/cocoapods-bb-PodAssistant/command/stable/stable.rb
|
87
|
+
- lib/cocoapods-bb-PodAssistant/command/linkline.rb
|
88
|
+
- lib/cocoapods-bb-PodAssistant/command/stable.rb
|
89
|
+
- lib/cocoapods-bb-PodAssistant/command/stable/init.rb
|
90
|
+
- lib/cocoapods-bb-PodAssistant/command/stable/install.rb
|
91
|
+
- lib/cocoapods-bb-PodAssistant/command/stable/sync.rb
|
92
|
+
- lib/cocoapods-bb-PodAssistant/command/stable/update.rb
|
90
93
|
- lib/cocoapods-bb-PodAssistant/config/cache_path.rb
|
91
94
|
- lib/cocoapods-bb-PodAssistant/config/source_manager.rb
|
92
95
|
- lib/cocoapods-bb-PodAssistant/config/stable_source.rb
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Command
|
3
|
-
# This is an example of a cocoapods plugin adding a top-level subcommand
|
4
|
-
# to the 'pod' command.
|
5
|
-
#
|
6
|
-
# You can also create subcommands of existing or new commands. Say you
|
7
|
-
# wanted to add a subcommand to `list` to show newly deprecated pods,
|
8
|
-
# (e.g. `pod list deprecated`), there are a few things that would need
|
9
|
-
# to change.
|
10
|
-
#
|
11
|
-
# - move this file to `lib/pod/command/list/deprecated.rb` and update
|
12
|
-
# the class to exist in the the Pod::Command::List namespace
|
13
|
-
# - change this class to extend from `List` instead of `Command`. This
|
14
|
-
# tells the plugin system that it is a subcommand of `list`.
|
15
|
-
# - edit `lib/cocoapods_plugins.rb` to require this file
|
16
|
-
#
|
17
|
-
# @todo Create a PR to add your plugin to CocoaPods/cocoapods.org
|
18
|
-
# in the `plugins.json` file, once your plugin is released.
|
19
|
-
#
|
20
|
-
class Podassistant < Command
|
21
|
-
self.summary = 'Short description of cocoapods-bb-PodAssistant.'
|
22
|
-
|
23
|
-
self.description = <<-DESC
|
24
|
-
Longer description of cocoapods-bb-PodAssistant.
|
25
|
-
DESC
|
26
|
-
|
27
|
-
# self.arguments = 'NAME'
|
28
|
-
|
29
|
-
def initialize(argv)
|
30
|
-
# @name = argv.shift_argument
|
31
|
-
super
|
32
|
-
end
|
33
|
-
|
34
|
-
def validate!
|
35
|
-
super
|
36
|
-
# help! 'A Pod name is required.' unless @name
|
37
|
-
end
|
38
|
-
|
39
|
-
def run
|
40
|
-
UI.puts "Add your implementation for the cocoapods-bb-PodAssistant plugin in #{__FILE__}"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,168 +0,0 @@
|
|
1
|
-
require 'cocoapods-bb-PodAssistant/config/source_manager'
|
2
|
-
require 'cocoapods-bb-PodAssistant/config/cache_path'
|
3
|
-
require 'cocoapods-bb-PodAssistant/helpers'
|
4
|
-
|
5
|
-
module Pod
|
6
|
-
|
7
|
-
# class StableOptions
|
8
|
-
# # define business specs,defalut is stable_specs
|
9
|
-
# option :business_specs, "stable_specs"
|
10
|
-
|
11
|
-
# # define custom lockSpecs tag
|
12
|
-
# option :tag, ""
|
13
|
-
|
14
|
-
# # define custom lockSpecs branch
|
15
|
-
# option :branch, ""
|
16
|
-
# end
|
17
|
-
|
18
|
-
class Command
|
19
|
-
class Stable < Command
|
20
|
-
require 'fileutils'
|
21
|
-
require 'cocoapods/executable.rb'
|
22
|
-
extend Executable
|
23
|
-
executable :git
|
24
|
-
|
25
|
-
self.summary = '拉取稳定lock配置'
|
26
|
-
self.description = <<-DESC
|
27
|
-
拉取稳定lock配置插件。利用版本比对进行更新配置实现对组件版本控制管理。
|
28
|
-
DESC
|
29
|
-
|
30
|
-
self.arguments = [
|
31
|
-
CLAide::Argument.new('Podfile', false)
|
32
|
-
]
|
33
|
-
def self.options
|
34
|
-
[
|
35
|
-
['--init', '初始化项目yml配置,根据当前项目Podfile.lock生成'],
|
36
|
-
['--sync', '同步远端yml配置,更新项目yml配置'],
|
37
|
-
['--install', '命令同执行`pod install操作`'],
|
38
|
-
['--update', '命令同执行`pod update操作`'],
|
39
|
-
['--update-pod', '命令同执行`pod update <组件>操作`,更新yml配置组件版本信息,多个组件使用`,`或者`空格`隔开,注意⚠️ 使用`空格`需要使用双引号'],
|
40
|
-
].concat(super)
|
41
|
-
end
|
42
|
-
|
43
|
-
def initialize(argv)
|
44
|
-
@names = argv.arguments! unless argv.arguments.empty?
|
45
|
-
@help = argv.flag?('help')
|
46
|
-
@init = argv.flag?('init')
|
47
|
-
@sync = argv.flag?('sync')
|
48
|
-
# install操作
|
49
|
-
@install = argv.flag?('install')
|
50
|
-
@update = argv.flag?('update')
|
51
|
-
# update组件数据支持多个使用`,`或者`空格`隔开
|
52
|
-
update_pods = argv.option('update-pod','')
|
53
|
-
if !update_pods.empty?
|
54
|
-
if update_pods.include?(' ')
|
55
|
-
@update_pods = update_pods.split(' ') unless update_pods.nil?
|
56
|
-
else update_pods.include?(',')
|
57
|
-
@update_pods = update_pods.split(',') unless update_pods.nil?
|
58
|
-
end
|
59
|
-
end
|
60
|
-
super
|
61
|
-
end
|
62
|
-
def validate!
|
63
|
-
super
|
64
|
-
banner! if @help
|
65
|
-
end
|
66
|
-
|
67
|
-
#help load podfile option
|
68
|
-
def stable!(source, options = {})
|
69
|
-
@ll_stable_source = source
|
70
|
-
if options.has_key?(:specs)
|
71
|
-
@businessSpec = options[:specs]
|
72
|
-
puts "当前业务使用源=>#{@businessSpec}"
|
73
|
-
end
|
74
|
-
@ll_stable_tag = options[:tag] if options.has_key?(:tag)
|
75
|
-
@ll_stable_branch = options[:branch] if options.has_key?(:branch)
|
76
|
-
@cache = BB::Cache.new()
|
77
|
-
configGitPath(@cache.cachePath)
|
78
|
-
end
|
79
|
-
|
80
|
-
######################################## Main ########################################
|
81
|
-
|
82
|
-
def run
|
83
|
-
# begin
|
84
|
-
source_manager = BB::SourceManager.new(@businessSpec)
|
85
|
-
if @init
|
86
|
-
puts "[PodAssistant] 开始配置生成当前项目yml文件".yellow
|
87
|
-
# 生成本地yml配置
|
88
|
-
source_manager.generate_localStable
|
89
|
-
puts "[PodAssistant] `pod stable --init` complete!".green
|
90
|
-
elsif @install
|
91
|
-
puts "[PodAssistant] 执行 $ pod install".yellow
|
92
|
-
system "pod install"
|
93
|
-
puts "[PodAssistant] `pod stable --install` complete!".green
|
94
|
-
elsif @update
|
95
|
-
puts "[PodAssistant] 执行 $ pod update".yellow
|
96
|
-
system "pod update"
|
97
|
-
puts "[PodAssistant] `pod stable --update` complete!".green
|
98
|
-
elsif @update_pods
|
99
|
-
# 更新单个组件
|
100
|
-
puts "更新pod组件#{@update_pods} count:#{@update_pods.count}".yellow
|
101
|
-
source_manager.update_podmodules(@update_pods)
|
102
|
-
podnames = @update_pods.join(" ")
|
103
|
-
puts "[PodAssistant] 执行 $ pod update #{podnames}".yellow
|
104
|
-
system "pod update #{podnames}"
|
105
|
-
source_manager.update_local_stable_from_podmodules(@update_pods)
|
106
|
-
podnames = @update_pods.join(",")
|
107
|
-
puts "[PodAssistant] `pod stable --update-pod=#{podnames}` complete!".green
|
108
|
-
elsif @sync
|
109
|
-
puts "开始合并远端lock数据".yellow
|
110
|
-
ll_load_stable
|
111
|
-
#2、clone origin lock spec to cache dir
|
112
|
-
ll_cloneStable
|
113
|
-
#3、fetch newest code
|
114
|
-
ll_fetch_stale_git
|
115
|
-
# 数据合并
|
116
|
-
source_manager.merge_stable_data
|
117
|
-
puts "[PodAssistant] `pod stable` complete! Please execute the [pod install/ pod update] command".green
|
118
|
-
else
|
119
|
-
puts "[PodAssistant] `pod stable` 帮助文档请查看👇".yellow
|
120
|
-
banner!
|
121
|
-
end
|
122
|
-
# rescue => exception
|
123
|
-
# puts "[pod stable] error(已捕获): #{exception}".red
|
124
|
-
# end
|
125
|
-
|
126
|
-
end
|
127
|
-
|
128
|
-
private
|
129
|
-
######################################## API ########################################
|
130
|
-
def ll_load_stable
|
131
|
-
unless File.exist?(File.join(Pathname.pwd, "Podfile"))
|
132
|
-
err_msg = "- Error: #{File.join(Pathname.pwd, "Podfile")} is not exit"
|
133
|
-
Pod::UI.puts "#{err_msg}".send(:red)
|
134
|
-
exit -9001
|
135
|
-
end
|
136
|
-
|
137
|
-
#获取podfile 内容
|
138
|
-
#1、删除所有注释行,避免干扰
|
139
|
-
#2、正则匹配,筛选出stable 方法
|
140
|
-
#3、执行stable 方法,获取配置
|
141
|
-
podfileContent = File.read(File.join(Pathname.pwd, "Podfile"))
|
142
|
-
podfileContent_vaild = podfileContent.lines.reject { |line| line.strip.start_with?("#") }.join
|
143
|
-
stableCommand = podfileContent_vaild.match(/^\s*stable!\s*'([^']+)'(?:,\s*(\w+):\s*'([^']+)')*/m)
|
144
|
-
unless stableCommand
|
145
|
-
err_msg = "- Error: not stable define in the podfile! you can define like【stable! 'https://git.babybus.co/babybus/ios/Specs/stable-specs.git', specs:'global_stable_specs'】in podfile"
|
146
|
-
Pod::UI.puts "#{err_msg}".send(:red)
|
147
|
-
exit -9002
|
148
|
-
end
|
149
|
-
eval(stableCommand.to_s)
|
150
|
-
end
|
151
|
-
def ll_cloneStable
|
152
|
-
cachePath = @cache.cachePath
|
153
|
-
unless Dir.exist?(File.join(cachePath))
|
154
|
-
clonePath = File.dirname(cachePath)
|
155
|
-
FileUtils.mkdir_p clonePath
|
156
|
-
git_clone(@stable_source,clonePath)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
def ll_fetch_stale_git
|
161
|
-
git_reset
|
162
|
-
git_fetch
|
163
|
-
git_checkout_and_pull(@stable_source, @stable_branch, @stable_tag)
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
File without changes
|
/data/lib/cocoapods-bb-PodAssistant/{command → babybus}/linkline/targetValidator-linkline.rb
RENAMED
File without changes
|
/data/lib/cocoapods-bb-PodAssistant/{command → babybus}/linkline/targetdefinition-linkline.rb
RENAMED
File without changes
|
File without changes
|
File without changes
|