lhj-tools 0.1.64 → 0.1.66
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lhj/command/yapi.rb +74 -47
- 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,14 +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
|
-
|
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")
|
111
110
|
File.write(h_file, @h_file_array.join("\n")) if @h_file_array.count.positive?
|
112
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
|
113
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)
|
114
129
|
end
|
115
130
|
|
116
131
|
def url_str
|
@@ -175,8 +190,8 @@ module Lhj
|
|
175
190
|
when 'java'
|
176
191
|
print_models_for_java(models)
|
177
192
|
end
|
178
|
-
@result_model_name = models.last[:name]
|
179
193
|
puts "\n<===============打印返回数据模型-End=====================>\n".green
|
194
|
+
models.last[:name]
|
180
195
|
end
|
181
196
|
|
182
197
|
def print_req_body_model(res_json)
|
@@ -195,8 +210,8 @@ module Lhj
|
|
195
210
|
when 'java'
|
196
211
|
print_models_for_java(models)
|
197
212
|
end
|
198
|
-
@param_model_name = models.last[:name]
|
199
213
|
puts "\n<===============打印请求模型-End=====================>\n".green
|
214
|
+
models.last[:name]
|
200
215
|
end
|
201
216
|
|
202
217
|
def fetch_res_boy(res_json)
|
@@ -376,27 +391,39 @@ module Lhj
|
|
376
391
|
puts "\n\n"
|
377
392
|
when 'java'
|
378
393
|
end
|
379
|
-
@param_model_name = 'MLParamModel' if @param_model_name.empty?
|
380
394
|
end
|
381
395
|
|
382
|
-
def print_http_method(data)
|
396
|
+
def print_http_method(data, result_model_name, param_model_name)
|
383
397
|
return unless data
|
384
398
|
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
@method = 'JSON' if data['req_body_is_json_schema']
|
391
|
-
@path_name = @path.split('/').map { |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/) { $&.upcase } }.join('') if @path
|
392
|
-
@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']
|
393
404
|
case @language
|
394
405
|
when 'oc'
|
395
406
|
puts "\n<===============方法调用=====================>\n".green
|
396
|
-
|
397
|
-
|
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
|
398
424
|
when 'java'
|
399
425
|
end
|
426
|
+
|
400
427
|
end
|
401
428
|
end
|
402
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
|