luna-binary-uploader 0.1.28 → 0.1.31
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/bin/lbu +40 -28
- data/lib/luna/binary/build.rb +10 -0
- data/lib/luna/binary/common/common.rb +4 -4
- data/lib/luna/binary/init.rb +1 -1
- data/lib/luna/binary/uploader/version.rb +1 -1
- data/lib/luna/binary/uploader.rb +21 -6
- data/lib/luna/binary/util/file_processer.rb +111 -0
- data/lib/luna/binary/util/util.rb +40 -0
- data/lib/luna-binary-uploader.rb +1 -0
- 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: 8dd0d0b6939b899cce6afd8f6facda8c39953c3087b36979c2946695a96aaa4e
|
|
4
|
+
data.tar.gz: 3802bd473598d0086a817bcbc717b432fb06df527a0bcc7ca5462faaca1136f9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8924d7c279fca47b5877d469a31e05f2340f203c3da2809538bb0ff3a59286f2e0324a5874fe6b35c8d77898db0f95bb8b3df79a9e1fb12cc3d7bb28935296d6
|
|
7
|
+
data.tar.gz: 219f74424351db948c80bc4c06de92857ba31e436f1634c891d7f9190ff105f25258518644a8875338268dac676650734e45630f18f3b7c633a518a45ee43274
|
data/bin/lbu
CHANGED
|
@@ -25,8 +25,12 @@ class App
|
|
|
25
25
|
arg_name 'url地址'
|
|
26
26
|
command :init do |c|
|
|
27
27
|
c.action do |global_options,options,args|
|
|
28
|
-
help_now!('url is required') if args.empty?
|
|
29
|
-
|
|
28
|
+
# help_now!('url is required') if args.empty?
|
|
29
|
+
templateFileUrl = 'http://ydlunacommon-cdn.nosdn.127.net/38cb10ff0440170ca11d93d02e4ed562.yml'
|
|
30
|
+
if args.count > 0
|
|
31
|
+
templateFileUrl = args[0]
|
|
32
|
+
end
|
|
33
|
+
Luna::Binary::Init.new(templateFileUrl)
|
|
30
34
|
end
|
|
31
35
|
end
|
|
32
36
|
|
|
@@ -49,13 +53,15 @@ class App
|
|
|
49
53
|
desc '单个上传二进制文件'
|
|
50
54
|
arg_name 'a.模块名 git地址 git节点 xcode编译的缓存地址 \n b.模块名 版本号 xcode编译的缓存地址 \n c.模块名 本地podspec地址 xcode编译的缓存地址'
|
|
51
55
|
command :single do |c|
|
|
56
|
+
c.desc '强制上传 -f or --force'
|
|
57
|
+
c.switch [:f,:force]
|
|
52
58
|
c.action do |global_options,options,args|
|
|
53
59
|
if args[3] #模式1
|
|
54
60
|
Luna::Binary::Uploader::SingleUploader.new(args[0],args[1],args[2], args[3]).upload
|
|
55
61
|
else
|
|
56
62
|
moduleName = args[0]
|
|
57
63
|
args1 = args[1]
|
|
58
|
-
binaryPath= args[2]
|
|
64
|
+
binaryPath= args[2] != nil ? args[2] : Luna::Binary::Common.instance.binary_path_merged
|
|
59
65
|
version = args1
|
|
60
66
|
if File.exist?(args1)
|
|
61
67
|
spec = Pod::Specification.from_file(Pathname.new(args1))
|
|
@@ -70,6 +76,11 @@ class App
|
|
|
70
76
|
spec = Pod::Specification.from_file(pathArr.first)
|
|
71
77
|
uploader = Luna::Binary::Uploader::SingleUploader.new(moduleName, "", "", binaryPath)
|
|
72
78
|
uploader.specification=spec
|
|
79
|
+
if options[:force]
|
|
80
|
+
puts '先删除现有的: ' + moduleName + " " + version
|
|
81
|
+
uploader.refresh_specification_work
|
|
82
|
+
Luna::Binary::Delete.new(moduleName, version).delete
|
|
83
|
+
end
|
|
73
84
|
uploader.upload
|
|
74
85
|
else
|
|
75
86
|
raise "没有找到#{moduleName}"
|
|
@@ -116,7 +127,9 @@ class App
|
|
|
116
127
|
command :refresh do |c|
|
|
117
128
|
c.desc '是否需要build, 不需要的话 -n or --no'
|
|
118
129
|
c.switch [:n,:no]
|
|
119
|
-
c.
|
|
130
|
+
c.desc '是否快速执行, -q or --quick 开启后将不会重新执行pod install'
|
|
131
|
+
c.switch [:q,:quick]
|
|
132
|
+
c.action do |global_options, options, args|
|
|
120
133
|
if options[:no]
|
|
121
134
|
obj = Luna::Binary::Refresh.new()
|
|
122
135
|
if args[0] != nil
|
|
@@ -126,13 +139,7 @@ class App
|
|
|
126
139
|
end
|
|
127
140
|
obj.run
|
|
128
141
|
else
|
|
129
|
-
|
|
130
|
-
help_now!('workspace is required') if args[0] == nil
|
|
131
|
-
help_now!('scheme is required') if args[1] == nil
|
|
132
|
-
build = Luna::Binary::Build.new()
|
|
133
|
-
build.workspace=args[0]
|
|
134
|
-
build.scheme=args[1]
|
|
135
|
-
if build.run
|
|
142
|
+
if build(global_options, options, args)
|
|
136
143
|
obj = Luna::Binary::Refresh.new()
|
|
137
144
|
obj.binary_path = Luna::Binary::Common.instance.binary_path_merged
|
|
138
145
|
obj.run
|
|
@@ -142,17 +149,29 @@ class App
|
|
|
142
149
|
end
|
|
143
150
|
end
|
|
144
151
|
|
|
152
|
+
def self.build(global_options, options, args)
|
|
153
|
+
workspace = args[0] != nil ? args[0] : Luna::Binary::Common.instance.bin_dev['workspace']
|
|
154
|
+
scheme = args[1] != nil ? args[1] : Luna::Binary::Common.instance.bin_dev['scheme']
|
|
155
|
+
help_now!('workspace is required and no config in bin_config.yml') if workspace == nil
|
|
156
|
+
help_now!('scheme is required and no config in bin_config.yml') if scheme == nil
|
|
157
|
+
build = Luna::Binary::Build.new()
|
|
158
|
+
build.workspace = workspace
|
|
159
|
+
build.scheme = scheme
|
|
160
|
+
if options[:quick]
|
|
161
|
+
build.needPodInstall = false
|
|
162
|
+
else
|
|
163
|
+
build.needPodInstall = true
|
|
164
|
+
end
|
|
165
|
+
build.run
|
|
166
|
+
end
|
|
167
|
+
|
|
145
168
|
desc 'build项目并合成带有arm64&x86的framework'
|
|
146
169
|
arg_name '1.xcworkspace 名称 eg:MyWorkSpace.xcworkspace 2.scheme eg: MyProject'
|
|
147
170
|
command :build do |c|
|
|
148
|
-
c.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
obj = Luna::Binary::Build.new()
|
|
153
|
-
obj.workspace=args[0]
|
|
154
|
-
obj.scheme=args[1]
|
|
155
|
-
obj.run
|
|
171
|
+
c.desc '是否快速执行, -q or --quick 开启后将不会重新执行pod install'
|
|
172
|
+
c.switch [:q,:quick]
|
|
173
|
+
c.action do |global_options, options, args|
|
|
174
|
+
build(global_options, options, args)
|
|
156
175
|
end
|
|
157
176
|
end
|
|
158
177
|
|
|
@@ -192,6 +211,7 @@ class App
|
|
|
192
211
|
command :publish do |c|
|
|
193
212
|
c.desc '是否需要build, 不需要的话 -n or --no'
|
|
194
213
|
c.switch [:n,:no]
|
|
214
|
+
c.desc '是否快速执行, -q or --quick 开启后将不会重新执行pod install'
|
|
195
215
|
c.switch [:q,:quick]
|
|
196
216
|
c.action do |global_options,options,args|
|
|
197
217
|
if options[:no]
|
|
@@ -203,15 +223,7 @@ class App
|
|
|
203
223
|
end
|
|
204
224
|
update.run
|
|
205
225
|
else
|
|
206
|
-
|
|
207
|
-
help_now!('scheme is required') if args[1] == nil
|
|
208
|
-
build = Luna::Binary::Build.new()
|
|
209
|
-
build.workspace=args[0]
|
|
210
|
-
build.scheme=args[1]
|
|
211
|
-
if options[:quick]
|
|
212
|
-
build.needPodInstall = false
|
|
213
|
-
end
|
|
214
|
-
if build.run
|
|
226
|
+
if build(global_options, options, args)
|
|
215
227
|
update = Luna::Binary::Update.new()
|
|
216
228
|
update.binary_path = Luna::Binary::Common.instance.binary_path_merged
|
|
217
229
|
update.run
|
data/lib/luna/binary/build.rb
CHANGED
|
@@ -5,6 +5,7 @@ require 'cocoapods-imy-bin/config/config'
|
|
|
5
5
|
require 'cocoapods-imy-bin'
|
|
6
6
|
require 'json'
|
|
7
7
|
require 'luna/binary/common/common'
|
|
8
|
+
require 'luna/binary/util/file_processer'
|
|
8
9
|
|
|
9
10
|
module Luna
|
|
10
11
|
module Binary
|
|
@@ -89,6 +90,15 @@ module Luna
|
|
|
89
90
|
def mergeFrameWork(moduleName, path1, path2)
|
|
90
91
|
command("mkdir -p #{binary_path_merged}; cp -r #{File.dirname(path1)} #{binary_path_merged}; cp -r #{File.dirname(path2)} #{binary_path_merged}; mv #{binary_path_merged}/#{File.basename(File.dirname(path1))} #{binary_path_merged}/#{moduleName};")
|
|
91
92
|
framework_name = moduleName.gsub("-", "_")
|
|
93
|
+
|
|
94
|
+
# 修复Xcode14编译出来的framework里的header写死了x86判断的问题
|
|
95
|
+
FileProcesserManager.new("#{binary_path_merged}/#{moduleName}/#{framework_name}.framework/Headers/*",
|
|
96
|
+
[
|
|
97
|
+
FileProcesser.new(-> (fileContent) {
|
|
98
|
+
return fileContent.sub( "#elif defined(__x86_64__) && __x86_64__", "#elif (defined(__x86_64__) && __x86_64__) || (defined(__arm64__) && __arm64__)" )
|
|
99
|
+
})
|
|
100
|
+
]).process()
|
|
101
|
+
|
|
92
102
|
return command("lipo -create #{path2}/#{framework_name} #{path1}/#{framework_name} -output #{binary_path_merged}/#{moduleName}/#{framework_name}.framework/#{framework_name}")
|
|
93
103
|
end
|
|
94
104
|
|
|
@@ -76,9 +76,9 @@ module Luna
|
|
|
76
76
|
@podFilePath = Pathname.new(result.strip! + "/Podfile.lock")
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
def command(
|
|
80
|
-
|
|
81
|
-
return system
|
|
79
|
+
def command(commandStr)
|
|
80
|
+
puts commandStr.yellow
|
|
81
|
+
return system commandStr
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
def findLintPodspec(moduleName)
|
|
@@ -221,7 +221,7 @@ module Luna
|
|
|
221
221
|
|
|
222
222
|
def bin_dev
|
|
223
223
|
if @bin_dev == nil
|
|
224
|
-
@bin_dev = YAML.load_file("
|
|
224
|
+
@bin_dev = YAML.load_file("./bin_config.yml")
|
|
225
225
|
end
|
|
226
226
|
return @bin_dev
|
|
227
227
|
end
|
data/lib/luna/binary/init.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Luna
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def run
|
|
19
|
-
Common.instance.command("curl -o
|
|
19
|
+
Common.instance.command("curl -o ./bin_config.yml #{url}")
|
|
20
20
|
Common.instance.command("pod repo add z-ios-framework-spec-repo #{Common.instance.binary_repo_url}")
|
|
21
21
|
end
|
|
22
22
|
|
data/lib/luna/binary/uploader.rb
CHANGED
|
@@ -37,7 +37,6 @@ module Luna
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def upload
|
|
40
|
-
specificationWork
|
|
41
40
|
push
|
|
42
41
|
end
|
|
43
42
|
|
|
@@ -72,16 +71,32 @@ module Luna
|
|
|
72
71
|
|
|
73
72
|
ensure
|
|
74
73
|
download_git
|
|
75
|
-
|
|
76
|
-
if
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
else
|
|
74
|
+
|
|
75
|
+
if local_path != nil
|
|
76
|
+
localSpecUpVersion
|
|
77
|
+
elsif isHasSpecInRepo == true || isHasFrameworkInService == true
|
|
80
78
|
raise "已存在repo or 二进制服务 #{specification.name} #{specification.version}"
|
|
81
79
|
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@spec = createFrameworkSpec
|
|
83
|
+
write_spec_file(@spec)
|
|
82
84
|
end
|
|
83
85
|
end
|
|
84
86
|
|
|
87
|
+
def localSpecUpVersion
|
|
88
|
+
nowTime = Time.now
|
|
89
|
+
timeStamp = "#{nowTime.year}-#{nowTime.month}-#{nowTime.day}"
|
|
90
|
+
specification.version = Util.writeVersionUp(local_path, specification.version)
|
|
91
|
+
branchName = "lbu-#{timeStamp}"
|
|
92
|
+
command("git checkout -b #{branchName}")
|
|
93
|
+
# 保证最新节点防止push不上去
|
|
94
|
+
command("git pull origin #{branchName}")
|
|
95
|
+
command("git add #{local_path};")
|
|
96
|
+
command("git commit -m 'Mod: 修改版本号为:#{specification.version.to_s} by LBU';")
|
|
97
|
+
command("git push -f origin #{branchName}")
|
|
98
|
+
end
|
|
99
|
+
|
|
85
100
|
def refresh_specification_work
|
|
86
101
|
begin
|
|
87
102
|
clearTempFile
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
|
|
3
|
+
$LOAD_PATH << '.'
|
|
4
|
+
|
|
5
|
+
class YDFileUtils
|
|
6
|
+
def self.writeFile (filePath, buffer)
|
|
7
|
+
File.open(filePath, "w") { |source_file|
|
|
8
|
+
source_file.write buffer
|
|
9
|
+
}
|
|
10
|
+
return
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class FileProcesserInterface
|
|
15
|
+
def process(filePath)
|
|
16
|
+
puts filePath
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class FileProcesser < FileProcesserInterface
|
|
21
|
+
def initialize(processFunc)
|
|
22
|
+
@processFunc = processFunc
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def process(filePath)
|
|
26
|
+
fileContent = File.read(filePath)
|
|
27
|
+
result = @processFunc.call(fileContent)
|
|
28
|
+
File.write(filePath, result)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class RegexFileProcesser < FileProcesserInterface
|
|
33
|
+
|
|
34
|
+
def initialize(regex, genLineFunc)
|
|
35
|
+
@regex = regex
|
|
36
|
+
@genLineFunc = genLineFunc
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def process(filePath)
|
|
40
|
+
buffer = ""
|
|
41
|
+
IO.foreach(filePath) { |line|
|
|
42
|
+
current_number_regex = line =~ @regex
|
|
43
|
+
if current_number_regex
|
|
44
|
+
regexCatchedValue = $~
|
|
45
|
+
buffer += line.gsub(@regex, @genLineFunc.call(regexCatchedValue))
|
|
46
|
+
else
|
|
47
|
+
buffer += line
|
|
48
|
+
end
|
|
49
|
+
}
|
|
50
|
+
YDYDFileUtils.writeFile(filePath, buffer)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class FileProcesserManager
|
|
57
|
+
|
|
58
|
+
def initialize(files, fileProcesserList)
|
|
59
|
+
@files = files
|
|
60
|
+
@fileProcesserList = fileProcesserList
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private def getFiles()
|
|
64
|
+
mappingFiles = Dir::glob(@files)
|
|
65
|
+
return mappingFiles
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
private def processFile(filePath)
|
|
69
|
+
@fileProcesserList.each { |processer|
|
|
70
|
+
processer.process(filePath)
|
|
71
|
+
}
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
public def process()
|
|
75
|
+
ocFiles = getFiles()
|
|
76
|
+
puts "共发现 #{ocFiles.count} 个文件可能需要替换"
|
|
77
|
+
|
|
78
|
+
@@count = 0
|
|
79
|
+
ocFiles.each do |filePath|
|
|
80
|
+
processFile(filePath)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
##### 最简调用示例
|
|
86
|
+
# FileProcesserManager.new("../**/*.{m,mm}", [FileProcesserInterface.new()]).process()
|
|
87
|
+
|
|
88
|
+
#### 通过 RegexFileProcesser 处理文件
|
|
89
|
+
# FileProcesserManager.new("../YoudaoDict/Vendor/SwipeView/SwipeView.m",
|
|
90
|
+
# [
|
|
91
|
+
# RegexFileProcesser.new(/SwipeView/, -> (regexCatchedValue) {
|
|
92
|
+
# return "#{regexCatchedValue.to_s}aaa"
|
|
93
|
+
# })
|
|
94
|
+
# ]).process()
|
|
95
|
+
|
|
96
|
+
#### 通过gsub处理文件
|
|
97
|
+
# FileProcesserManager.new("../YoudaoDict/Vendor/SwipeView/SwipeView.m",
|
|
98
|
+
# [
|
|
99
|
+
# FileProcesser.new(-> (fileContent) {
|
|
100
|
+
# fileContent.gsub(/(SwipeView)/, "aaa\\1")
|
|
101
|
+
# })
|
|
102
|
+
# ]).process()
|
|
103
|
+
|
|
104
|
+
# FileProcesserManager.new("../YoudaoDict/Vendor/SwipeView/SwipeView.m",
|
|
105
|
+
# [
|
|
106
|
+
# FileProcesser.new(-> (fileContent) {
|
|
107
|
+
# fileContent.gsub(/(SwipeView)/) do |ste|
|
|
108
|
+
# "#{$1} use gsub block"
|
|
109
|
+
# end
|
|
110
|
+
# })
|
|
111
|
+
# ]).process()
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
|
|
10
|
+
module Luna
|
|
11
|
+
class Util
|
|
12
|
+
def initialize
|
|
13
|
+
super.initialize
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.versionUp(version)
|
|
17
|
+
newVersion = "#{version.major}.#{version.minor}.#{version.patch + 1}"
|
|
18
|
+
return Pod::Version.new(newVersion)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.writeVersionUp(path, version)
|
|
22
|
+
newVersion = versionUp(version)
|
|
23
|
+
buffer = ""
|
|
24
|
+
File.open(path, 'r:utf-8') do |f|
|
|
25
|
+
f.each_line do |item|
|
|
26
|
+
if item[".version"]
|
|
27
|
+
buffer += item.gsub(/(\.version *= *')(.*')/, "\\1" + newVersion.to_s + "'")
|
|
28
|
+
else
|
|
29
|
+
buffer += item
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
File.open(path, 'w+') do |f|
|
|
35
|
+
f.write(buffer)
|
|
36
|
+
end
|
|
37
|
+
return newVersion
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/luna-binary-uploader.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: luna-binary-uploader
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.31
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 车德超
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-09-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -153,6 +153,8 @@ files:
|
|
|
153
153
|
- lib/luna/binary/update.rb
|
|
154
154
|
- lib/luna/binary/uploader.rb
|
|
155
155
|
- lib/luna/binary/uploader/version.rb
|
|
156
|
+
- lib/luna/binary/util/file_processer.rb
|
|
157
|
+
- lib/luna/binary/util/util.rb
|
|
156
158
|
- luna-binary-uploader.gemspec
|
|
157
159
|
homepage: https://github.com/YoudaoMobile/luna-binary-uploader
|
|
158
160
|
licenses:
|