lhj-tools 0.2.72 → 0.2.74

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: 860185cadd542b509b1d85d198c0a3ca6c7ec7bb2188dda3b26b2f7521f6ace0
4
- data.tar.gz: 674170f9e7b21c43965218b22a349b4cd49a706513ec1cbd486662a9d23e2c40
3
+ metadata.gz: d7617205034e037486f6f9cb332e7064f49bd32d509d9f1e957c5df47100dabb
4
+ data.tar.gz: 254627f1697ed73f5aeb332d8e9da0f15e2b356698e02d1ce695836d0e7139cf
5
5
  SHA512:
6
- metadata.gz: 18ce56d41b9fa74f995c137f10f5e5608b95e709e1dc88c07dc6f92791f2e5a1937ed0f556fd5aadde9a4561b58f2bc14d2d2848de6c2932a132ac7d5a16c82f
7
- data.tar.gz: 93e29e58679ed49389f7dae92badcd7ae738dec2bc56e93bdb301950f9d9f7708466f8f1d9bd891f209a30d9f9c358159ee925c373505079c82e9e15821657e6
6
+ metadata.gz: 8f596ee969cb0231148e553cff8683280ea271dd4bf303ea6347c2963d6ee8f05b8802d05ebca7f174834aec3e09874b58ba16141df418420f1a44304584a1b6
7
+ data.tar.gz: 8cdcccbca6add90899a7e0efb3c3b62a5c67bc9f7ba054c5c183b4e6626cb369da5dc6c11026090a46e059f9d6fb4f6b172f1d33fb523d42d6ce63714e5a75f0
@@ -44,8 +44,8 @@ module Lhj
44
44
  def gen_csv
45
45
  file = File.join(@current_path, csv_file_name)
46
46
  FileUtils.rm_rf(file) if File.exist?(file)
47
- header = %w[国际化key 中文 英文 所在文件 文件路径 行号]
48
- CSV.open(file, 'wb:utf-8', headers: true, converters: :numeric, header_converters: :symbol) do |csv|
47
+ CSV.open(file, 'wb:utf-8') do |csv|
48
+ csv << %w[国际化key 中文 英文 所在文件 文件路径 行号]
49
49
  @cn_keys.each do |k|
50
50
  csv << [k[:key], k[:cn], k[:en], k[:fname], k[:dirname], k[:idx]]
51
51
  end
@@ -56,8 +56,8 @@ module Lhj
56
56
  def gen_csv_unique
57
57
  file = File.join(@current_path, unique_csv_file_name)
58
58
  FileUtils.rm_rf(file) if File.exist?(file)
59
- header = %w[国际化key 中文 英文 所在文件 文件路径 行号]
60
- CSV.open(file, 'wb:utf-8', headers: true, write_headers: header) do |csv|
59
+ CSV.open(file, 'wb:utf-8') do |csv|
60
+ csv << %w[国际化key 中文 英文 所在文件 文件路径 行号]
61
61
  @cn_keys.uniq { |k| k[:cn] }.each do |k|
62
62
  csv << [k[:key], k[:cn], k[:en], k[:fname], k[:dirname], k[:idx]]
63
63
  end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+ module Lhj
3
+ class IosApiAvailableCheckHelper
4
+
5
+ API_AVAILABLE_KEY_BEGIN_REGEX = /@available\(/.freeze
6
+
7
+ def self.check(path, type = 'm')
8
+ all_files = Dir.glob("#{path}/**/*.{#{type}}").reject do |p|
9
+ p =~ /Pods/
10
+ end
11
+ result = {}
12
+ all_files.each do |f|
13
+ wrapper_lines = find_available_wrapper(f)
14
+ infos = handle_file(f, wrapper_lines)
15
+ result[File.basename(f)] = infos if infos.length.positive?
16
+ end
17
+ # result
18
+ # show_result(result)
19
+ result.keys.each_slice(10) { |a| notify(result.slice(*a)) }
20
+ end
21
+
22
+ def self.show_result(result)
23
+ result.each do |k, v|
24
+ puts k
25
+ v.each do |o|
26
+ puts "第#{o[:idx]}行:"
27
+ puts o[:line]
28
+ end
29
+ end
30
+ end
31
+
32
+ def self.find_available_wrapper(file)
33
+ lines = []
34
+ File.open(file, 'r') do |f|
35
+ multi_comment = false
36
+ available_idx = 0
37
+ f.readlines.each_with_index do |line, idx|
38
+ multi_comment = true if line =~ %r{/\*} && line !~ %r{\*/} && !multi_comment
39
+ if line !~ %r{/\*} && line =~ %r{\*/} && multi_comment
40
+ multi_comment = false
41
+ next
42
+ end
43
+
44
+ next if multi_comment
45
+ next if line =~ %r{\s*//}
46
+ next unless line =~ API_AVAILABLE_KEY_BEGIN_REGEX || available_idx.positive?
47
+
48
+ available_idx += 1 if line =~ /\{/
49
+ available_idx -= 1 if line =~ /\}/
50
+ lines << { idx: idx, line: line }
51
+ end
52
+ end
53
+ lines
54
+ end
55
+
56
+ def self.handle_file(file, wrapper_lines)
57
+ result = []
58
+ File.open(file, 'r') do |f|
59
+ multi_comment = false
60
+ f.readlines.each_with_index do |line, idx|
61
+ multi_comment = true if line =~ %r{/\*} && line !~ %r{\*/} && !multi_comment
62
+ if line !~ %r{/\*} && line =~ %r{\*/} && multi_comment
63
+ multi_comment = false
64
+ next
65
+ end
66
+
67
+ next if multi_comment
68
+ next if line =~ %r{\s*//}
69
+ # 1. 白名单查找
70
+ next unless match_white_list_reg(line)
71
+ # 2. 找到的行是否已available代码块
72
+ next if wrapper_lines.length.positive? && wrapper_lines.any? { |w| w[:idx] == idx }
73
+
74
+ result << { idx: idx + 1, line: line }
75
+ end
76
+ end
77
+ result
78
+ end
79
+
80
+ def self.match_white_list_reg(line)
81
+ regs ||= load_white_api_list
82
+ regs.any? { |r| line =~ /#{r}/ }
83
+ end
84
+
85
+ def self.load_white_api_list
86
+ require 'yaml'
87
+ yaml_file = File.join(Lhj::Config.instance.home_dir, 'ios_available_api_white_list.yml')
88
+ YAML.safe_load(File.open(yaml_file))
89
+ end
90
+
91
+ def self.robot_url
92
+ 'https://oapi.dingtalk.com/robot/send?access_token=fe879fd3e7a3b5e59d5719b2384845b7884901919be5a78fe443cbf777869807'
93
+ end
94
+
95
+ def self.notify(result)
96
+ temp = Lhj::ErbTemplateHelper.load('ios_avaliable_api_notify')
97
+ temp_result = Lhj::ErbTemplateHelper.render(temp, { result: result, branch: git_branch }, '-')
98
+ Lhj::Dingtalk.post_message_robot(robot_url, 'check code', temp_result)
99
+ end
100
+
101
+ def self.git_branch
102
+ branch ||= Lhj::LogHelper.instance.fetch_branch
103
+ branch
104
+ end
105
+ end
106
+ end
data/lib/lhj/lhj.rb CHANGED
@@ -32,6 +32,7 @@ module Lhj
32
32
  require 'lhj/helper/traditional_check_helper'
33
33
  require 'lhj/helper/todo_check_helper'
34
34
  require 'lhj/helper/image_oss_check_helper'
35
+ require 'lhj/helper/ios_api_available_check_helper'
35
36
 
36
37
  class Error < StandardError; end
37
38
 
data/lib/lhj/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lhj
4
- VERSION = '0.2.72'
4
+ VERSION = '0.2.74'
5
5
  end
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.72
4
+ version: 0.2.74
5
5
  platform: ruby
6
6
  authors:
7
7
  - lihaijian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-04 00:00:00.000000000 Z
11
+ date: 2024-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -393,6 +393,7 @@ files:
393
393
  - lib/lhj/helper/git_branch_feature_config.rb
394
394
  - lib/lhj/helper/git_helper.rb
395
395
  - lib/lhj/helper/image_oss_check_helper.rb
396
+ - lib/lhj/helper/ios_api_available_check_helper.rb
396
397
  - lib/lhj/helper/ios_robot_config.rb
397
398
  - lib/lhj/helper/jenkins_config.rb
398
399
  - lib/lhj/helper/local_config.rb