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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a240ecea0c02bc2351914fa2106519b155f9a10dd6e0cd949633ce61b38008bc
4
- data.tar.gz: 10726a49406152ef2fdf5033566d0b5a0641f60955c61dc64d46400019816d7c
3
+ metadata.gz: 6df1841d5e97dbe6377056223a5f2c0ccfed590f6747080384bdc3cbace9d074
4
+ data.tar.gz: bfc4897e5922f4375142b45d48b2f599e82a36915e0017023fd5a956aa2970aa
5
5
  SHA512:
6
- metadata.gz: b0c20d242daf9fc0bae5c8fc4823f25d92098637dd72740cc7380b9512902a73cb7a5aa0181b6b5d7df2fa4d30cd236966a63d06f841716347fe8c2298c75953
7
- data.tar.gz: 4041061d05b0003afa3579812b16abccfdcd150347d7f6099ad9281d1dd71a77688c00c4aecd5dd8e2210c2f700ae25d0f0d864a74279cdcfee729dfdf4ab333
6
+ metadata.gz: 5da3a711e8d422449eb1d71edbb6587d9a0c90dd65af4bca924cc3979e1954f0f3743f9b2f883b3f630430f32117618424b0179c147b2fa3fdf212800fb1cbd4
7
+ data.tar.gz: 5dc4eaf4e99f1a195dfce0f9b9a8411db60dd1b5415264a01b61e8424c5da6ccf4bfeec34d410216d966bdbeeeeae1f21827e40d2081d85790d0772568a0553a
@@ -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
- @language = argv.option('lan', 'oc')
28
- @http_url = ''
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
- # <<<===== model for template
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
- end
80
-
81
- def test_ding
82
- require 'net/http'
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 save_to_file
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
- time = Time.now
110
- folder_name = time.strftime('%Y%m%d%H%M%S')
111
- FileUtils.mkdir_p(File.expand_path(folder_name, '.')) unless File.exist?(File.expand_path(folder_name, '.'))
112
- h_file = File.join('.', folder_name, "#{file_name}.h")
113
- m_file = File.join('.', folder_name, "#{file_name}.m")
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
- @path = data['path']
389
- @method = data['method']
390
- @title = data['title']
391
- @username = data['username']
392
- @desc = data['desc']
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
- @model_template = Lhj::ErbFormatter::Service.new(self).render('model')
400
- puts Lhj::ErbFormatter::Service.new(self).render('yapi').blue
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lhj
4
4
  module Tools
5
- VERSION = "0.1.65"
5
+ VERSION = "0.1.66"
6
6
  end
7
7
  end
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.65
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-08 00:00:00.000000000 Z
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