luna-binary-uploader 0.1.29 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a64ef0ed106b66d7fa7f926afc2d41019ab289aa2a87b32f11d2cb256d85026d
4
- data.tar.gz: be92b70bc9b1376efb6d24d9ce79c97a3d11f3417cab09877449e1e5fc579a07
3
+ metadata.gz: 8dd0d0b6939b899cce6afd8f6facda8c39953c3087b36979c2946695a96aaa4e
4
+ data.tar.gz: 3802bd473598d0086a817bcbc717b432fb06df527a0bcc7ca5462faaca1136f9
5
5
  SHA512:
6
- metadata.gz: 500ae49323f2dee4df985e9ef024948f5e4836ed5d7e0c443b8422997531db9306d964d8981c1a2248b7de1127c38dc4b677e68922231f3be7c99ba01c1044e2
7
- data.tar.gz: 8df86a63ee0dbe5edaf0138c31037b91036d821a9aa17da5868e4415a9be6f5190c9427f6be2c6f960937e6306ba16855770d22046bce11f07a123be82370398
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
- Luna::Binary::Init.new(args[0])
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,8 +127,9 @@ class App
116
127
  command :refresh do |c|
117
128
  c.desc '是否需要build, 不需要的话 -n or --no'
118
129
  c.switch [:n,:no]
130
+ c.desc '是否快速执行, -q or --quick 开启后将不会重新执行pod install'
119
131
  c.switch [:q,:quick]
120
- c.action do |global_options,options,args|
132
+ c.action do |global_options, options, args|
121
133
  if options[:no]
122
134
  obj = Luna::Binary::Refresh.new()
123
135
  if args[0] != nil
@@ -127,16 +139,7 @@ class App
127
139
  end
128
140
  obj.run
129
141
  else
130
- help_now!('args is required') if args.empty?
131
- help_now!('workspace is required') if args[0] == nil
132
- help_now!('scheme is required') if args[1] == nil
133
- build = Luna::Binary::Build.new()
134
- build.workspace=args[0]
135
- build.scheme=args[1]
136
- if options[:quick]
137
- build.needPodInstall = false
138
- end
139
- if build.run
142
+ if build(global_options, options, args)
140
143
  obj = Luna::Binary::Refresh.new()
141
144
  obj.binary_path = Luna::Binary::Common.instance.binary_path_merged
142
145
  obj.run
@@ -146,21 +149,29 @@ class App
146
149
  end
147
150
  end
148
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
+
149
168
  desc 'build项目并合成带有arm64&x86的framework'
150
169
  arg_name '1.xcworkspace 名称 eg:MyWorkSpace.xcworkspace 2.scheme eg: MyProject'
151
170
  command :build do |c|
171
+ c.desc '是否快速执行, -q or --quick 开启后将不会重新执行pod install'
152
172
  c.switch [:q,:quick]
153
- c.action do |global_options,options,args|
154
- help_now!('args is required') if args.empty?
155
- help_now!('workspace is required') if args[0] == nil
156
- help_now!('scheme is required') if args[1] == nil
157
- obj = Luna::Binary::Build.new()
158
- obj.workspace=args[0]
159
- obj.scheme=args[1]
160
- if options[:quick]
161
- build.needPodInstall = false
162
- end
163
- obj.run
173
+ c.action do |global_options, options, args|
174
+ build(global_options, options, args)
164
175
  end
165
176
  end
166
177
 
@@ -200,6 +211,7 @@ class App
200
211
  command :publish do |c|
201
212
  c.desc '是否需要build, 不需要的话 -n or --no'
202
213
  c.switch [:n,:no]
214
+ c.desc '是否快速执行, -q or --quick 开启后将不会重新执行pod install'
203
215
  c.switch [:q,:quick]
204
216
  c.action do |global_options,options,args|
205
217
  if options[:no]
@@ -211,15 +223,7 @@ class App
211
223
  end
212
224
  update.run
213
225
  else
214
- help_now!('workspace is required') if args[0] == nil
215
- help_now!('scheme is required') if args[1] == nil
216
- build = Luna::Binary::Build.new()
217
- build.workspace=args[0]
218
- build.scheme=args[1]
219
- if options[:quick]
220
- build.needPodInstall = false
221
- end
222
- if build.run
226
+ if build(global_options, options, args)
223
227
  update = Luna::Binary::Update.new()
224
228
  update.binary_path = Luna::Binary::Common.instance.binary_path_merged
225
229
  update.run
@@ -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(c)
80
- p c
81
- return system c
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("#{Pod::Config.instance.home_dir}/bin_dev.yml")
224
+ @bin_dev = YAML.load_file("./bin_config.yml")
225
225
  end
226
226
  return @bin_dev
227
227
  end
@@ -16,7 +16,7 @@ module Luna
16
16
  end
17
17
 
18
18
  def run
19
- Common.instance.command("curl -o #{Pod::Config.instance.home_dir}/bin_dev.yml #{url}")
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
 
@@ -1,7 +1,7 @@
1
1
  module Luna
2
2
  module Binary
3
3
  module Uploader
4
- VERSION = "0.1.29"
4
+ VERSION = "0.1.31"
5
5
  end
6
6
  end
7
7
  end
@@ -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 isHasSpecInRepo == false && isHasFrameworkInService == false
77
- @spec = createFrameworkSpec
78
- write_spec_file(@spec)
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
@@ -6,5 +6,6 @@ require "luna/binary/build"
6
6
  require "luna/binary/update"
7
7
  require "luna/binary/install"
8
8
  require "luna/binary/init"
9
+ require "luna/binary/util/util"
9
10
  require "luna/binary/common/common"
10
11
  require "luna/binary/benchmark"
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.29
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-03-24 00:00:00.000000000 Z
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: