cocoapods-tdf-bin 0.0.15 → 0.0.19
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/lib/cocoapods-tdf-bin/command/bin/batch.rb +91 -0
- data/lib/cocoapods-tdf-bin/command/bin.rb +1 -0
- data/lib/cocoapods-tdf-bin/gem_version.rb +1 -1
- data/lib/cocoapods-tdf-bin/helpers/string_helper.rb +30 -0
- data/lib/cocoapods-tdf-bin/native/configuration.rb +1 -0
- data/lib/cocoapods-tdf-bin/native/podfile.rb +48 -0
- data/lib/cocoapods-tdf-bin/native/podfile_env.rb +2 -0
- data/lib/cocoapods-tdf-bin/native/podfile_generator.rb +1 -0
- data/lib/cocoapods-tdf-bin/native/resolver.rb +8 -6
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b58f1137fcf3c0bcfc65f809f0946fd507cbf343283526c0461b91fb7a3f87a9
|
4
|
+
data.tar.gz: 8cd669301226f7796ebe3962d757fed9c7d75c8714a035d343c7fc8f7ea06f41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdf308408a6030c385995956553f2cdf13de2b41a964c17e4b5d1ef811fd91809694048d260ebd0e39fbb3573f5818b1e19775953fb23fb0eb50d4737d2c52a0
|
7
|
+
data.tar.gz: 4f6201140a65d724e4409ac7f3067eab97b22f2d7bf7e60deba4fe4a47be302c075f6cca324a532ab6c7148d958c5ab68de40911431f0166a1390881a7152b3b
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'cocoapods-tdf-bin/native/podfile_env'
|
2
|
+
require 'cocoapods-tdf-bin/native/podfile'
|
3
|
+
require 'cocoapods-tdf-bin/helpers/string_helper'
|
4
|
+
|
5
|
+
module Pod
|
6
|
+
class Command
|
7
|
+
class Bin < Command
|
8
|
+
class Batch < Bin
|
9
|
+
|
10
|
+
self.summary = "批量操作本地依赖组件的 git 命令"
|
11
|
+
self.description = <<-DESC
|
12
|
+
用来批量操作通过 batch_pod_local 本地依赖的组件库,比如 pod bin batch pull, pod bin batch checkout master 等等;
|
13
|
+
操作的是是通过 batch_pod_local 依赖的本地组件
|
14
|
+
DESC
|
15
|
+
|
16
|
+
def self.options
|
17
|
+
[
|
18
|
+
['clone', '本地库全部 clone 到指定本地目录'],
|
19
|
+
['{ git 命令 }', '本地库全部执行 git 命令,比如 pod bin batch pull, pod bin batch checkout -b feature/***'],
|
20
|
+
]
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(argv)
|
24
|
+
@arguments = argv.arguments
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
podfile = File.join(Pathname.pwd, "Podfile")
|
30
|
+
podfile_instance = Pod::Podfile.from_file(podfile)
|
31
|
+
if podfile_instance.get_batch_local_pods == nil
|
32
|
+
help! "没有本地依赖的组件"
|
33
|
+
end
|
34
|
+
if @arguments.size == 1 && @arguments[0] == "clone"
|
35
|
+
clone_all(podfile_instance)
|
36
|
+
else
|
37
|
+
run_git(podfile_instance)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def clone_all(podfile_instance)
|
42
|
+
local_pods = podfile_instance.get_batch_local_pods
|
43
|
+
local_pods.each_key do |name|
|
44
|
+
path = local_pods[name][0][:path]
|
45
|
+
repo_url = find_repo_with_pod(name)
|
46
|
+
puts "============== #{name} 开始 clone 到 #{path}==============".blue
|
47
|
+
puts `git clone #{repo_url} #{path}`
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def run_git(podfile_instance)
|
52
|
+
podfile_instance.get_batch_local_pods.each_value do |value|
|
53
|
+
path = value[0][:path]
|
54
|
+
arg = @arguments.join(" ")
|
55
|
+
puts "============== #{path} 开始执行 git #{arg} 命令 ==============".blue
|
56
|
+
puts `git -C #{path} #{arg}`
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def find_repo_with_pod(pod_name)
|
61
|
+
sources = config.sources_manager.all
|
62
|
+
sources = sources.select do |s|
|
63
|
+
s.name == "2dfire-cocoapods-spec"
|
64
|
+
end
|
65
|
+
source = sources[0]
|
66
|
+
repo_path = source.repo.to_s + "/#{pod_name}"
|
67
|
+
versions = `ls #{repo_path}`.split("\n")
|
68
|
+
versions = versions.sort do |x ,y|
|
69
|
+
y<=>x
|
70
|
+
end
|
71
|
+
last_version = versions[0]
|
72
|
+
spec_file = `ls #{repo_path}/#{last_version}`.split("\n")[0]
|
73
|
+
spec = Pod::Spec.from_file("#{repo_path}/#{last_version}/#{spec_file}")
|
74
|
+
git_url = spec.attributes_hash["source"]["git"]
|
75
|
+
git_url
|
76
|
+
end
|
77
|
+
|
78
|
+
def validate!
|
79
|
+
if @arguments.size < 1
|
80
|
+
help! "命令参数不够"
|
81
|
+
end
|
82
|
+
git = `which git`
|
83
|
+
if git.empty?
|
84
|
+
help! "没有安装 git 命令"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -7,6 +7,7 @@ require 'cocoapods-tdf-bin/command/bin/code'
|
|
7
7
|
require 'cocoapods-tdf-bin/command/bin/update'
|
8
8
|
require 'cocoapods-tdf-bin/command/bin/install'
|
9
9
|
require 'cocoapods-tdf-bin/command/bin/imy'
|
10
|
+
require 'cocoapods-tdf-bin/command/bin/batch'
|
10
11
|
|
11
12
|
require 'cocoapods-tdf-bin/helpers'
|
12
13
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class String
|
2
|
+
# colorization
|
3
|
+
def colorize(color_code)
|
4
|
+
"\e[#{color_code}m#{self}\e[0m"
|
5
|
+
end
|
6
|
+
|
7
|
+
def red
|
8
|
+
colorize(31)
|
9
|
+
end
|
10
|
+
|
11
|
+
def green
|
12
|
+
colorize(32)
|
13
|
+
end
|
14
|
+
|
15
|
+
def yellow
|
16
|
+
colorize(33)
|
17
|
+
end
|
18
|
+
|
19
|
+
def blue
|
20
|
+
colorize(34)
|
21
|
+
end
|
22
|
+
|
23
|
+
def pink
|
24
|
+
colorize(35)
|
25
|
+
end
|
26
|
+
|
27
|
+
def light_blue
|
28
|
+
colorize(36)
|
29
|
+
end
|
30
|
+
end
|
@@ -12,6 +12,46 @@ module Pod
|
|
12
12
|
set_internal_hash_value(ALLOW_PRERELEASE, true)
|
13
13
|
end
|
14
14
|
|
15
|
+
def batch_pod_local(pods, path = "../../")
|
16
|
+
pod_hash = Hash.new
|
17
|
+
pods.each do |name|
|
18
|
+
pod_hash[name] = [ :path => "#{path}#{name}" ]
|
19
|
+
end
|
20
|
+
if get_batch_local_pods.nil?
|
21
|
+
set_internal_hash_value(BATCH_POD_LOCAL, pod_hash)
|
22
|
+
else
|
23
|
+
set_internal_hash_value(BATCH_POD_LOCAL, get_internal_hash_value(BATCH_POD_LOCAL).merge(pod_hash))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def batch_pod_remote(pods, branch , group = 'ios')
|
28
|
+
pod_hash = Hash.new
|
29
|
+
pods.each do |name|
|
30
|
+
pod_hash[name] = [ :git => "git@git.2dfire.net:#{group}/#{name}.git", :branch => "#{branch}" ]
|
31
|
+
end
|
32
|
+
if get_batch_remote_pods.nil?
|
33
|
+
set_internal_hash_value(BATCH_POD_REMOTE, pod_hash)
|
34
|
+
else
|
35
|
+
set_internal_hash_value(BATCH_POD_REMOTE, get_internal_hash_value(BATCH_POD_REMOTE).merge(pod_hash))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def pod(name = nil, *requirements)
|
40
|
+
unless name
|
41
|
+
raise StandardError, 'A dependency requires a name.'
|
42
|
+
end
|
43
|
+
|
44
|
+
local_pod_hash = get_batch_local_pods
|
45
|
+
remote_pod_hash = get_batch_remote_pods
|
46
|
+
if remote_pod_hash != nil
|
47
|
+
requirements = remote_pod_hash[name].nil? ? requirements : remote_pod_hash[name];
|
48
|
+
end
|
49
|
+
if local_pod_hash != nil
|
50
|
+
requirements = local_pod_hash[name].nil? ? requirements : local_pod_hash[name];
|
51
|
+
end
|
52
|
+
current_target_definition.store_pod(name, *requirements)
|
53
|
+
end
|
54
|
+
|
15
55
|
def use_binaries!(flag = true)
|
16
56
|
set_internal_hash_value(USE_BINARIES, flag)
|
17
57
|
end
|
@@ -61,6 +101,14 @@ module Pod
|
|
61
101
|
get_internal_hash_value(USE_BINARIES, false) || ENV[USE_BINARIES] == 'true'
|
62
102
|
end
|
63
103
|
|
104
|
+
def get_batch_local_pods
|
105
|
+
get_internal_hash_value(BATCH_POD_LOCAL)
|
106
|
+
end
|
107
|
+
|
108
|
+
def get_batch_remote_pods
|
109
|
+
get_internal_hash_value(BATCH_POD_REMOTE)
|
110
|
+
end
|
111
|
+
|
64
112
|
def use_source_pods
|
65
113
|
get_internal_hash_value(USE_SOURCE_PODS, []) + String(ENV[USE_SOURCE_PODS]).split('|').uniq
|
66
114
|
end
|
@@ -8,6 +8,8 @@ module Pod
|
|
8
8
|
ALLOW_PRERELEASE = 'allow_prerelease'
|
9
9
|
USE_PLUGINS = 'use_plugins'
|
10
10
|
CONFIGURATION_ENV = 'configuration_env'
|
11
|
+
BATCH_POD_LOCAL = 'batch_pod_local'
|
12
|
+
BATCH_POD_REMOTE = 'batch_pod_remote'
|
11
13
|
|
12
14
|
module ENVExecutor
|
13
15
|
def execute_with_bin_plugin(&block)
|
@@ -175,12 +175,14 @@ module Pod
|
|
175
175
|
end
|
176
176
|
# used_by_only = rspec.respond_to?(:used_by_tests_only) ? rspec.used_by_tests_only : rspec.used_by_non_library_targets_only
|
177
177
|
# 组装新的 rspec ,替换原 rspec
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
178
|
+
if rspec.source != false
|
179
|
+
rspec = if Pod.match_version?('~> 1.4.0')
|
180
|
+
ResolverSpecification.new(specification, used_by_only)
|
181
|
+
else
|
182
|
+
ResolverSpecification.new(specification, used_by_only, source)
|
183
|
+
end
|
184
|
+
UI.message "组装新的 rspec ,替换原 rspec #{rspec.root.name} #{spec_version} \r\n specification =#{specification} \r\n #{rspec} "
|
185
|
+
end
|
184
186
|
|
185
187
|
rescue Pod::StandardError => e
|
186
188
|
# 没有从新的 source 找到对应版本组件,直接返回原 rspec
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-tdf-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gaijiaofan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- lib/cocoapods-tdf-bin/command/bin.rb
|
96
96
|
- lib/cocoapods-tdf-bin/command/bin/archive.rb
|
97
97
|
- lib/cocoapods-tdf-bin/command/bin/auto.rb
|
98
|
+
- lib/cocoapods-tdf-bin/command/bin/batch.rb
|
98
99
|
- lib/cocoapods-tdf-bin/command/bin/code.rb
|
99
100
|
- lib/cocoapods-tdf-bin/command/bin/imy.rb
|
100
101
|
- lib/cocoapods-tdf-bin/command/bin/init.rb
|
@@ -123,6 +124,7 @@ files:
|
|
123
124
|
- lib/cocoapods-tdf-bin/helpers/spec_creator.rb
|
124
125
|
- lib/cocoapods-tdf-bin/helpers/spec_files_helper.rb
|
125
126
|
- lib/cocoapods-tdf-bin/helpers/spec_source_creator.rb
|
127
|
+
- lib/cocoapods-tdf-bin/helpers/string_helper.rb
|
126
128
|
- lib/cocoapods-tdf-bin/helpers/upload_helper.rb
|
127
129
|
- lib/cocoapods-tdf-bin/native.rb
|
128
130
|
- lib/cocoapods-tdf-bin/native/acknowledgements.rb
|