lhj-tools 0.1.12 → 0.1.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d53d84a79a0bde89e0f6f4299cd74bec6f34b50bb4ae9534047a1981e8ecf481
4
- data.tar.gz: 5c11e01ef959b491a5bd03e8f737de5a68cd0b6dffba586015291717c71a1b39
3
+ metadata.gz: d246c747ed42f7359b79c279b864539a2d318b744f68994a015960d9abff5d20
4
+ data.tar.gz: 58f16be0521a715eb2c8d16928f3f7818009272b1150e58fbad3ee56ca62388b
5
5
  SHA512:
6
- metadata.gz: 60619bab6cafe45d4717c97d70fba34921dd79f2e21327bcfcdc155a76cc86a2341cef50c7506ed65980c610a2d97eb1b8d79c82641dd01faf077f581ac2d2e5
7
- data.tar.gz: 95b1acbb95b7342da7bb4c946b7506c7572d619374f39906b0c6804e691f38e2388ed567c37b06b4c451e4aeb382d48fd13c5a90ae1fa6bcde9253104b092e94
6
+ metadata.gz: 8e71dbbe12bd70a4a42323d30ef9c40cee0c7cab5834273ca1359241df01fd3875a63a06419a398e91625184e93cb62893567fc5ecdbbb9f021acb95536eef62
7
+ data.tar.gz: 5f6514ecff7d90d4e4e0d5132abde517fdcd8bb36dc800fcd9eda7ea74e5da5ac0be6f1b04cd97321fc62974a3bc27079b2eaaaad0d55e9ba041294953b2d2f2
@@ -39,6 +39,7 @@ module Lhj
39
39
  FileUtils.mkdir_p(target_folder) unless File.exist?(target_folder)
40
40
  if @url
41
41
  file_path = file_name_from_url(@url)
42
+ File.delete(file_path) if File.exist?(file_path)
42
43
  save_url_to_file(@url, file_path)
43
44
  else
44
45
  file_path = File.join(target_folder, 'config_file.yml')
@@ -0,0 +1,20 @@
1
+ require 'lhj/helper/pgyer_helper'
2
+ require 'lhj/helper/dingtalk_config'
3
+ require 'lhj/helper/pgyer_config'
4
+ require 'lhj/helper/tb_config'
5
+
6
+
7
+ module Lhj
8
+ class Command
9
+ class Pgyer < Command
10
+
11
+ def handle
12
+ client = Lhj::Pgyer.new
13
+ file = File.expand_path('/Users/lihaijian/**/*.ipa')
14
+ client.upload_file(file, 'test....')
15
+ output = client.render_template
16
+ puts output.blue
17
+ end
18
+ end
19
+ end
20
+ end
@@ -8,14 +8,23 @@ module Lhj
8
8
  class Service < Base
9
9
  # @param [String] name
10
10
  def render(name = 'yapi')
11
- template(name).result(Context.new(@runner).fetch_binding)
11
+ temp_str = template_str(name)
12
+ render_template(temp_str)
12
13
  end
13
14
 
14
- def template(name)
15
+ def render_template(temp_str)
16
+ template(temp_str).result(Context.new(@runner).fetch_binding)
17
+ end
18
+
19
+ def template_str(name)
20
+ File.read(File.join(File.dirname(__FILE__), 'template', "#{name}.erb"))
21
+ end
22
+
23
+ def template(template_str)
15
24
  if RUBY_VERSION < '2.6'
16
- ERB.new(File.read(File.join(File.dirname(__FILE__), 'template', "#{name}.erb")), nil, '-')
25
+ ERB.new(template_str, nil, '-')
17
26
  else
18
- ERB.new(File.read(File.join(File.dirname(__FILE__), 'template', "#{name}.erb")), trim_mode: '-')
27
+ ERB.new(template_str, trim_mode: '-')
19
28
  end
20
29
  end
21
30
  end
@@ -0,0 +1,6 @@
1
+ #### 应用名称:<%= @result['data']['appName'] %>
2
+ #### 版本信息:<%= @result['data']['appVersion'] %>(Build <%= @result['data']['appBuildVersion'] %>)
3
+ #### 更新时间:<%= @result['data']['appCreated'] %>
4
+ #### 更新内容:<%= @result['data']['appUpdateDescription'] %>
5
+ > ![screenshot](<%= @result['data']['appQRCodeURL'] %>)
6
+ > [下载](https://www.pgyer.com/<%= @result['data']['appShortcutUrl'] %>)
@@ -24,6 +24,7 @@ module Lhj
24
24
  @model_pre_name = argv.option('model-pre')
25
25
  @save = argv.flag?('save', false)
26
26
  @debug = argv.flag?('debug', false)
27
+ @language = argv.option('lan', 'oc')
27
28
  @http_url = ''
28
29
  @http_headers = []
29
30
  @config_id = ''
@@ -167,8 +168,13 @@ module Lhj
167
168
  handle_model(res_body) do |model|
168
169
  models << model
169
170
  end
170
- print_models(models)
171
- print_models_impl(models)
171
+ case @language
172
+ when 'oc'
173
+ print_models(models)
174
+ print_models_impl(models)
175
+ when 'java'
176
+ print_models_for_java(models)
177
+ end
172
178
  @result_model_name = models.last[:name]
173
179
  puts "\n<===============打印返回数据模型-End=====================>\n".green
174
180
  end
@@ -182,8 +188,13 @@ module Lhj
182
188
  handle_model(req_body) do |model|
183
189
  models << model
184
190
  end
185
- print_models(models)
186
- print_models_impl(models)
191
+ case @language
192
+ when 'oc'
193
+ print_models(models)
194
+ print_models_impl(models)
195
+ when 'java'
196
+ print_models_for_java(models)
197
+ end
187
198
  @param_model_name = models.last[:name]
188
199
  puts "\n<===============打印请求模型-End=====================>\n".green
189
200
  end
@@ -264,11 +275,23 @@ module Lhj
264
275
  end
265
276
  end
266
277
 
278
+ def print_models_for_java(models)
279
+ models.each do |model|
280
+ model_name = model[:name] || ''
281
+ model_properties = model[:properties]
282
+ puts_h "public class #{model_name} extends BaseModel implements BusinessEvent.ProductDataCollect {"
283
+ model_properties.each do |m|
284
+ print_model_for_java(m)
285
+ end
286
+ puts_h "}\n\n\n"
287
+ end
288
+ end
289
+
267
290
  def print_models_impl(models)
268
291
  models.each do |model|
269
292
  puts_m "@implementation #{model[:name]}"
270
293
  str = model[:properties].filter { |p| p[:type].eql?('array') && !p[:type_name].eql?('NSString') }.map { |p| "@\"#{p[:key]}\": #{p[:type_name]}.class" }.join(', ')
271
- if str && str.length.positive?
294
+ if str&.length&.positive?
272
295
  puts_m '+(NSDictionary *)modelContainerPropertyGenericClass {'
273
296
  puts_m " return @{#{str}};"
274
297
  puts_m '}'
@@ -314,19 +337,53 @@ module Lhj
314
337
  end
315
338
  end
316
339
 
340
+ def print_model_for_java(m)
341
+ key = m[:key]
342
+ type_name = m[:type_name]
343
+ type = m[:type]
344
+ des = m[:description] || ''
345
+ des.gsub!(/\n/, ' ')
346
+ default = m[:default]
347
+ case type
348
+ when 'integer'
349
+ puts_h "int #{key};//#{des} #{default}"
350
+ when 'cent'
351
+ puts_h "int #{key};//#{des} #{default}"
352
+ when 'string'
353
+ puts_h "String #{key};//#{des} #{default}"
354
+ when 'number'
355
+ puts_h "double #{key};//#{des} #{default}"
356
+ when 'float'
357
+ puts_h "double #{key};//#{des} #{default}"
358
+ when 'double'
359
+ puts_h "double #{key};//#{des} #{default}"
360
+ when 'boolean'
361
+ puts_h "boolean #{key};//#{des} #{default}"
362
+ when 'object'
363
+ puts_h "#{type_name} #{key};//#{des} #{default}"
364
+ when 'array'
365
+ puts_h "#{type_name}[] #{key};//#{des} #{default}"
366
+ else
367
+ puts_h "String #{key};//#{des} #{default}"
368
+ end
369
+ end
370
+
317
371
  # @param [Object] data
318
372
  def print_req_query(data)
319
373
  return unless data && data['req_query']
320
374
 
321
- puts_h '@interface MLParamModel : NSObject'
322
- data['req_query'].each do |h|
323
- des = h['desc']
324
- puts_h "///#{des} #{h['example']}"
325
- puts_h "@property (nonatomic, copy) NSString *#{h['name']};"
375
+ case @language
376
+ when 'oc'
377
+ puts_h '@interface MLParamModel : NSObject'
378
+ data['req_query'].each do |h|
379
+ des = h['desc']
380
+ puts_h "///#{des} #{h['example']}"
381
+ puts_h "@property (nonatomic, copy) NSString *#{h['name']};"
382
+ end
383
+ puts_h '@end'
384
+ puts "\n\n"
385
+ when 'java'
326
386
  end
327
- puts_h '@end'
328
- puts "\n\n"
329
-
330
387
  @param_model_name = 'MLParamModel' if @param_model_name.empty?
331
388
  end
332
389
 
@@ -341,9 +398,13 @@ module Lhj
341
398
  @method = 'JSON' if data['req_body_is_json_schema']
342
399
  @path_name = @path.split('/').map { |s| s.gsub(/[^A-Za-z0-9]/, '').gsub(/^\w/) { $&.upcase } }.join('') if @path
343
400
  @path_key = "k#{@path_name}URL"
344
- puts "\n<===============方法调用=====================>\n".green
345
- @model_template = Lhj::ErbFormatter::Service.new(self).render('model')
346
- puts Lhj::ErbFormatter::Service.new(self).render('yapi').blue
401
+ case @language
402
+ when 'oc'
403
+ puts "\n<===============方法调用=====================>\n".green
404
+ @model_template = Lhj::ErbFormatter::Service.new(self).render('model')
405
+ puts Lhj::ErbFormatter::Service.new(self).render('yapi').blue
406
+ when 'java'
407
+ end
347
408
  end
348
409
  end
349
410
  end
data/lib/lhj/command.rb CHANGED
@@ -26,6 +26,7 @@ module Lhj
26
26
  require 'lhj/command/file_path'
27
27
  require 'lhj/command/http'
28
28
  require 'lhj/command/sync_pod_repo'
29
+ require 'lhj/command/pgyer_upload'
29
30
 
30
31
  self.abstract_command = true
31
32
  self.command = 'lhj'
data/lib/lhj/config.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'pathname'
2
+
1
3
  module Lhj
2
4
  # config
3
5
  class Config
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ require 'yaml'
3
+ require 'lhj/config'
4
+
5
+ module Lhj
6
+ # Ding Talk Config
7
+ class DingTalkConfig
8
+
9
+ CONFIG_NAME = 'dingtalk_config.yml'
10
+
11
+ def self.config_file
12
+ File.join(Lhj::Config.instance.home_dir, CONFIG_NAME)
13
+ end
14
+
15
+ def self.config
16
+ @yaml ||= YAML.load_file(config_file)
17
+ end
18
+
19
+ def self.dingtalk_robot
20
+ config['dingtalk_robot']
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ require 'lhj/helper/dingtalk_config'
2
+ require 'json'
3
+
4
+ module Lhj
5
+ # pgyer upload
6
+ class Dingtalk
7
+
8
+ def self.post_message(title, message)
9
+ robot_url = Lhj::DingTalkConfig.dingtalk_robot
10
+ http_body = { 'msgtype' => 'markdown', 'markdown' => { 'title' => title, 'text' => message } }.to_json
11
+ Net::HTTP.post(URI(robot_url), http_body, 'Content-Type' => 'application/json')
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+ require 'yaml'
3
+ require 'lhj/config'
4
+
5
+ module Lhj
6
+ # pgyer config
7
+ class PgyerConfig
8
+
9
+ CONFIG_NAME = 'pgyer_config.yml'
10
+
11
+ def self.config_file
12
+ File.join(Lhj::Config.instance.home_dir, CONFIG_NAME)
13
+ end
14
+
15
+ def self.config
16
+ @yaml ||= YAML.load_file(config_file)
17
+ end
18
+
19
+ def self.api_key
20
+ config['api_key']
21
+ end
22
+
23
+ def self.user_key
24
+ config['user_key']
25
+ end
26
+
27
+ def self.password
28
+ config['password']
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,66 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+ require 'lhj/helper/pgyer_config'
4
+ require 'lhj/command/yapi/formatters/service'
5
+ require 'lhj/config'
6
+ require_relative 'tb_config'
7
+
8
+ module Lhj
9
+ # pgyer upload
10
+ class Pgyer
11
+
12
+ API_HOST = 'https://upload.pgyer.com/apiv1/app/upload'.freeze
13
+
14
+ attr_reader :api_key, :user_key, :password, :result
15
+
16
+ def initialize
17
+ @api_key = Lhj::PgyerConfig.api_key
18
+ @user_key = Lhj::PgyerConfig.user_key
19
+ @password = Lhj::PgyerConfig.password
20
+ @result = { 'data' => {} }
21
+ end
22
+
23
+ # @return [Faraday::Connection]
24
+ def http_client
25
+ conn_options = {
26
+ request: {
27
+ timeout: 1000,
28
+ open_timeout: 300
29
+ }
30
+ }
31
+ Faraday.new(nil, conn_options) do |builder|
32
+ builder.request :multipart
33
+ builder.request :url_encoded
34
+ builder.response :json, content_type: /\bjson$/
35
+ builder.adapter :net_http
36
+ end
37
+ end
38
+
39
+ def upload_file(file, des)
40
+ params = {
41
+ '_api_key' => @api_key,
42
+ 'uKey' => @user_key,
43
+ 'password' => @password,
44
+ 'updateDescription' => des,
45
+ 'installType' => 2,
46
+ 'file' => Faraday::UploadIO.new(file, 'application/octet-stream')
47
+ }
48
+ begin
49
+ puts 'begin upload'
50
+ response = http_client.post API_HOST, params
51
+ @result = response.body
52
+ puts @result
53
+ if @result['data'] && @result['data']['appUpdateDescription']
54
+ @result['data']['appUpdateDescription'] = Lhj::TbHelper.trans_tb(@result['data']['appUpdateDescription'])
55
+ end
56
+ rescue Faraday::TimeoutError
57
+ puts 'upload fail'
58
+ end
59
+ end
60
+
61
+ def render_template
62
+ temp_str = File.read(File.join(Lhj::Config.instance.home_dir, 'pgyer.erb'))
63
+ Lhj::ErbFormatter::Service.new(self).render_template(temp_str)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+ require 'yaml'
3
+ require 'lhj/config'
4
+
5
+ module Lhj
6
+ # tb config
7
+ class TBConfig
8
+
9
+ CONFIG_NAME = 'tb_config.yml'
10
+
11
+ def self.config_file
12
+ File.join(Lhj::Config.instance.home_dir, CONFIG_NAME)
13
+ end
14
+
15
+ def self.config
16
+ @yaml ||= YAML.load_file(config_file)
17
+ end
18
+
19
+ def self.tb_app_id
20
+ config['tb_app_id']
21
+ end
22
+
23
+ def self.tb_app_key
24
+ config['tb_app_key']
25
+ end
26
+
27
+ def self.tb_tenant_id
28
+ config['tb_tenant_id']
29
+ end
30
+
31
+ def self.projectId
32
+ config['projectId']
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,54 @@
1
+ require 'lhj/helper/tb_config'
2
+ require 'jwt'
3
+ require 'net/http'
4
+ require 'uri'
5
+ require 'json'
6
+
7
+ module Lhj
8
+ # tb upload
9
+ class TbHelper
10
+
11
+ SEARCH_API_URL = 'https://open.teambition.com/api/task/tqlsearch'.freeze
12
+
13
+ def self.trans_tb(note)
14
+ str = note
15
+ if /#.+#/ =~ note
16
+ note.scan(/#[^#]+#/) do |m|
17
+ res_body = req_with_task(m.match(/\d+/)[0])
18
+ if res_body['code'].to_i == 200
19
+ url_str = "[#{res_body['result'][0]['content']}](https://www.teambition.com/task/#{res_body['result'][0]['taskId']})"
20
+ str = str.gsub(m, url_str)
21
+ end
22
+ end
23
+ end
24
+ str
25
+ end
26
+
27
+ def self.req_with_task(id)
28
+ now = Time.now.to_i
29
+ payload = {
30
+ _appId: Lhj::TBConfig.tb_app_id,
31
+ iat: now,
32
+ exp: now + 3600
33
+ }
34
+ token = JWT.encode(payload, Lhj::TBConfig.tb_app_key)
35
+
36
+ url = URI(SEARCH_API_URL)
37
+ https = Net::HTTP.new(url.host, url.port)
38
+ https.use_ssl = true
39
+
40
+ request = Net::HTTP::Post.new(url)
41
+ request['authorization'] = "Bearer #{token}"
42
+ request['x-tenant-id'] = Lhj::TBConfig.tb_tenant_id
43
+ request['x-tenant-type'] = 'organization'
44
+ request['Content-Type'] = 'application/json'
45
+ req_body = {
46
+ "tql": "projectId=#{Lhj::TBConfig.projectId} AND uniqueId=#{id}"
47
+ }
48
+ request.body = JSON.dump(req_body)
49
+
50
+ response = https.request(request)
51
+ JSON.parse(response.read_body)
52
+ end
53
+ end
54
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lhj
4
4
  module Tools
5
- VERSION = "0.1.12"
5
+ VERSION = "0.1.18"
6
6
  end
7
7
  end
data/lib/lhj/tools.rb CHANGED
@@ -4,6 +4,10 @@ require 'colored'
4
4
 
5
5
  module Lhj
6
6
  require 'lhj/config'
7
+ require 'lhj/helper/pgyer_helper'
8
+ require 'lhj/helper/dingtalk_helper'
9
+ require 'lhj/helper/tb_helper'
10
+
7
11
  class Error < StandardError; end
8
12
 
9
13
  autoload :Command, 'lhj/command'
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.12
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-03 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: claide
@@ -262,6 +262,26 @@ dependencies:
262
262
  - - "<"
263
263
  - !ruby/object:Gem::Version
264
264
  version: 3.0.0
265
+ - !ruby/object:Gem::Dependency
266
+ name: jwt
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: 2.1.0
272
+ - - "<"
273
+ - !ruby/object:Gem::Version
274
+ version: '3'
275
+ type: :runtime
276
+ prerelease: false
277
+ version_requirements: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: 2.1.0
282
+ - - "<"
283
+ - !ruby/object:Gem::Version
284
+ version: '3'
265
285
  description: lhj tools.
266
286
  email:
267
287
  - sanan.li@qq.com
@@ -289,6 +309,7 @@ files:
289
309
  - lib/lhj/command/oss/del.rb
290
310
  - lib/lhj/command/oss/list.rb
291
311
  - lib/lhj/command/oss/upload.rb
312
+ - lib/lhj/command/pgyer_upload.rb
292
313
  - lib/lhj/command/refactor_rename.rb
293
314
  - lib/lhj/command/rename_image.rb
294
315
  - lib/lhj/command/reverse_import.rb
@@ -301,11 +322,18 @@ files:
301
322
  - lib/lhj/command/yapi/formatters/command_context.rb
302
323
  - lib/lhj/command/yapi/formatters/service.rb
303
324
  - lib/lhj/command/yapi/formatters/template/model.erb
325
+ - lib/lhj/command/yapi/formatters/template/pgyer.erb
304
326
  - lib/lhj/command/yapi/formatters/template/yapi.erb
305
327
  - lib/lhj/config.rb
328
+ - lib/lhj/helper/dingtalk_config.rb
329
+ - lib/lhj/helper/dingtalk_helper.rb
306
330
  - lib/lhj/helper/local_config.rb
307
331
  - lib/lhj/helper/oss_config.rb
308
332
  - lib/lhj/helper/oss_helper.rb
333
+ - lib/lhj/helper/pgyer_config.rb
334
+ - lib/lhj/helper/pgyer_helper.rb
335
+ - lib/lhj/helper/tb_config.rb
336
+ - lib/lhj/helper/tb_helper.rb
309
337
  - lib/lhj/helper/trans_helper.rb
310
338
  - lib/lhj/tools.rb
311
339
  - lib/lhj/tools/version.rb