luna-binary-uploader 0.1.16 → 0.1.20
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/.gitignore +0 -1
- data/Gemfile.lock +174 -0
- data/bin/lbu +44 -10
- data/lib/luna/binary/analysis.rb +46 -84
- data/lib/luna/binary/build.rb +31 -24
- data/lib/luna/binary/common/common.rb +141 -16
- data/lib/luna/binary/delete.rb +4 -4
- data/lib/luna/binary/init.rb +25 -0
- data/lib/luna/binary/install.rb +38 -0
- data/lib/luna/binary/refresh.rb +39 -30
- data/lib/luna/binary/update.rb +21 -81
- data/lib/luna/binary/uploader/version.rb +1 -1
- data/lib/luna/binary/uploader.rb +52 -21
- data/lib/luna-binary-uploader.rb +9 -0
- metadata +6 -2
@@ -14,7 +14,12 @@ module Luna
|
|
14
14
|
attr_accessor :version, :state
|
15
15
|
attr_accessor :podFilePath
|
16
16
|
attr_accessor :lockfile
|
17
|
-
|
17
|
+
attr_reader :bin_dev
|
18
|
+
attr_reader :binary_repo_url
|
19
|
+
attr_reader :binary_upload_url
|
20
|
+
attr_reader :binary_download_url
|
21
|
+
attr_reader :download_file_type
|
22
|
+
|
18
23
|
def initialize()
|
19
24
|
end
|
20
25
|
|
@@ -22,7 +27,7 @@ module Luna
|
|
22
27
|
sources = Pod::Config.instance.sources_manager.all
|
23
28
|
repoPath = nil
|
24
29
|
sources.each { |item|
|
25
|
-
if item.url ==
|
30
|
+
if item.url == Common.instance.binary_repo_url
|
26
31
|
repoPath = item.repo
|
27
32
|
end
|
28
33
|
}
|
@@ -95,7 +100,7 @@ module Luna
|
|
95
100
|
end
|
96
101
|
|
97
102
|
def request_result_hash
|
98
|
-
command = "curl #{
|
103
|
+
command = "curl #{Common.instance.binary_upload_url}"
|
99
104
|
p command
|
100
105
|
result = %x(#{command})
|
101
106
|
request_result_hash = JSON.parse(result)
|
@@ -105,31 +110,151 @@ module Luna
|
|
105
110
|
|
106
111
|
def createNeedFrameworkMapper
|
107
112
|
spec_repo_binary = {}
|
108
|
-
|
109
|
-
|
113
|
+
puts "二进制repo地址 : #{Common.instance.binary_repo_url}".yellow
|
114
|
+
use_framework_list.each { |item|
|
110
115
|
name = item.split('/').first
|
111
116
|
if spec_repo_binary[name] == nil
|
112
117
|
spec_repo_binary[name] = lockfile.version(name).version
|
113
118
|
end
|
114
119
|
}
|
120
|
+
p "use_framework_list: #{spec_repo_binary}"
|
115
121
|
return spec_repo_binary
|
116
122
|
end
|
117
123
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
124
|
+
def use_framework_list
|
125
|
+
list = []
|
126
|
+
File.open(Dir.pwd+"/Podfile", 'r:utf-8') do |f|
|
127
|
+
f.each_line do |item|
|
128
|
+
if item[":dev_env_use_binary"]
|
129
|
+
matchs = item.match(/\'(?<=').*?(?=')\'/)
|
130
|
+
if matchs != nil
|
131
|
+
list << matchs[0].gsub("'", "")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
return list
|
137
|
+
end
|
138
|
+
|
139
|
+
def create_upload_lockitem(lockItem, moduleName, binary_path)
|
140
|
+
if lockItem.external_source == nil
|
141
|
+
uploader = uploadLintPodSpec(moduleName, lockItem.specific_version, binary_path)
|
142
|
+
if uploader != nil
|
143
|
+
return uploader
|
144
|
+
end
|
145
|
+
else
|
146
|
+
p lockItem.external_source
|
147
|
+
gitURL = lockItem.external_source['git'.parameterize.underscore.to_sym]
|
148
|
+
tag = lockItem.external_source['tag'.parameterize.underscore.to_sym]
|
149
|
+
path = lockItem.external_source['path'.parameterize.underscore.to_sym]
|
150
|
+
p "#{moduleName} git: #{gitURL} tag: #{tag} path: #{path}"
|
151
|
+
if path
|
152
|
+
pathArr = Dir.glob("#{Dir.pwd}/#{path}/**/#{moduleName}.podspec")
|
153
|
+
if pathArr
|
154
|
+
uploader = Uploader::SingleUploader.new(moduleName, "", "", binary_path)
|
155
|
+
uploader.local_path = pathArr.first
|
156
|
+
return uploader
|
157
|
+
end
|
158
|
+
|
159
|
+
elsif gitURL && tag && !moduleName["/"]
|
160
|
+
uploader = Uploader::SingleUploader.new(moduleName, gitURL, tag, binary_path)
|
161
|
+
return uploader
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def upload_lockitem(dependencies_mapper, moduleName, binary_path, is_refresh = false)
|
167
|
+
if dependencies_mapper[moduleName]
|
168
|
+
lockContent = lockfile.dependencies_to_lock_pod_named(moduleName)
|
169
|
+
if lockContent #dependencies 应该拿不到所有的spec的依赖,我理解只能拿到podfile里面标明的,词典碰到dependency 没有bonmot的情况
|
170
|
+
lockContent.each { |lockItem|
|
171
|
+
begin
|
172
|
+
loader = create_upload_lockitem(lockItem, moduleName, binary_path)
|
173
|
+
if is_refresh
|
174
|
+
loader.refresh_specification_work
|
175
|
+
else
|
176
|
+
loader.specificationWork
|
126
177
|
end
|
178
|
+
return loader
|
179
|
+
rescue => exception
|
180
|
+
raise exception
|
181
|
+
ensure
|
182
|
+
|
127
183
|
end
|
128
|
-
|
184
|
+
}
|
185
|
+
end
|
186
|
+
else
|
187
|
+
begin
|
188
|
+
uploader = uploadLintPodSpec(moduleName, lockfile.version(moduleName), binary_path)
|
189
|
+
if uploader != nil
|
190
|
+
if is_refresh
|
191
|
+
uploader.refresh_specification_work
|
192
|
+
else
|
193
|
+
uploader.specificationWork
|
194
|
+
end
|
195
|
+
return uploader
|
196
|
+
end
|
197
|
+
rescue => exception
|
198
|
+
raise exception
|
199
|
+
ensure
|
200
|
+
|
129
201
|
end
|
130
|
-
p "use_framework_list: #{list}"
|
131
|
-
return list
|
132
202
|
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def uploadLintPodSpec(moduleName, specificVersion, binaryPath)
|
206
|
+
set = findLintPodspec(moduleName)
|
207
|
+
if set
|
208
|
+
pathArr = set.specification_paths_for_version(specificVersion)
|
209
|
+
if pathArr.length > 0
|
210
|
+
uploader = Uploader::SingleUploader.new(moduleName, "", "", binaryPath)
|
211
|
+
uploader.specification=Pod::Specification.from_file(pathArr.first)
|
212
|
+
# uploader.specificationWork
|
213
|
+
end
|
214
|
+
end
|
215
|
+
return uploader
|
216
|
+
end
|
217
|
+
|
218
|
+
def dependenciesMapper
|
219
|
+
return lockfile.dependencies.map { |item| [item.name.split("/").first, item]}.to_h
|
220
|
+
end
|
221
|
+
|
222
|
+
def bin_dev
|
223
|
+
if @bin_dev == nil
|
224
|
+
@bin_dev = YAML.load_file("#{Pod::Config.instance.home_dir}/bin_dev.yml")
|
225
|
+
end
|
226
|
+
return @bin_dev
|
227
|
+
end
|
228
|
+
|
229
|
+
def binary_repo_url
|
230
|
+
if @binary_repo_url == nil
|
231
|
+
@binary_repo_url = bin_dev["binary_repo_url"]
|
232
|
+
end
|
233
|
+
return @binary_repo_url
|
234
|
+
end
|
235
|
+
|
236
|
+
def binary_upload_url
|
237
|
+
if @binary_upload_url == nil
|
238
|
+
cut_string = "/%s/%s/zip"
|
239
|
+
@binary_upload_url = binary_download_url[0,binary_download_url.length - cut_string.length]
|
240
|
+
end
|
241
|
+
return @binary_upload_url
|
242
|
+
end
|
243
|
+
|
244
|
+
def binary_download_url
|
245
|
+
if @binary_download_url == nil
|
246
|
+
@binary_download_url = bin_dev["binary_download_url"]
|
247
|
+
end
|
248
|
+
return @binary_download_url
|
249
|
+
end
|
250
|
+
|
251
|
+
def download_file_type
|
252
|
+
if @download_file_type == nil
|
253
|
+
@download_file_type = bin_dev["download_file_type"]
|
254
|
+
end
|
255
|
+
return @download_file_type
|
256
|
+
end
|
257
|
+
|
133
258
|
end
|
134
259
|
end
|
135
260
|
end
|
data/lib/luna/binary/delete.rb
CHANGED
@@ -33,15 +33,15 @@ module Luna
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def deleteRepo
|
36
|
-
command = "cd #{
|
36
|
+
command = "cd #{Common.instance.repoPath}; git stash;git checkout master;git pull origin master;"
|
37
37
|
system command
|
38
|
-
|
39
|
-
commandADD = "cd #{
|
38
|
+
Common.instance.deleteDirectory("#{Common.instance.repoPath}/#{name}/#{version}")
|
39
|
+
commandADD = "cd #{Common.instance.repoPath};git add .; git commit -m 'DEL::#{name}-#{version} by LBU'; git push -f origin master"
|
40
40
|
system commandADD
|
41
41
|
end
|
42
42
|
|
43
43
|
def deleteBinaryFramework
|
44
|
-
command = "curl -X 'DELETE' #{
|
44
|
+
command = "curl -X 'DELETE' #{Common.instance.binary_upload_url}/#{name}/#{version}"
|
45
45
|
p command
|
46
46
|
system command
|
47
47
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require "luna/binary/uploader/version"
|
2
|
+
require "cocoapods"
|
3
|
+
require 'cocoapods-imy-bin/native/sources_manager'
|
4
|
+
require 'cocoapods-imy-bin/config/config'
|
5
|
+
require 'cocoapods-imy-bin'
|
6
|
+
require 'json'
|
7
|
+
require 'luna/binary/common/common'
|
8
|
+
|
9
|
+
module Luna
|
10
|
+
module Binary
|
11
|
+
class Init
|
12
|
+
attr_reader :url
|
13
|
+
def initialize(url)
|
14
|
+
@url = url
|
15
|
+
run
|
16
|
+
end
|
17
|
+
|
18
|
+
def run
|
19
|
+
Common.instance.command("curl -o #{Pod::Config.instance.home_dir}/bin_dev.yml #{url}")
|
20
|
+
Common.instance.command("pod repo add z-ios-framework-spec-repo #{Common.instance.binary_repo_url}")
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "luna/binary/uploader/version"
|
2
|
+
require "cocoapods"
|
3
|
+
require 'cocoapods-imy-bin/native/sources_manager'
|
4
|
+
require 'cocoapods-imy-bin/config/config'
|
5
|
+
require 'cocoapods-imy-bin'
|
6
|
+
require 'json'
|
7
|
+
require 'luna/binary/common/common'
|
8
|
+
|
9
|
+
module Luna
|
10
|
+
module Binary
|
11
|
+
class Install
|
12
|
+
attr_reader :is_open
|
13
|
+
def initialize(is_open)
|
14
|
+
@is_open = is_open
|
15
|
+
run
|
16
|
+
end
|
17
|
+
|
18
|
+
def run
|
19
|
+
buffer = ""
|
20
|
+
podfile_path = Dir.pwd + "/Podfile"
|
21
|
+
IO.foreach(podfile_path) { |line|
|
22
|
+
if line.match(/@use_luna_frameworks =/) || line.match(/@use_luna_frameworks=/)
|
23
|
+
buffer += "@use_luna_frameworks = #{is_open}\n"
|
24
|
+
else
|
25
|
+
buffer += line
|
26
|
+
end
|
27
|
+
}
|
28
|
+
File.open(podfile_path, "w") { |source_file|
|
29
|
+
source_file.write buffer
|
30
|
+
}
|
31
|
+
|
32
|
+
Common.instance.command("rm -rf #{Dir.pwd}/Pods")
|
33
|
+
Common.instance.command("pod install")
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/luna/binary/refresh.rb
CHANGED
@@ -9,55 +9,64 @@ module Luna
|
|
9
9
|
attr_accessor :request_result_hash
|
10
10
|
|
11
11
|
def run
|
12
|
-
spec_repo_binary = createNeedFrameworkMapper
|
13
|
-
|
14
|
-
Luna::Binary::Common.instance.deleteDirectory("#{rootPath}")
|
15
|
-
system "mkdir -p #{rootPath};"
|
12
|
+
spec_repo_binary = Common.instance.createNeedFrameworkMapper
|
13
|
+
dependencies_mapper = Common.instance.dependenciesMapper
|
16
14
|
failList = []
|
15
|
+
successList = []
|
17
16
|
spec_repo_binary.each { |k,v|
|
18
17
|
if request_result_hash[k] != nil && request_result_hash[k].include?(v)
|
19
18
|
begin
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
system command
|
33
|
-
end
|
19
|
+
puts "#{k} #{v}".yellow
|
20
|
+
|
21
|
+
uploader = Common.instance.upload_lockitem(dependencies_mapper,k ,binary_path, true)
|
22
|
+
if uploader != nil
|
23
|
+
Delete.new(k,v).delete
|
24
|
+
puts "#{k} #{v} 重新制作上传".yellow
|
25
|
+
uploader.upload
|
26
|
+
successList << "#{k} #{v}"
|
27
|
+
else
|
28
|
+
failList << "#{k} #{v} 失败,请确保在非二进制状态下"
|
29
|
+
end
|
30
|
+
|
34
31
|
rescue => exception
|
35
|
-
|
36
|
-
|
37
|
-
else
|
32
|
+
failList << "#{k} #{v} exception:#{exception}"
|
33
|
+
ensure
|
38
34
|
|
39
|
-
end
|
35
|
+
end
|
40
36
|
else
|
41
|
-
failList << "name: #{k}"
|
37
|
+
failList << "name: #{k} #{v} 在服务不存在"
|
42
38
|
end
|
43
39
|
}
|
44
|
-
|
40
|
+
puts "-=-=-=-=-=-=-=-=重新上传的名单-=-=-=-=-=-=-=-=".yellow
|
41
|
+
successList.each { |item|
|
42
|
+
puts item.green
|
43
|
+
}
|
44
|
+
|
45
|
+
puts "-=-=-=-=-=-=-=-=失败的名单-=-=-=-=-=-=-=-=".yellow if failList.length > 0
|
46
|
+
failList.each { |item|
|
47
|
+
puts item.red
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def in_framework_service(dependencies_mapper, name, version)
|
52
|
+
dependency = dependencies_mapper[name]
|
53
|
+
if lockfile.dependencies_mappe
|
54
|
+
else
|
55
|
+
|
56
|
+
end
|
45
57
|
end
|
46
58
|
|
47
59
|
def lockfile
|
48
|
-
return
|
60
|
+
return Common.instance.lockfile
|
49
61
|
end
|
50
62
|
|
51
63
|
def request_result_hash
|
52
64
|
if @request_result_hash == nil
|
53
|
-
@request_result_hash =
|
65
|
+
@request_result_hash = Common.instance.request_result_hash
|
54
66
|
end
|
55
67
|
return @request_result_hash
|
56
68
|
end
|
57
|
-
|
58
|
-
def createNeedFrameworkMapper
|
59
|
-
return Luna::Binary::Common.instance.createNeedFrameworkMapper
|
60
|
-
end
|
69
|
+
|
61
70
|
end
|
62
71
|
end
|
63
72
|
end
|
data/lib/luna/binary/update.rb
CHANGED
@@ -9,109 +9,49 @@ module Luna
|
|
9
9
|
attr_accessor :request_result_hash
|
10
10
|
|
11
11
|
def run
|
12
|
-
spec_repo_binary = createNeedFrameworkMapper
|
13
|
-
rootPath = "#{Luna::Binary::Common.instance.tempLunaUploaderPath}/update"
|
14
|
-
Luna::Binary::Common.instance.deleteDirectory("#{rootPath}")
|
15
|
-
system "mkdir -p #{rootPath};"
|
12
|
+
spec_repo_binary = Common.instance.createNeedFrameworkMapper
|
16
13
|
failList = []
|
17
14
|
successList = []
|
18
|
-
dependenciesMapper =
|
15
|
+
dependenciesMapper = Common.instance.dependenciesMapper
|
19
16
|
spec_repo_binary.each { |k,v|
|
20
17
|
if request_result_hash[k] == nil || request_result_hash[k].include?(v) == false
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
if lockItem.external_source == nil
|
28
|
-
uploader = uploadLintPodSpec(moduleName, lockItem.specific_version, binary_path)
|
29
|
-
if uploader != nil
|
30
|
-
successList << uploader
|
31
|
-
end
|
32
|
-
else
|
33
|
-
p lockItem.external_source
|
34
|
-
gitURL = lockItem.external_source['git'.parameterize.underscore.to_sym]
|
35
|
-
tag = lockItem.external_source['tag'.parameterize.underscore.to_sym]
|
36
|
-
path = lockItem.external_source['path'.parameterize.underscore.to_sym]
|
37
|
-
p "#{moduleName} git: #{gitURL} tag: #{tag} path: #{path}"
|
38
|
-
if path
|
39
|
-
pathArr = Dir.glob("#{Dir.pwd}/#{path}/**/#{moduleName}.podspec")
|
40
|
-
if pathArr
|
41
|
-
uploader = Luna::Binary::Uploader::SingleUploader.new(moduleName, "", "", binary_path)
|
42
|
-
uploader.specification=Pod::Specification.from_file(pathArr.first)
|
43
|
-
uploader.specificationWork
|
44
|
-
successList<<uploader
|
45
|
-
end
|
46
|
-
|
47
|
-
elsif gitURL && tag && !moduleName["/"]
|
48
|
-
uploader = Luna::Binary::Uploader::SingleUploader.new(moduleName, gitURL, tag, binary_path)
|
49
|
-
uploader.specificationWork
|
50
|
-
successList << uploader
|
51
|
-
end
|
52
|
-
end
|
53
|
-
rescue => exception
|
54
|
-
# raise exception
|
55
|
-
ensure
|
56
|
-
|
57
|
-
end
|
58
|
-
}
|
59
|
-
end
|
60
|
-
else
|
61
|
-
begin
|
62
|
-
uploader = uploadLintPodSpec(moduleName, lockfile.version(moduleName), binary_path)
|
63
|
-
if uploader != nil
|
64
|
-
successList << uploader
|
65
|
-
end
|
66
|
-
rescue => exception
|
67
|
-
|
68
|
-
ensure
|
69
|
-
|
18
|
+
begin
|
19
|
+
uploader = Common.instance.upload_lockitem(dependenciesMapper, k, binary_path)
|
20
|
+
if uploader != nil
|
21
|
+
successList << uploader
|
22
|
+
else
|
23
|
+
failList << "#{k} #{v} 失败,请确保在非二进制状态下"
|
70
24
|
end
|
25
|
+
|
26
|
+
rescue => exception
|
27
|
+
failList << "#{k} exception: #{exception}"
|
28
|
+
ensure
|
29
|
+
|
71
30
|
end
|
72
31
|
else
|
73
32
|
failList << "已存在name: #{k}"
|
74
33
|
end
|
75
34
|
}
|
76
|
-
|
35
|
+
puts "-=-=-=-=-=-=-=-=framework制作中-=-=-=-=-=-=-=-=-=-=".yellow
|
77
36
|
successList.each { |item|
|
78
|
-
|
37
|
+
puts "#{item} 制作中".yellow
|
79
38
|
item.upload
|
80
39
|
}
|
81
|
-
p "exception:#{failList}"
|
82
|
-
end
|
83
40
|
|
84
|
-
|
85
|
-
|
86
|
-
|
41
|
+
puts "-=-=-=-=-=-=-=-=update 失败名单-=-=-=-=-=-=-=-=-=-=".yellow if failList.length > 0
|
42
|
+
failList.each {|item|
|
43
|
+
puts item.red
|
44
|
+
}
|
87
45
|
|
88
|
-
def findLintPodspec(moduleName)
|
89
|
-
return Luna::Binary::Common.instance.findLintPodspec(moduleName)
|
90
|
-
end
|
91
|
-
|
92
|
-
def uploadLintPodSpec(moduleName, specificVersion, binaryPath)
|
93
|
-
set = findLintPodspec(moduleName)
|
94
|
-
if set
|
95
|
-
pathArr = set.specification_paths_for_version(specificVersion)
|
96
|
-
if pathArr.length > 0
|
97
|
-
uploader = Luna::Binary::Uploader::SingleUploader.new(moduleName, "", "", binaryPath)
|
98
|
-
uploader.specification=Pod::Specification.from_file(pathArr.first)
|
99
|
-
uploader.specificationWork
|
100
|
-
end
|
101
|
-
end
|
102
|
-
return uploader
|
103
46
|
end
|
104
47
|
|
105
48
|
def request_result_hash
|
106
49
|
if @request_result_hash == nil
|
107
|
-
@request_result_hash =
|
50
|
+
@request_result_hash = Common.instance.request_result_hash
|
108
51
|
end
|
109
52
|
return @request_result_hash
|
110
53
|
end
|
111
|
-
|
112
|
-
def createNeedFrameworkMapper
|
113
|
-
return Luna::Binary::Common.instance.createNeedFrameworkMapper
|
114
|
-
end
|
54
|
+
|
115
55
|
end
|
116
56
|
end
|
117
57
|
end
|