lhj-tools 0.1.65 → 0.1.66
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/yapi.rb +74 -50
- data/lib/lhj/helper/dingtalk_helper.rb +5 -0
- data/lib/lhj/helper/erb_template_helper.rb +38 -0
- data/lib/lhj/tools/version.rb +1 -1
- data/lib/lhj/tools.rb +1 -0
- 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: 6df1841d5e97dbe6377056223a5f2c0ccfed590f6747080384bdc3cbace9d074
|
|
4
|
+
data.tar.gz: bfc4897e5922f4375142b45d48b2f599e82a36915e0017023fd5a956aa2970aa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5da3a711e8d422449eb1d71edbb6587d9a0c90dd65af4bca924cc3979e1954f0f3743f9b2f883b3f630430f32117618424b0179c147b2fa3fdf212800fb1cbd4
|
|
7
|
+
data.tar.gz: 5dc4eaf4e99f1a195dfce0f9b9a8411db60dd1b5415264a01b61e8424c5da6ccf4bfeec34d410216d966bdbeeeeae1f21827e40d2081d85790d0772568a0553a
|
data/lib/lhj/command/yapi.rb
CHANGED
|
@@ -3,6 +3,8 @@ require 'uri'
|
|
|
3
3
|
require 'json'
|
|
4
4
|
require 'yaml'
|
|
5
5
|
require 'lhj/command/yapi/formatters/service'
|
|
6
|
+
require 'lhj/helper/dingtalk_config'
|
|
7
|
+
require 'lhj/helper/erb_template_helper'
|
|
6
8
|
|
|
7
9
|
module Lhj
|
|
8
10
|
class Command
|
|
@@ -22,10 +24,13 @@ module Lhj
|
|
|
22
24
|
def initialize(argv)
|
|
23
25
|
@id = argv.option('id')
|
|
24
26
|
@model_pre_name = argv.option('model-pre')
|
|
27
|
+
@language = argv.option('lan', 'oc')
|
|
25
28
|
@save = argv.flag?('save', false)
|
|
29
|
+
@sync = argv.flag?('sync', false)
|
|
30
|
+
@notify = argv.flag?('notify', false)
|
|
26
31
|
@debug = argv.flag?('debug', false)
|
|
27
|
-
@
|
|
28
|
-
@
|
|
32
|
+
@sync = true if @notify
|
|
33
|
+
@save = true if @sync
|
|
29
34
|
@http_headers = []
|
|
30
35
|
@config_id = ''
|
|
31
36
|
@config_model_pre = 'ML'
|
|
@@ -33,26 +38,10 @@ module Lhj
|
|
|
33
38
|
@type_trans = {}
|
|
34
39
|
@config_model_names = []
|
|
35
40
|
@model_names = []
|
|
36
|
-
|
|
37
|
-
@result_model_name = ''
|
|
38
|
-
@param_model_name = ''
|
|
39
|
-
@model_template = ''
|
|
40
|
-
@desc = ''
|
|
41
|
-
@path = ''
|
|
42
|
-
@path_name = ''
|
|
43
|
-
@path_key = ''
|
|
44
|
-
@method = 'GET'
|
|
45
|
-
@title = ''
|
|
46
|
-
@username = ''
|
|
47
|
-
@req_body_is_json_schema = false
|
|
48
|
-
# =====>>>
|
|
41
|
+
@http_url = ''
|
|
49
42
|
super
|
|
50
43
|
end
|
|
51
44
|
|
|
52
|
-
def begin_title
|
|
53
|
-
'读取配置文件~/.lhj/yapi.yml'
|
|
54
|
-
end
|
|
55
|
-
|
|
56
45
|
def handle
|
|
57
46
|
process(yml_file) if File.exist?(yml_file)
|
|
58
47
|
end
|
|
@@ -67,22 +56,19 @@ module Lhj
|
|
|
67
56
|
return unless res_body && !res_body.empty?
|
|
68
57
|
|
|
69
58
|
# 1.print request result
|
|
70
|
-
print_res_body_model(res_body)
|
|
59
|
+
result_model_name = print_res_body_model(res_body)
|
|
71
60
|
# 2.print request json body
|
|
72
|
-
print_req_body_model(res_body)
|
|
61
|
+
param_model_name = print_req_body_model(res_body)
|
|
73
62
|
# 3.print request param
|
|
74
63
|
print_req_query(res_body['data'])
|
|
75
64
|
# 4.print request method
|
|
76
|
-
print_http_method(res_body['data'])
|
|
65
|
+
service_code = print_http_method(res_body['data'], result_model_name, param_model_name)
|
|
77
66
|
# 5.save to file
|
|
78
|
-
save_to_file if @save
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
require 'uri'
|
|
84
|
-
body = { 'msgtype' => 'text', 'text' => { 'content' => 'error:上传蒲公英超时失败!' } }.to_json
|
|
85
|
-
Net::HTTP.post(URI('https://oapi.dingtalk.com/robot/send?access_token=6a3519057170cdb1b7274edfe43934c84a0062ffe2c9bcced434699296a7e26e'), body, 'Content-Type' => 'application/json')
|
|
67
|
+
file_map = save_to_file(service_code) if @save
|
|
68
|
+
# 6.push to git
|
|
69
|
+
push_to_git if @sync
|
|
70
|
+
# 7.notify robot
|
|
71
|
+
notify_robot(file_map) if @notify
|
|
86
72
|
end
|
|
87
73
|
|
|
88
74
|
def puts_h(str)
|
|
@@ -103,17 +89,43 @@ module Lhj
|
|
|
103
89
|
@m_file_array << str
|
|
104
90
|
end
|
|
105
91
|
|
|
106
|
-
def
|
|
92
|
+
def sub_folder_name
|
|
93
|
+
return @sub_folder_name if @sub_folder_name
|
|
94
|
+
|
|
95
|
+
time = Time.now
|
|
96
|
+
@sub_folder_name ||= time.strftime('%Y%m%d%H%M%S')
|
|
97
|
+
@sub_folder_name
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def save_to_file(service_code)
|
|
107
101
|
@model_names = []
|
|
102
|
+
model_name = @config_model_names.frist
|
|
108
103
|
file_name = gen_model_name('')
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
h_file = File.join('.',
|
|
113
|
-
m_file = File.join('.',
|
|
104
|
+
unless File.exist?(File.expand_path(sub_folder_name, '.'))
|
|
105
|
+
FileUtils.mkdir_p(File.expand_path(sub_folder_name, '.'))
|
|
106
|
+
end
|
|
107
|
+
h_file = File.join('.', sub_folder_name, "#{file_name}.h")
|
|
108
|
+
m_file = File.join('.', sub_folder_name, "#{file_name}.m")
|
|
109
|
+
service_file = File.join('.', sub_folder_name, "#{model_pre}#{model_name}Service.m")
|
|
114
110
|
File.write(h_file, @h_file_array.join("\n")) if @h_file_array.count.positive?
|
|
115
111
|
File.write(m_file, @m_file_array.join("\n")) if @m_file_array.count.positive?
|
|
112
|
+
File.write(service_file, service_code) if service_code
|
|
116
113
|
puts "\n\n生成文件成功!所在路径:\n#{File.expand_path(h_file)} \n#{File.expand_path(m_file)}".green
|
|
114
|
+
{ h_file: h_file, m_file: m_file, s_file: service_file }
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def push_to_git
|
|
118
|
+
Actions.sh('git checkout master', log: false)
|
|
119
|
+
Actions.sh('git add .', log: false)
|
|
120
|
+
Actions.sh("git commit -m 'generate yapi code'", log: false)
|
|
121
|
+
Actions.sh('git push', log: false)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def notify_robot(template_vars)
|
|
125
|
+
robot_url = 'https://oapi.dingtalk.com/robot/send?access_token=fe879fd3e7a3b5e59d5719b2384845b7884901919be5a78fe443cbf777869807'
|
|
126
|
+
template = Lhj::ErbTemplateHelper.load('oc_code_notify')
|
|
127
|
+
output = Lhj::ErbTemplateHelper.render(template, template_vars, '-')
|
|
128
|
+
Lhj::Dingtalk.post_message_robot(robot_url, '生成代码', output)
|
|
117
129
|
end
|
|
118
130
|
|
|
119
131
|
def url_str
|
|
@@ -178,8 +190,8 @@ module Lhj
|
|
|
178
190
|
when 'java'
|
|
179
191
|
print_models_for_java(models)
|
|
180
192
|
end
|
|
181
|
-
@result_model_name = models.last[:name]
|
|
182
193
|
puts "\n<===============打印返回数据模型-End=====================>\n".green
|
|
194
|
+
models.last[:name]
|
|
183
195
|
end
|
|
184
196
|
|
|
185
197
|
def print_req_body_model(res_json)
|
|
@@ -198,8 +210,8 @@ module Lhj
|
|
|
198
210
|
when 'java'
|
|
199
211
|
print_models_for_java(models)
|
|
200
212
|
end
|
|
201
|
-
@param_model_name = models.last[:name]
|
|
202
213
|
puts "\n<===============打印请求模型-End=====================>\n".green
|
|
214
|
+
models.last[:name]
|
|
203
215
|
end
|
|
204
216
|
|
|
205
217
|
def fetch_res_boy(res_json)
|
|
@@ -379,27 +391,39 @@ module Lhj
|
|
|
379
391
|
puts "\n\n"
|
|
380
392
|
when 'java'
|
|
381
393
|
end
|
|
382
|
-
@param_model_name = 'MLParamModel' if @param_model_name.empty?
|
|
383
394
|
end
|
|
384
395
|
|
|
385
|
-
def print_http_method(data)
|
|
396
|
+
def print_http_method(data, result_model_name, param_model_name)
|
|
386
397
|
return unless data
|
|
387
398
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
@method = 'JSON' if data['req_body_is_json_schema']
|
|
394
|
-
@path_name = @path.split('/').map { |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/) { $&.upcase } }.join('') if @path
|
|
395
|
-
@path_key = "k#{@path_name}URL"
|
|
399
|
+
path = data['path']
|
|
400
|
+
path_name = path.split('/').map { |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/) { $&.upcase } }.join('') if path
|
|
401
|
+
path_key = "k#{path_name}URL"
|
|
402
|
+
mth = data['method']
|
|
403
|
+
mth = 'JSON' if data['req_body_is_json_schema']
|
|
396
404
|
case @language
|
|
397
405
|
when 'oc'
|
|
398
406
|
puts "\n<===============方法调用=====================>\n".green
|
|
399
|
-
|
|
400
|
-
|
|
407
|
+
model_temp = Lhj::ErbTemplateHelper.load('oc_code_service_inner')
|
|
408
|
+
model_temp_result = Lhj::ErbTemplateHelper.render(model_temp, { result_model_name: result_model_name }, '-')
|
|
409
|
+
|
|
410
|
+
yapi_temp = Lhj::ErbTemplateHelper.load('oc_code_service')
|
|
411
|
+
yapi_vars = { title: data['title'],
|
|
412
|
+
desc: data['desc'],
|
|
413
|
+
username: data['username'],
|
|
414
|
+
path: path,
|
|
415
|
+
path_key: path_key,
|
|
416
|
+
path_name: path_name,
|
|
417
|
+
result_model_name: result_model_name,
|
|
418
|
+
param_model_name: param_model_name || 'MLParamModel',
|
|
419
|
+
mth: mth,
|
|
420
|
+
model_template: model_temp_result }
|
|
421
|
+
yapi_temp_result = Lhj::ErbTemplateHelper.render(yapi_temp, yapi_vars, '-')
|
|
422
|
+
puts yapi_temp_result.green
|
|
423
|
+
return yapi_temp_result
|
|
401
424
|
when 'java'
|
|
402
425
|
end
|
|
426
|
+
|
|
403
427
|
end
|
|
404
428
|
end
|
|
405
429
|
end
|
|
@@ -24,6 +24,11 @@ module Lhj
|
|
|
24
24
|
Net::HTTP.post(URI(robot_url), http_body, 'Content-Type' => 'application/json')
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
def self.post_message_robot(robot_url, title, message)
|
|
28
|
+
http_body = { 'msgtype' => 'markdown', 'markdown' => { 'title' => title, 'text' => message } }.to_json
|
|
29
|
+
Net::HTTP.post(URI(robot_url), http_body, 'Content-Type' => 'application/json')
|
|
30
|
+
end
|
|
31
|
+
|
|
27
32
|
def self.fetch_branch
|
|
28
33
|
name = Lhj::Actions.git_branch || ''
|
|
29
34
|
name.split('/').last
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'lhj/config'
|
|
2
|
+
|
|
3
|
+
module Lhj
|
|
4
|
+
class ErbTemplateHelper
|
|
5
|
+
require "erb"
|
|
6
|
+
def self.load(template_name)
|
|
7
|
+
path = "#{Lhj::Config.instance.home_dir}/#{template_name}.erb"
|
|
8
|
+
load_from_path(path)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.load_from_path(template_filepath)
|
|
12
|
+
unless File.exist?(template_filepath)
|
|
13
|
+
UI.user_error!("Could not find template at path '#{template_filepath}'")
|
|
14
|
+
end
|
|
15
|
+
File.read(template_filepath)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.render(template, template_vars_hash, trim_mode = nil)
|
|
19
|
+
Lhj::ErbalT.new(template_vars_hash, trim_mode).render(template)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
class ErbalT < OpenStruct
|
|
23
|
+
def initialize(hash, trim_mode = nil)
|
|
24
|
+
super(hash)
|
|
25
|
+
@trim_mode = trim_mode
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def render(template)
|
|
29
|
+
# From Ruby 2.6, ERB.new takes keyword arguments and positional ones are deprecated
|
|
30
|
+
# https://bugs.ruby-lang.org/issues/14256
|
|
31
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.6.0")
|
|
32
|
+
ERB.new(template, trim_mode: @trim_mode).result(binding)
|
|
33
|
+
else
|
|
34
|
+
ERB.new(template, nil, @trim_mode).result(binding)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
data/lib/lhj/tools/version.rb
CHANGED
data/lib/lhj/tools.rb
CHANGED
|
@@ -14,6 +14,7 @@ module Lhj
|
|
|
14
14
|
require 'lhj/config'
|
|
15
15
|
require 'lhj/helper/pod_repo_config'
|
|
16
16
|
require 'lhj/helper/git_branch_feature_config'
|
|
17
|
+
require 'lhj/helper/erb_template_helper'
|
|
17
18
|
require 'lhj/helper/pgyer_helper'
|
|
18
19
|
require 'lhj/helper/pgyer_shortcut_helper'
|
|
19
20
|
require 'lhj/helper/dingtalk_helper'
|
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.1.
|
|
4
|
+
version: 0.1.66
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- lihaijian
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-12-
|
|
11
|
+
date: 2022-12-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: xcodeproj
|
|
@@ -373,6 +373,7 @@ files:
|
|
|
373
373
|
- lib/lhj/helper/app_version_info.rb
|
|
374
374
|
- lib/lhj/helper/dingtalk_config.rb
|
|
375
375
|
- lib/lhj/helper/dingtalk_helper.rb
|
|
376
|
+
- lib/lhj/helper/erb_template_helper.rb
|
|
376
377
|
- lib/lhj/helper/git_branch_feature_config.rb
|
|
377
378
|
- lib/lhj/helper/git_helper.rb
|
|
378
379
|
- lib/lhj/helper/local_config.rb
|