yptools 1.0.4 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/yptools/file/yp_updatecreatedate.rb +69 -0
- data/lib/yptools/help/yp_help.rb +7 -1
- data/lib/yptools/log/yp_log.rb +5 -0
- data/lib/yptools/update/yp_update.rb +20 -0
- data/lib/yptools/xcodeproj/yp_xcodeproj.rb +186 -0
- data/lib/yptools.rb +40 -4
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d9a36624bc18f1d519d0a1b5e24440eec56f05729f2bb997646518eef48130e
|
4
|
+
data.tar.gz: 5682539c004927df1bd3b4c8cb9ae8e0c327181311542370bdf42d4d82c46793
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5212b210a35eaef7c94b78e416847b4deb21a528f68db4173d0243966502268d0995d774090862b19c271dda78b45abd1def619bedd88c4134b2061adab950ce
|
7
|
+
data.tar.gz: 1645e155cd85a3adb1f02492bc17759e6e969cc82f9de10fef12ff993eafdd849e65ec942f89e161487fad4a54e66be5a33d437bd2e460861fcc01aaddefd872
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'colored'
|
3
|
+
require_relative '../log/yp_log'
|
4
|
+
require_relative '../mgc/yp_makegarbagecode'
|
5
|
+
|
6
|
+
def yp_copy_ignoringFiles
|
7
|
+
return ".", "..", ".DS_Store"
|
8
|
+
end
|
9
|
+
|
10
|
+
def yp_updatereateDate (path)
|
11
|
+
yp_log_msg '#{path}'
|
12
|
+
# 筛选文件的正则
|
13
|
+
script = /(\.h|\.m)$/
|
14
|
+
# 配置忽略文件
|
15
|
+
ignoringFiles = yp_copy_ignoringFiles
|
16
|
+
# 获取符合条件的文件列表
|
17
|
+
fileList = yp_method_fileList path, script, ignoringFiles
|
18
|
+
|
19
|
+
yp_log_doing "正在准备更新当前目录下面文件后缀为.h|.m 的文件创建时间"
|
20
|
+
|
21
|
+
fileList.each { |fileDic|
|
22
|
+
fileDic.each { |key, value|
|
23
|
+
createTime = Time.new
|
24
|
+
fileName = File.basename(value,".*")
|
25
|
+
yp_log_success "已更新文件:#{key}"
|
26
|
+
yp_updateCreateDateWithPath value
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
yp_log_success "已更新完成,总共更新#{fileList.count}个文件"
|
31
|
+
end
|
32
|
+
|
33
|
+
# 重新生成文件(目的是为了重置创建时间)
|
34
|
+
def yp_updateCreateDateWithPath (path)
|
35
|
+
|
36
|
+
pathFile = File.open(path, "r")
|
37
|
+
fileName = File.basename(path,".*")
|
38
|
+
allLines = Array.new
|
39
|
+
|
40
|
+
createTime = Time.new
|
41
|
+
allLines.push('// YPTools Auto Update Create Date https://github.com/HansenCCC/YPTools')
|
42
|
+
allLines.push("\n")
|
43
|
+
allLines.push("// #{createTime}")
|
44
|
+
allLines.push("\n")
|
45
|
+
|
46
|
+
fileLine = 0
|
47
|
+
while textLine = pathFile.gets
|
48
|
+
fileLine += 1
|
49
|
+
allLines.push(textLine)
|
50
|
+
end
|
51
|
+
|
52
|
+
allLines.push("\n")
|
53
|
+
allLines.push("// #{createTime}")
|
54
|
+
allLines.push("\n")
|
55
|
+
allLines.push('// YPTools Auto Update Create Date https://github.com/HansenCCC/YPTools')
|
56
|
+
|
57
|
+
filePath = path
|
58
|
+
|
59
|
+
pathFile.close
|
60
|
+
|
61
|
+
File.delete(path)
|
62
|
+
|
63
|
+
createFile = File.new(filePath,"w+")
|
64
|
+
allLines.each {|lineTest|
|
65
|
+
createFile.syswrite(lineTest)
|
66
|
+
}
|
67
|
+
|
68
|
+
createFile.close
|
69
|
+
end
|
data/lib/yptools/help/yp_help.rb
CHANGED
@@ -7,8 +7,14 @@ class YPHelp
|
|
7
7
|
|
8
8
|
mgc: use [yptools mgc suffix] 在当前目录生成垃圾代码(当前目录需要有.xcworkspace或者.xcodeproj目录)
|
9
9
|
|
10
|
-
|
10
|
+
update: use [yptools update] 更新yptools
|
11
|
+
|
12
|
+
ufct: use [yptools ufct] 更新当前目录下面文件后缀为.h|.m 的文件创建时间
|
11
13
|
|
14
|
+
xpj: use [yptools xpj ...] use xcodeproj api
|
15
|
+
use [yptools xpj check] 检查当前目录项目文件是否存在引用的问题
|
16
|
+
|
17
|
+
help: use [yptools help] 查看帮助
|
12
18
|
|
13
19
|
}
|
14
20
|
end
|
data/lib/yptools/log/yp_log.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'colored'
|
2
|
+
require 'fileutils'
|
3
|
+
require_relative '../mgc/yp_makegarbagecode'
|
4
|
+
require_relative '../log/yp_log'
|
5
|
+
|
6
|
+
class YPUpdate
|
7
|
+
def self.update
|
8
|
+
yp_log_doing '准备更新...'
|
9
|
+
|
10
|
+
system("gem install colored")
|
11
|
+
system("gem install bundler")
|
12
|
+
system("gem install rake")
|
13
|
+
system("gem install xcodeproj")
|
14
|
+
system("gem install yptools")
|
15
|
+
|
16
|
+
yp_log_success "更新YPTools完成"
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,186 @@
|
|
1
|
+
require 'xcodeproj'
|
2
|
+
require_relative '../log/yp_log'
|
3
|
+
require_relative '../mgc/yp_makegarbagecode'
|
4
|
+
|
5
|
+
class YPXcodeproj
|
6
|
+
|
7
|
+
def self.xcodeproj(cmd)
|
8
|
+
case cmd
|
9
|
+
when 'check'
|
10
|
+
self.check
|
11
|
+
when 'message'
|
12
|
+
self.message
|
13
|
+
else
|
14
|
+
yp_log_fail "'yptools xcp #{name}' 暂无,敬请期待"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.message
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.check
|
23
|
+
|
24
|
+
yp_log_doing "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
25
|
+
|
26
|
+
yp_path = `pwd`
|
27
|
+
yp_path = yp_path.sub("\n","")
|
28
|
+
|
29
|
+
yp_log_doing "当前目录 #{yp_path}"
|
30
|
+
|
31
|
+
yp_isTruePath = 0
|
32
|
+
|
33
|
+
project_path = ''
|
34
|
+
|
35
|
+
Dir.entries(yp_path).each do |subFile|
|
36
|
+
if subFile.include?(".xcodeproj")
|
37
|
+
yp_isTruePath = 1
|
38
|
+
project_path = yp_path + "/" + subFile
|
39
|
+
break
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
if yp_isTruePath == 0
|
44
|
+
yp_log_fail "#{yp_path} " + "此目录没有工程,请切换到项目目录下再执行 'yptools xcj check' 命令"
|
45
|
+
return
|
46
|
+
end
|
47
|
+
|
48
|
+
yp_log_success "检查#{project_path}项目是否有异常文件"
|
49
|
+
project = Xcodeproj::Project.open(project_path)
|
50
|
+
|
51
|
+
target = project.targets.first
|
52
|
+
|
53
|
+
if project.targets.count == 0
|
54
|
+
yp_log_fail "解析失败,当前工程没有target"
|
55
|
+
return
|
56
|
+
elsif project.targets.count == 1
|
57
|
+
yp_log_doing "开始解析target:'#{target}'"
|
58
|
+
else
|
59
|
+
yp_log_success '发现以下 targets,需要分析哪个?'
|
60
|
+
index = 1
|
61
|
+
project.targets.to_a.each do |t|
|
62
|
+
yp_log_msg "#{index}、" + t.name
|
63
|
+
index += 1
|
64
|
+
end
|
65
|
+
|
66
|
+
input_target = $stdin.gets.chomp.strip
|
67
|
+
if input_target.empty?
|
68
|
+
yp_log_fail '请选一个 target'
|
69
|
+
return
|
70
|
+
end
|
71
|
+
|
72
|
+
target = nil
|
73
|
+
|
74
|
+
project.targets.to_a.each do |t|
|
75
|
+
if t.name == input_target
|
76
|
+
target = t
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
unless target
|
81
|
+
yp_log_fail "解析失败,输入terget名字与项目中不匹配"
|
82
|
+
return
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
not_exist_files = project.files.to_a.map do |file|
|
88
|
+
file.real_path.to_s
|
89
|
+
end.select do |path|
|
90
|
+
!File.exists?(path)
|
91
|
+
end
|
92
|
+
|
93
|
+
exist_files = project.files.to_a.map do |file|
|
94
|
+
file.real_path.to_s
|
95
|
+
end.select do |path|
|
96
|
+
File.exists?(path)
|
97
|
+
end
|
98
|
+
|
99
|
+
yp_log_doing "开始解析target:'#{target}'"
|
100
|
+
yp_log_success "正在检测项目引用的文件是否存在:"
|
101
|
+
if not_exist_files.count > 0
|
102
|
+
yp_log_fail "请注意,以下'#{not_exist_files.count}个'文件不存在:"
|
103
|
+
not_exist_files.to_a.map do |path|
|
104
|
+
yp_log_fail File.basename(path) + ' -> ' + path
|
105
|
+
end
|
106
|
+
else
|
107
|
+
yp_log_success "暂无异常"
|
108
|
+
end
|
109
|
+
|
110
|
+
subPath = yp_path
|
111
|
+
script = /^*(\.m)$/
|
112
|
+
ignoringFiles = ".", "..", ".DS_Store", "Pods"
|
113
|
+
file_list = yp_method_fileList subPath, script, ignoringFiles
|
114
|
+
|
115
|
+
all_file_list = Array.new
|
116
|
+
file_list.each { |fileDic|
|
117
|
+
fileDic.each { |key, value|
|
118
|
+
all_file_list.push(value)
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
target_files = target.source_build_phase.files.to_a.map do |pbx_build_file|
|
123
|
+
pbx_build_file.file_ref.real_path.to_s
|
124
|
+
end.select do |path|
|
125
|
+
path.end_with?(".m", ".mm", ".swift")
|
126
|
+
end.select do |path|
|
127
|
+
File.exists?(path)
|
128
|
+
end
|
129
|
+
|
130
|
+
not_imports = all_file_list - target_files
|
131
|
+
|
132
|
+
yp_log_success "正在检测'.m'文件引用问题:"
|
133
|
+
if not_imports.count > 0
|
134
|
+
yp_log_fail "请注意,以下'#{not_imports.count}个'文件没有被引用:"
|
135
|
+
not_imports.to_a.map do |path|
|
136
|
+
yp_log_fail File.basename(path) + ' -> ' + path
|
137
|
+
end
|
138
|
+
else
|
139
|
+
yp_log_success "暂无异常"
|
140
|
+
end
|
141
|
+
|
142
|
+
yp_log_doing "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
|
149
|
+
#xcodeproj工程配置脚本化 https://www.jianshu.com/p/67ab2522daa7
|
150
|
+
|
151
|
+
## puts project.main_group.path
|
152
|
+
# files_m = target.source_build_phase.files.to_a.map do |pbx_build_file|
|
153
|
+
# pbx_build_file.file_ref.real_path.to_s
|
154
|
+
# end.select do |path|
|
155
|
+
# path.end_with?(".m", ".mm", ".swift")
|
156
|
+
# end.select do |path|
|
157
|
+
# !File.exists?(path)
|
158
|
+
# end
|
159
|
+
#
|
160
|
+
## files_h = target.headers_build_phase.files.to_a.map do |pbx_build_file|
|
161
|
+
## puts pbx_build_file
|
162
|
+
### pbx_build_file.file_ref.real_path.to_s
|
163
|
+
## end.select do |path|
|
164
|
+
## path.end_with?(".m", ".mm", ".swift")
|
165
|
+
## end.select do |path|
|
166
|
+
## File.exists?(path)
|
167
|
+
## end
|
168
|
+
#
|
169
|
+
# project.groups.to_a.map do |group|
|
170
|
+
## puts group.class
|
171
|
+
## puts pbx_build_file.file_ref.real_path.to_s
|
172
|
+
# end
|
173
|
+
#
|
174
|
+
#
|
175
|
+
## puts files_h
|
176
|
+
## puts files_m
|
177
|
+
#
|
178
|
+
# # app_target = project.targets.first
|
179
|
+
# #
|
180
|
+
# # puts app_target
|
181
|
+
# # new_group = project.new_group("CHSS")
|
182
|
+
# #
|
183
|
+
# # header_ref = new_group.new_file('/Users/Hansen/Desktop/CHSS/CoverView+CHSS.h')
|
184
|
+
# # implm_ref = new_group.new_file('/Users/Hansen/Desktop/CHSS/CoverView+CHSS.m')
|
185
|
+
# # app_target.add_file_references([implm_ref])
|
186
|
+
# # project.save()
|
data/lib/yptools.rb
CHANGED
@@ -2,14 +2,27 @@ require_relative 'yptools/mgc/yp_makegarbagecode'
|
|
2
2
|
require_relative 'yptools/help/yp_help'
|
3
3
|
require_relative 'yptools/log/yp_log'
|
4
4
|
require_relative 'yptools/install/yp_install'
|
5
|
+
require_relative 'yptools/update/yp_update'
|
6
|
+
require_relative 'yptools/xcodeproj/yp_xcodeproj'
|
7
|
+
require_relative 'yptools/file/yp_updatecreatedate'
|
5
8
|
|
6
9
|
class YPTools
|
7
10
|
|
8
11
|
def self.cmd_dispatch(argvs)
|
9
12
|
cmd = argvs[0]
|
10
13
|
case cmd
|
14
|
+
when 'install'
|
15
|
+
if argvs.size > 1
|
16
|
+
name = argvs[1]
|
17
|
+
self.install name
|
18
|
+
else
|
19
|
+
yp_log_fail "'yptools install ..' 参数缺失"
|
20
|
+
self.help
|
21
|
+
end
|
11
22
|
when 'help'
|
12
23
|
self.help
|
24
|
+
when 'ufct'
|
25
|
+
self.ufct
|
13
26
|
when 'mgc'
|
14
27
|
if argvs.size > 1
|
15
28
|
suffix = argvs[1]
|
@@ -18,12 +31,14 @@ class YPTools
|
|
18
31
|
yp_log_fail "'yptools mgc ..' 参数缺失"
|
19
32
|
self.help
|
20
33
|
end
|
21
|
-
when '
|
34
|
+
when 'update'
|
35
|
+
self.update
|
36
|
+
when 'xpj'
|
22
37
|
if argvs.size > 1
|
23
|
-
|
24
|
-
self.
|
38
|
+
cmd = argvs[1]
|
39
|
+
self.xpj cmd
|
25
40
|
else
|
26
|
-
yp_log_fail "'yptools
|
41
|
+
yp_log_fail "'yptools xpj ..' 参数缺失"
|
27
42
|
self.help
|
28
43
|
end
|
29
44
|
else
|
@@ -36,6 +51,12 @@ class YPTools
|
|
36
51
|
YPHelp.message
|
37
52
|
end
|
38
53
|
|
54
|
+
def self.ufct
|
55
|
+
path = `pwd`
|
56
|
+
path = path.sub("\n","")
|
57
|
+
yp_updatereateDate path
|
58
|
+
end
|
59
|
+
|
39
60
|
def self.mgc(suffix)
|
40
61
|
yp_tools_method_makeGarbage suffix
|
41
62
|
end
|
@@ -44,8 +65,23 @@ class YPTools
|
|
44
65
|
YPInstall.install(name)
|
45
66
|
end
|
46
67
|
|
68
|
+
def self.update
|
69
|
+
YPUpdate.update
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.xpj(cmd)
|
73
|
+
YPXcodeproj.xcodeproj(cmd)
|
74
|
+
end
|
75
|
+
|
47
76
|
end
|
48
77
|
|
78
|
+
|
79
|
+
# xcode自动添加文件 > xcodeproj
|
80
|
+
# 自动生成xcode icon
|
81
|
+
# 垃圾代码自动添加
|
82
|
+
# 自动打包功能
|
83
|
+
# SDK自动生成
|
84
|
+
|
49
85
|
#puts "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
50
86
|
#
|
51
87
|
#path = "/Users/Hansen/Desktop/QMKKXProduct"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yptools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- chenghengsheng
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,10 +90,13 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- bin/yptools
|
92
92
|
- lib/yptools.rb
|
93
|
+
- lib/yptools/file/yp_updatecreatedate.rb
|
93
94
|
- lib/yptools/help/yp_help.rb
|
94
95
|
- lib/yptools/install/yp_install.rb
|
95
96
|
- lib/yptools/log/yp_log.rb
|
96
97
|
- lib/yptools/mgc/yp_makegarbagecode.rb
|
98
|
+
- lib/yptools/update/yp_update.rb
|
99
|
+
- lib/yptools/xcodeproj/yp_xcodeproj.rb
|
97
100
|
homepage: https://github.com/HansenCCC/YPTools.git
|
98
101
|
licenses:
|
99
102
|
- MIT
|
@@ -113,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
116
|
- !ruby/object:Gem::Version
|
114
117
|
version: '0'
|
115
118
|
requirements: []
|
116
|
-
rubygems_version: 3.0.
|
119
|
+
rubygems_version: 3.0.9
|
117
120
|
signing_key:
|
118
121
|
specification_version: 4
|
119
122
|
summary: YPTools!
|