lhj-tools 0.2.32 → 0.2.34
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/lhj/command/init.rb +4 -9
- data/lib/lhj/command/jenkins/jenkins_build.rb +10 -16
- data/lib/lhj/helper/cipher_helper.rb +56 -0
- data/lib/lhj/helper/yapi/yapi_helper.rb +176 -2
- data/lib/lhj/lhj.rb +1 -0
- data/lib/lhj/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3cc00706a73b9e787e9d9336da8f7c8e5e787ff6e6192dff2383e65792561ec0
|
|
4
|
+
data.tar.gz: 83c616ccc6b192910102979f6c091d9e48b36938588391b963a659362dd0604a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1062fd7c95362b9c0cac73359276d929fe49b30643522f8fb11f4ef8f311fcc505974d934f703bacf29a16d29213906d80a97d96bacad99a467d9ead2c98943
|
|
7
|
+
data.tar.gz: 158f1213427ce173a39537f0b8187c7ad3de2992d4b7bdcf643e46a1d0ab04e478ae0aae25c2b0603e49d328522eaa19ef45ef4303e4ccc0e9592a51d57a7276
|
data/lib/lhj/command/init.rb
CHANGED
|
@@ -13,7 +13,8 @@ module Lhj
|
|
|
13
13
|
self.description = '使用工具前先执行`lhj init --url=http://xxx`'
|
|
14
14
|
|
|
15
15
|
self.arguments = [
|
|
16
|
-
CLAide::Argument.new('url',
|
|
16
|
+
CLAide::Argument.new('url', false),
|
|
17
|
+
CLAide::Argument.new('key', false)
|
|
17
18
|
]
|
|
18
19
|
|
|
19
20
|
def self.options
|
|
@@ -22,16 +23,10 @@ module Lhj
|
|
|
22
23
|
]
|
|
23
24
|
end
|
|
24
25
|
|
|
25
|
-
def validate!
|
|
26
|
-
super
|
|
27
|
-
unless @url
|
|
28
|
-
path = File.join(target_folder, 'config_file.yml')
|
|
29
|
-
help! '配置url必须输入' unless File.exist?(path)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
26
|
def initialize(argv)
|
|
34
27
|
@url = argv.option('url')
|
|
28
|
+
@key = argv.option('key')
|
|
29
|
+
@url = Lhj::CipherHelper.strict_decode64_encode(@key) if @key
|
|
35
30
|
super
|
|
36
31
|
end
|
|
37
32
|
|
|
@@ -46,22 +46,16 @@ module Lhj
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def handle
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
#
|
|
60
|
-
api = Lhj::YapiHelper.new(project_id: 694, interface_id: 71426, model_name: 'Result', model_pre: 'ML', language: :java)
|
|
61
|
-
api_result = api.process
|
|
62
|
-
ss = api_result.reject { |k, v| v.nil? }
|
|
63
|
-
# //.map { |key, v| { "#{key}": "```sss #{v}```" } }
|
|
64
|
-
puts ss
|
|
49
|
+
file = File.join(Lhj::Config.instance.home_dir, 'all_device.txt')
|
|
50
|
+
File.open(file, 'r+') do |f|
|
|
51
|
+
f.each_line do |line|
|
|
52
|
+
ma = line.match(/(?<device>[^\s]*)(\s*)(?<name>.*)/)
|
|
53
|
+
device = ma[:device]
|
|
54
|
+
name = ma[:name].gsub(/(\S*)\s(\S*)\s(.*)/, '\\1-\\2-\\3')
|
|
55
|
+
name = name.gsub(/\s/, '')
|
|
56
|
+
add_device(device, name)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
65
59
|
|
|
66
60
|
# api = Lhj::YapiHelper.new(project_id: 694, interface_id: 70595, model_name: 'Order', model_pre: 'AA')
|
|
67
61
|
# api.process
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'openssl'
|
|
2
|
+
require 'base64'
|
|
3
|
+
|
|
4
|
+
module Lhj
|
|
5
|
+
class CipherHelper
|
|
6
|
+
CIPHER_KEY = '1234567890'.freeze
|
|
7
|
+
CIPHERIV = '456'.freeze
|
|
8
|
+
|
|
9
|
+
def self.key
|
|
10
|
+
key = [CIPHER_KEY].pack('H*')
|
|
11
|
+
key << ("\x00" * (32 - key.length))
|
|
12
|
+
key
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.iv
|
|
16
|
+
iv = [CIPHERIV].pack('H*')
|
|
17
|
+
iv << ("\x00" * (16 - iv.length))
|
|
18
|
+
iv
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.strict_encode64_encode(str)
|
|
22
|
+
encode_str = Base64.strict_encode64(str)
|
|
23
|
+
encode(encode_str)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.encode64_encode(str)
|
|
27
|
+
encode_str = Base64.encode64(str)
|
|
28
|
+
encode(encode_str)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.strict_decode64_encode(str)
|
|
32
|
+
decode_str = decode(str)
|
|
33
|
+
Base64.strict_decode64(decode_str)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.decode64_encode(str)
|
|
37
|
+
decode_str = decode(str)
|
|
38
|
+
Base64.decode64(decode_str)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.encode(data)
|
|
42
|
+
cipher = OpenSSL::Cipher.new('AES-256-CBC').encrypt
|
|
43
|
+
cipher.key = key
|
|
44
|
+
cipher.iv = iv
|
|
45
|
+
encrypted = cipher.update(data) + cipher.final
|
|
46
|
+
Base64.strict_encode64(encrypted)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.decode(str)
|
|
50
|
+
decipher = OpenSSL::Cipher.new('AES-256-CBC').decrypt
|
|
51
|
+
decipher.key = key
|
|
52
|
+
decipher.iv = iv
|
|
53
|
+
decipher.update(Base64.strict_decode64(str)) + decipher.final
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -118,6 +118,8 @@ module Lhj
|
|
|
118
118
|
@req_mock_array ||= []
|
|
119
119
|
@req_mock_array << str
|
|
120
120
|
when :java
|
|
121
|
+
when :swift
|
|
122
|
+
when :dart
|
|
121
123
|
end
|
|
122
124
|
end
|
|
123
125
|
|
|
@@ -176,6 +178,10 @@ module Lhj
|
|
|
176
178
|
print_models_impl(models)
|
|
177
179
|
when :java
|
|
178
180
|
print_models_for_java(models)
|
|
181
|
+
when :swift
|
|
182
|
+
print_models_for_swift(models)
|
|
183
|
+
when :dart
|
|
184
|
+
print_models_for_dart(models)
|
|
179
185
|
end
|
|
180
186
|
puts "\n<===============打印返回数据模型-End=====================>\n".green
|
|
181
187
|
models
|
|
@@ -196,6 +202,10 @@ module Lhj
|
|
|
196
202
|
print_models_impl(models)
|
|
197
203
|
when :java
|
|
198
204
|
print_models_for_java(models)
|
|
205
|
+
when :swift
|
|
206
|
+
print_models_for_swift(models)
|
|
207
|
+
when :dart
|
|
208
|
+
print_models_for_dart(models)
|
|
199
209
|
end
|
|
200
210
|
puts "\n<===============打印请求模型-End=====================>\n".green
|
|
201
211
|
models
|
|
@@ -252,7 +262,7 @@ module Lhj
|
|
|
252
262
|
o = v['items'] || v
|
|
253
263
|
o['name'] = gen_model_name(k, type)
|
|
254
264
|
if v['type'].eql?('array') && v['items']['type'].eql?('string')
|
|
255
|
-
c_model[:type_name] = '
|
|
265
|
+
c_model[:type_name] = 'String'
|
|
256
266
|
else
|
|
257
267
|
c_model[:type_name] = o['name']
|
|
258
268
|
handle_model(o, type, &block)
|
|
@@ -293,10 +303,109 @@ module Lhj
|
|
|
293
303
|
end
|
|
294
304
|
end
|
|
295
305
|
|
|
306
|
+
def print_models_for_swift(models)
|
|
307
|
+
models.each do |model|
|
|
308
|
+
model_name = model[:name] || ''
|
|
309
|
+
model_properties = model[:properties]
|
|
310
|
+
puts_h "class #{model_name}: NSObject {"
|
|
311
|
+
model_properties.each do |m|
|
|
312
|
+
print_model_for_swift(m)
|
|
313
|
+
end
|
|
314
|
+
puts_h "}\n\n\n"
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def print_models_for_dart(models)
|
|
319
|
+
models.each do |model|
|
|
320
|
+
model_name = model[:name] || ''
|
|
321
|
+
model_properties = model[:properties]
|
|
322
|
+
puts_h "class #{model_name} {"
|
|
323
|
+
model_properties.each do |m|
|
|
324
|
+
print_model_for_dart(m)
|
|
325
|
+
end
|
|
326
|
+
# init method
|
|
327
|
+
puts_h "\n"
|
|
328
|
+
i_content = model_properties.map { |p| "this.#{p[:key]}" }.join(', ')
|
|
329
|
+
puts_h " #{model_name}({#{i_content}});"
|
|
330
|
+
puts_h "\n"
|
|
331
|
+
# json to model
|
|
332
|
+
puts_h " #{model_name}.fromJson(Map<String, dynamic> json) {"
|
|
333
|
+
puts_h json_to_model_dart(model_properties)
|
|
334
|
+
puts_h ' }'
|
|
335
|
+
# model to json
|
|
336
|
+
puts_h "\n"
|
|
337
|
+
puts_h ' Map<String, dynamic> toJson() {'
|
|
338
|
+
puts_h ' final Map<String, dynamic> data = <String, dynamic>{};'
|
|
339
|
+
puts_h model_to_json_dart(model_properties)
|
|
340
|
+
puts_h ' return data;'
|
|
341
|
+
puts_h ' }'
|
|
342
|
+
puts_h "}\n\n\n"
|
|
343
|
+
end
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
def json_to_model_dart(properties)
|
|
347
|
+
p_s = properties.map do |p|
|
|
348
|
+
case p[:type]
|
|
349
|
+
when 'object'
|
|
350
|
+
" #{p[:key]} = json['#{p[:key]}'] != null ? #{p[:type_name]}.fromJson(json['#{p[:key]}']) : null;"
|
|
351
|
+
when 'array'
|
|
352
|
+
if p[:type_name].eql?('String')
|
|
353
|
+
" #{p[:key]} = json['#{p[:key]}'].cast<String>();"
|
|
354
|
+
else
|
|
355
|
+
json_to_model_array_dart(p)
|
|
356
|
+
end
|
|
357
|
+
else
|
|
358
|
+
" #{p[:key]} = json['#{p[:key]}'];"
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
p_s.join("\n")
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
def json_to_model_array_dart(p)
|
|
365
|
+
array = []
|
|
366
|
+
array << " if (json['#{p[:key]}'] != null) {"
|
|
367
|
+
array << " #{p[:key]} = <#{p[:type_name]}>[];"
|
|
368
|
+
array << " json['#{p[:key]}'].forEach((v) {"
|
|
369
|
+
array << " #{p[:key]}!.add(#{p[:type_name]}.fromJson(v));"
|
|
370
|
+
array << ' });'
|
|
371
|
+
array << ' }'
|
|
372
|
+
array.join("\n")
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
def model_to_json_dart(properties)
|
|
376
|
+
p_s = properties.map do |p|
|
|
377
|
+
case p[:type]
|
|
378
|
+
when 'object'
|
|
379
|
+
model_to_model_obj_dart(p)
|
|
380
|
+
when 'array'
|
|
381
|
+
model_to_model_array_dart(p)
|
|
382
|
+
else
|
|
383
|
+
" data['#{p[:key]}'] = #{p[:key]};"
|
|
384
|
+
end
|
|
385
|
+
end
|
|
386
|
+
p_s.join("\n")
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
def model_to_model_obj_dart(p)
|
|
390
|
+
array = []
|
|
391
|
+
array << " if (#{p[:key]} != null) {"
|
|
392
|
+
array << " data['#{p[:key]}'] = #{p[:key]}!.toJson();"
|
|
393
|
+
array << ' }'
|
|
394
|
+
array.join("\n")
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
def model_to_model_array_dart(p)
|
|
398
|
+
array = []
|
|
399
|
+
array << " if (#{p[:key]} != null) {"
|
|
400
|
+
array << " data['#{p[:key]}'] = #{p[:key]}!.map((v) => v.toJson()).toList();"
|
|
401
|
+
array << ' }'
|
|
402
|
+
array.join("\n")
|
|
403
|
+
end
|
|
404
|
+
|
|
296
405
|
def print_models_impl(models)
|
|
297
406
|
models.each do |model|
|
|
298
407
|
puts_m "@implementation #{model[:name]}"
|
|
299
|
-
str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('
|
|
408
|
+
str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('String') }.map { |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
|
|
300
409
|
if str&.length&.positive?
|
|
301
410
|
puts_m '+(NSDictionary *)modelContainerPropertyGenericClass {'
|
|
302
411
|
puts_m " return @{#{str}};"
|
|
@@ -376,6 +485,65 @@ module Lhj
|
|
|
376
485
|
end
|
|
377
486
|
end
|
|
378
487
|
|
|
488
|
+
def print_model_for_swift(m)
|
|
489
|
+
key = m[:key]
|
|
490
|
+
type_name = m[:type_name]
|
|
491
|
+
type = m[:type]
|
|
492
|
+
des = m[:description] || ''
|
|
493
|
+
des.gsub!(/\n/, ' ')
|
|
494
|
+
default = m[:default]
|
|
495
|
+
case type
|
|
496
|
+
when 'integer'
|
|
497
|
+
puts_h " @objc var #{key}: Int?//#{des} #{default}"
|
|
498
|
+
when 'string'
|
|
499
|
+
puts_h " @objc var #{key}: String?//#{des} #{default}"
|
|
500
|
+
when 'number'
|
|
501
|
+
puts_h " @objc var #{key}: Float?//#{des} #{default}"
|
|
502
|
+
when 'float'
|
|
503
|
+
puts_h " @objc var #{key}: Float?//#{des} #{default}"
|
|
504
|
+
when 'double'
|
|
505
|
+
puts_h " @objc var #{key}: Double?//#{des} #{default}"
|
|
506
|
+
when 'boolean'
|
|
507
|
+
puts_h " @objc var #{key}: Bool?//#{des} #{default}"
|
|
508
|
+
when 'object'
|
|
509
|
+
puts_h " @objc var #{key}: #{type_name}?//#{des} #{default}"
|
|
510
|
+
when 'array'
|
|
511
|
+
puts_h " @objc var #{key}: Array<#{type_name}>?//#{des} #{default}"
|
|
512
|
+
else
|
|
513
|
+
puts_h " @objc var #{key}: String?//#{des} #{default}"
|
|
514
|
+
end
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
def print_model_for_dart(m)
|
|
518
|
+
key = m[:key]
|
|
519
|
+
type_name = m[:type_name]
|
|
520
|
+
type = m[:type]
|
|
521
|
+
des = m[:description] || ''
|
|
522
|
+
des.gsub!(/\n/, ' ')
|
|
523
|
+
default = m[:default]
|
|
524
|
+
puts_h " //#{des} #{default}"
|
|
525
|
+
case type
|
|
526
|
+
when 'integer'
|
|
527
|
+
puts_h " int? #{key};"
|
|
528
|
+
when 'string'
|
|
529
|
+
puts_h " String? #{key};"
|
|
530
|
+
when 'number'
|
|
531
|
+
puts_h " int? #{key};"
|
|
532
|
+
when 'float'
|
|
533
|
+
puts_h " float? #{key};"
|
|
534
|
+
when 'double'
|
|
535
|
+
puts_h " double? #{key};"
|
|
536
|
+
when 'boolean'
|
|
537
|
+
puts_h " bool? #{key};"
|
|
538
|
+
when 'object'
|
|
539
|
+
puts_h " #{type_name}? #{key};"
|
|
540
|
+
when 'array'
|
|
541
|
+
puts_h " List<#{type_name}>? #{key};"
|
|
542
|
+
else
|
|
543
|
+
puts_h " String? #{key};"
|
|
544
|
+
end
|
|
545
|
+
end
|
|
546
|
+
|
|
379
547
|
# @param [Object] data
|
|
380
548
|
def print_req_query(data)
|
|
381
549
|
return unless data && data['req_query']
|
|
@@ -394,6 +562,10 @@ module Lhj
|
|
|
394
562
|
print_models_impl(models)
|
|
395
563
|
when :java
|
|
396
564
|
print_models_for_java(models)
|
|
565
|
+
when :swift
|
|
566
|
+
print_models_for_swift(models)
|
|
567
|
+
when :dart
|
|
568
|
+
print_models_for_dart(models)
|
|
397
569
|
end
|
|
398
570
|
models
|
|
399
571
|
end
|
|
@@ -437,6 +609,8 @@ module Lhj
|
|
|
437
609
|
yapi_temp_result = Lhj::ErbTemplateHelper.render(yapi_temp, yapi_vars, '-')
|
|
438
610
|
puts_s(yapi_temp_result)
|
|
439
611
|
when :java
|
|
612
|
+
when :swift
|
|
613
|
+
when :dart
|
|
440
614
|
end
|
|
441
615
|
|
|
442
616
|
end
|
data/lib/lhj/lhj.rb
CHANGED
data/lib/lhj/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lhj-tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.34
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- lihaijian
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-04-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: xcodeproj
|
|
@@ -386,6 +386,7 @@ files:
|
|
|
386
386
|
- lib/lhj/helper/apple/apple_jwt_config.rb
|
|
387
387
|
- lib/lhj/helper/bugly_helper.rb
|
|
388
388
|
- lib/lhj/helper/chat_gpt_config.rb
|
|
389
|
+
- lib/lhj/helper/cipher_helper.rb
|
|
389
390
|
- lib/lhj/helper/dingtalk_config.rb
|
|
390
391
|
- lib/lhj/helper/dingtalk_helper.rb
|
|
391
392
|
- lib/lhj/helper/erb_template_helper.rb
|