cocoapods-jxedt 0.0.9 → 0.0.10

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: c38c0828fdaf7acdd4f9aea09b68194af1d2e9e6117ca1c6156618e7b1bc8cd6
4
- data.tar.gz: 4d19e409eefaa4a2eac16c7c72e6874a2a626c49bf1a20cd216a7d5ef842395c
3
+ metadata.gz: 777002b95ef4f80296a0e6289a5a90ad04c2f71e49d2e647fd21e145c872b871
4
+ data.tar.gz: 0dc4fee30c433a0e07c89c114c61e9f2355746618fd3cf2055f011e9e767b4b4
5
5
  SHA512:
6
- metadata.gz: 6587bbe4ed16a1a0f354b8bb07008399c2031ccf28544e4c75b8180005c5653670fa8d86c8868275fd389b700f8e6d8d18c4fea9c3061742f44e751f47fdcce3
7
- data.tar.gz: 3968415ded4a515d99569a2f060ae732055233c4c8703048346eaf52a2e0665dd659af92889b11cf959ce78f69d8b92719f68247fc4231133a04501d0ea7b933
6
+ metadata.gz: 239b4f5621619a359f42159c0d14bad1402e75b56862af836ae297b6ff88667b0bf8fc6b2bbdc5a1f65d31fade8b04895de910f2d50c99e2ba7f03f19e12ce14
7
+ data.tar.gz: 198b0e23d430d4788b3fe14cee2562041b8323ac9ad68ac12b215613a9ea443caa6c427e6d49f51fb539687f81c2e0caab8de2290362227ab268de8e34ea0472
@@ -2,9 +2,9 @@ module Pod
2
2
  class Command
3
3
  class JxedtCommand < Command
4
4
  class Header < JxedtCommand
5
- self.summary = 'header fix'
5
+ self.summary = '修改头文件引用问题'
6
6
  self.description = <<-DESC
7
- 修改头文件引用问题。\n
7
+ 修改头文件引用问题\n
8
8
  例如修改#import "AFNetworking.h"或#import <AFNetworking.h>这种头文件引用方式为#import <AFNetworking/AFNetworking.h>\n
9
9
  使用方式:\n
10
10
  到Podfile文件所在目录执行以下命令\n
@@ -23,6 +23,8 @@ module Pod
23
23
  ['--write', '修改命中的头文件引用,不写入则直接输出需要修改的文件和修改内容。默认false'],
24
24
  ['--suffix', '处理的文件后缀,默认处理\'h,m,mm,pch\'后缀的文件'],
25
25
  ['--header-regulation', 'header name的正则,默认为\'[\w+-]*\.h\',如果不满足也可以自定义'],
26
+ ['--verbose', '在屏幕上输出修改文件的详情'],
27
+ ['--log-path', '需要修改文件内容导出路径']
26
28
  ]
27
29
  end
28
30
  def initialize(argv)
@@ -31,6 +33,8 @@ module Pod
31
33
  @suffix = argv.option('suffix', 'h,m,mm,pch')
32
34
  @force_write = argv.flag?('write', false)
33
35
  @header_regulation = argv.option('header-regulation')
36
+ @verbose_flag = argv.flag?('verbose', false)
37
+ @log_path = argv.option('log-path')
34
38
  super
35
39
  end
36
40
 
@@ -65,7 +69,7 @@ module Pod
65
69
  }
66
70
 
67
71
  # 遍历需要处理的文件
68
- record = []
72
+ files, failed, record = [], [], []
69
73
  process_target_files.each {|file_path|
70
74
  changed = false
71
75
  lines = File.readlines(file_path)
@@ -77,16 +81,36 @@ module Pod
77
81
  header_name = line.match(/(?<=")#{header_name_regulation}(?=")/) || line.match(/(?<=<)#{header_name_regulation}(?=>)/)
78
82
  next unless public_header_mapping.include?("#{header_name}")
79
83
 
84
+ changed = true # 文件需要修改
80
85
  project_module_name = public_header_mapping["#{header_name}"]
81
86
  replace_line = "#import " << "<#{project_module_name}/#{header_name}>\n"
82
87
  lines[num] = replace_line
83
- changed = true
84
88
  record << "#{file_path} 第#{num}行,#{line} => #{replace_line}"
85
89
  }
86
- File.open(file_path, 'w') { |f| f.write(lines.join) } if changed && @force_write
90
+ files << file_path if changed
91
+ begin
92
+ File.open(file_path, 'w') { |f| f.write(lines.join) } if changed && @force_write
93
+ rescue
94
+ failed << file_path
95
+ ensure
96
+ help! "因权限问题文件修改失败:\n#{file_path}" if failed.size > 0
97
+ end
87
98
  }
88
- puts "需要修改的地方共有:#{record.size} 处"
89
- puts JSON.pretty_generate(record) if record.size > 0
99
+ puts "需要修改文件共有:#{files.size} 个,需要修改的头文件的地方共有:#{record.size} 处"
100
+ puts "已修改完成" if files.size > 0 && @force_write
101
+
102
+ if files.size > 0
103
+ logs = <<~LOGS
104
+ 需要修改的文件:
105
+ #{JSON.pretty_generate(files)}
106
+
107
+ 文件修改详情:
108
+ #{JSON.pretty_generate(record)}
109
+ LOGS
110
+ logs.gsub!('\\"', '"').gsub!('\\n', '') # 去除转义字符
111
+ puts logs if @verbose_flag
112
+ File.open(log_file_path, 'w') { |file| file.write("#{logs}") } unless log_file_path.nil?
113
+ end
90
114
  end
91
115
 
92
116
  def installer_for_config
@@ -151,6 +175,13 @@ module Pod
151
175
  end
152
176
  dependent_targets
153
177
  end
178
+
179
+ def log_file_path
180
+ log_path = @log_path
181
+ log_path << "/headerfix_output.txt" if log_path && File.directory?(log_path)
182
+ return if log_path && (!File.exist?(File.dirname(log_path)))
183
+ log_path
184
+ end
154
185
  end
155
186
  end
156
187
  end
@@ -1,5 +1,6 @@
1
1
  require_relative 'options/options'
2
2
  require_relative 'header/header'
3
+ require_relative 'statistics/statistics'
3
4
 
4
5
  module Pod
5
6
  class Command
@@ -0,0 +1,98 @@
1
+ module Pod
2
+ class Command
3
+ class JxedtCommand < Command
4
+ class Statistics < JxedtCommand
5
+ self.summary = '统计二进制使用情况'
6
+ self.description = <<-DESC
7
+ 统计二进制使用详情
8
+ DESC
9
+ self.command = 'statistics'
10
+ self.arguments = [
11
+ ]
12
+ def self.options
13
+ [
14
+ ['--failed', '统计校验失败的二进制'],
15
+ ]
16
+ end
17
+ def initialize(argv)
18
+ @check_failed = argv.flag?('failed')
19
+ super
20
+ end
21
+
22
+ def validate!
23
+ super
24
+ end
25
+
26
+ def run
27
+ podfile = Pod::Config.instance.podfile
28
+ lockfile = Pod::Config.instance.lockfile
29
+ help! '请检查命令执行路径,需要在Podfile文件所在目录执行' if podfile.nil? || lockfile.nil?
30
+
31
+ require 'cocoapods-jxedt/binary/config'
32
+ require 'cocoapods-jxedt/binary/helper/podfile_options'
33
+
34
+ pods_root = Pathname.new(File.dirname(podfile.defined_in_file)) + "Pods"
35
+ binary_dir = pods_root + Jxedt.config.binary_dir
36
+
37
+ used_binary = []
38
+ Dir.glob("#{pods_root}/*/_Prebuild") do |file_path|
39
+ next unless File.directory?(file_path)
40
+ dir_name = File.dirname(file_path)
41
+ name = File.basename(dir_name).to_s
42
+ target_path = binary_dir + name
43
+ next unless target_path.exist? # 路径不存在,跳过
44
+
45
+ new_hash = {}
46
+ # name
47
+ new_hash[:name] = name
48
+
49
+ # multiple_configuration
50
+ configuration_enable = target_path.children().select { |path| "#{path.basename}" == 'Debug' || "#{path.basename}" == 'Release' }.count == 2
51
+ new_hash[:multiple_configuration] = configuration_enable
52
+
53
+ # checksum validation
54
+ checksum_file = target_path.children().select { |path| path.extname == '.checksum' }.first
55
+ new_hash[:checksum] = checksum_file.basename.to_s.gsub('.checksum', '') unless checksum_file.nil?
56
+
57
+ used_binary << new_hash
58
+ end
59
+
60
+ # print
61
+ index, failed = 0, []
62
+ used_binary.sort_by {|hash| hash[:name] }.each do |hash|
63
+ name = hash[:name]
64
+
65
+ checksum = lockfile.spec_checksums_hash_key(name)
66
+ validation_passed = checksum && checksum == hash[:checksum]
67
+ failed << name unless validation_passed
68
+
69
+ # 校验和是否用的 git commitid
70
+ checkout_options = lockfile.internal_data["CHECKOUT OPTIONS"] || {}
71
+ is_git_commitid = checkout_options[name] && checkout_options[name][:commit]
72
+
73
+ if validation_passed
74
+ next if @check_failed
75
+ index += 1
76
+ log = <<~LOG
77
+ #{index}). #{name}:
78
+ multiple configuration: #{hash[:multiple_configuration]}
79
+ checksum#{"(git commitid)" if is_git_commitid}: #{hash[:checksum]}
80
+ LOG
81
+ Pod::UI.puts log
82
+ else
83
+ index += 1
84
+ log = <<~LOG
85
+ #{index}). #{name}:
86
+ multiple configuration: #{hash[:multiple_configuration]}
87
+ checksum: #{hash[:checksum]}
88
+ checksum in lockfile#{"(git commitid)" if is_git_commitid}: #{checksum}
89
+ LOG
90
+ Pod::UI.puts log.red
91
+ end
92
+ end
93
+ Pod::UI.puts "checksum校验失败的组件: #{failed}".red if failed.size > 0
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -1,3 +1,3 @@
1
1
  module CocoapodsJxedt
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-jxedt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - guojiashuang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-18 00:00:00.000000000 Z
11
+ date: 2023-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cocoapods
@@ -90,6 +90,7 @@ files:
90
90
  - lib/cocoapods-jxedt/command/header/header.rb
91
91
  - lib/cocoapods-jxedt/command/jxedt.rb
92
92
  - lib/cocoapods-jxedt/command/options/options.rb
93
+ - lib/cocoapods-jxedt/command/statistics/statistics.rb
93
94
  - lib/cocoapods-jxedt/gem_version.rb
94
95
  - lib/cocoapods-jxedt/tool.rb
95
96
  - lib/cocoapods_plugin.rb