yptools 1.0.6 → 1.0.8
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 +4 -4
- data/lib/yptools/file/yp_updatecreatedate.rb +69 -0
- data/lib/yptools/help/yp_help.rb +4 -0
- data/lib/yptools/package/yp_package.rb +189 -0
- data/lib/yptools/xcodeproj/yp_xcodeproj.rb +2 -40
- data/lib/yptools.rb +36 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fe362757685013ee50d5bbca524fc5e08dd59f9f64a3a4549b7d939d3704fb2
|
4
|
+
data.tar.gz: 8e8e02e07fc6c9ad0ced4a9802a2e2b5da2820e20774ad37932c0765e4059ec2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f199a39f86c7a4853203c0fb335a58c987caa0c57d3bd2fff2b23bf354389b6e92c7a3270cfcc17de093d442078a60e71c9ce9fafe4e6fe93e0db21b43055d0
|
7
|
+
data.tar.gz: 1a50b8e355361882faf85a1db7e72909e0df6494e3ecf35d2a60b322f20386f9a7ec8dde04f57c30e6b564142142c119a131f2801b6b52b47e7d7d07ebc42a66
|
@@ -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,12 @@ class YPHelp
|
|
7
7
|
|
8
8
|
mgc: use [yptools mgc suffix] 在当前目录生成垃圾代码(当前目录需要有.xcworkspace或者.xcodeproj目录)
|
9
9
|
|
10
|
+
showipa: use [yptools showipa ...] 用于解析ipa文件
|
11
|
+
|
10
12
|
update: use [yptools update] 更新yptools
|
11
13
|
|
14
|
+
ufct: use [yptools ufct] 更新当前目录下面文件后缀为.h|.m 的文件创建时间
|
15
|
+
|
12
16
|
xpj: use [yptools xpj ...] use xcodeproj api
|
13
17
|
use [yptools xpj check] 检查当前目录项目文件是否存在引用的问题
|
14
18
|
|
@@ -0,0 +1,189 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'colored'
|
5
|
+
require 'plist'
|
6
|
+
require 'json'
|
7
|
+
require_relative '../log/yp_log'
|
8
|
+
require_relative '../mgc/yp_makegarbagecode'
|
9
|
+
|
10
|
+
|
11
|
+
class YPPackage
|
12
|
+
|
13
|
+
def self.analysis(filePath, delete = 1)
|
14
|
+
|
15
|
+
fileName = File.basename(filePath)
|
16
|
+
fileBasename = File.basename(filePath, ".*")
|
17
|
+
fileSuffix = File.extname(filePath)
|
18
|
+
fileDirname = File.dirname(filePath)
|
19
|
+
|
20
|
+
yp_path = `pwd`
|
21
|
+
yp_path = yp_path.sub("\n","")
|
22
|
+
|
23
|
+
# yp_outPath = yp_path + '/Payload + ' + Time.new.inspect
|
24
|
+
yp_outPath = fileDirname + '/ipa-' + Time.new.strftime("%Y%m%d%H%M%S-%L")
|
25
|
+
yp_method_mkdir yp_outPath
|
26
|
+
yp_log_doing "将ipa解压到临时目录#{yp_outPath}"
|
27
|
+
`tar -xf #{filePath} -C #{yp_outPath}`
|
28
|
+
|
29
|
+
yp_resourceFile = "#{yp_outPath}/Payload/"
|
30
|
+
|
31
|
+
yp_resourceFile_app = ""
|
32
|
+
Dir.entries(yp_resourceFile).each do |sub|
|
33
|
+
if sub.end_with?(".app")
|
34
|
+
yp_resourceFile_app = yp_resourceFile + sub;
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if yp_resourceFile_app.length == 0
|
39
|
+
yp_log_fail "解析失败,请检查压缩包是否是ipa文件"
|
40
|
+
return
|
41
|
+
end
|
42
|
+
|
43
|
+
puts yp_resourceFile_app
|
44
|
+
|
45
|
+
yp_infoPlistName = "Info.plist"
|
46
|
+
yp_infoPlistPath = ""
|
47
|
+
|
48
|
+
yp_mobileprovisionName = ".mobileprovision"
|
49
|
+
yp_mobileprovisionPath = ""
|
50
|
+
|
51
|
+
Dir.entries(yp_resourceFile_app).each do |sub|
|
52
|
+
if sub == yp_infoPlistName
|
53
|
+
yp_infoPlistPath = yp_resourceFile_app + "/" + sub;
|
54
|
+
end
|
55
|
+
if sub.end_with?(yp_mobileprovisionName)
|
56
|
+
yp_mobileprovisionPath = yp_resourceFile_app + "/" + sub;
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
puts yp_infoPlistPath
|
61
|
+
puts yp_mobileprovisionPath
|
62
|
+
|
63
|
+
yp_mobileprovisionPlistPath = yp_resourceFile_app + "/" + "mobileprovision.plist"
|
64
|
+
# 解析描述文件
|
65
|
+
yp_mobileprovisionDatum = `security cms -D -i #{yp_mobileprovisionPath}`
|
66
|
+
|
67
|
+
puts yp_mobileprovisionPlistPath
|
68
|
+
|
69
|
+
yp_plistCreateFile = File.new(yp_mobileprovisionPlistPath,"w+")
|
70
|
+
yp_plistCreateFile.syswrite(yp_mobileprovisionDatum)
|
71
|
+
yp_plistCreateFile.close
|
72
|
+
|
73
|
+
yp_log_success "============================================================"
|
74
|
+
|
75
|
+
yp_plist = Plist.parse_xml(yp_mobileprovisionPlistPath)
|
76
|
+
|
77
|
+
yp_appIDName = yp_plist["AppIDName"]
|
78
|
+
yp_applicationIdentifierPrefix = yp_plist["ApplicationIdentifierPrefix"]
|
79
|
+
yp_creationDate = yp_plist["CreationDate"]
|
80
|
+
yp_platform = yp_plist["Platform"]
|
81
|
+
yp_isXcodeManaged = yp_plist["IsXcodeManaged"]
|
82
|
+
yp_developerCertificates = yp_plist["DeveloperCertificates"]
|
83
|
+
yp_DER_Encoded_Profile = yp_plist["DER-Encoded-Profile"]
|
84
|
+
yp_entitlements = yp_plist["Entitlements"]
|
85
|
+
yp_expirationDate = yp_plist["ExpirationDate"]
|
86
|
+
yp_name = yp_plist["Name"]
|
87
|
+
yp_provisionsAllDevices = yp_plist["ProvisionsAllDevices"]
|
88
|
+
yp_teamIdentifier = yp_plist["TeamIdentifier"]
|
89
|
+
yp_teamName = yp_plist["TeamName"]
|
90
|
+
yp_timeToLive = yp_plist["TimeToLive"]
|
91
|
+
yp_uUID = yp_plist["UUID"]
|
92
|
+
yp_version = yp_plist["Version"]
|
93
|
+
yp_provisionedDevices = yp_plist["ProvisionedDevices"]
|
94
|
+
|
95
|
+
yp_log_success " 输出描述文件embedded.mobileprovision"
|
96
|
+
puts yp_mobileprovisionPlistPath
|
97
|
+
puts ''
|
98
|
+
yp_log_doing " 程序名称:\t#{yp_appIDName}"
|
99
|
+
yp_log_doing " 团队名称:\t#{yp_teamName}"
|
100
|
+
yp_log_doing " 创建时间:\t#{yp_creationDate}"
|
101
|
+
yp_log_fail " 过期时间:\t#{yp_expirationDate}"
|
102
|
+
yp_log_doing " 系统平台:\t#{yp_platform}"
|
103
|
+
|
104
|
+
if yp_provisionedDevices.class == Array
|
105
|
+
yp_log_doing " \n udids"
|
106
|
+
for device in yp_provisionedDevices
|
107
|
+
yp_log_doing " #{device}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# yp_log_msg " 标识符🚀:\t#{yp_applicationIdentifierPrefix}"
|
112
|
+
# yp_log_msg " 证书证书:\t#{yp_developerCertificates}"
|
113
|
+
# yp_log_msg " 证书证书:\t#{yp_DER_Encoded_Profile}"
|
114
|
+
# yp_log_doing " 随便看看:\t#{yp_entitlements}"
|
115
|
+
# yp_log_msg " 名字名字:\t#{yp_name}"
|
116
|
+
# yp_log_msg " 支持设备:\t#{yp_provisionsAllDevices}"
|
117
|
+
# yp_log_msg " 团队标识:\t#{yp_teamIdentifier}"
|
118
|
+
# puts " 生存时间:\t#{yp_timeToLive}"
|
119
|
+
# puts " uuid🚀🚀:\t#{yp_uUID}"
|
120
|
+
# puts " 版本号🚀:\t#{yp_version}"
|
121
|
+
puts ''
|
122
|
+
yp_log_success "============================================================"
|
123
|
+
|
124
|
+
# puts yp_infoPlistPath
|
125
|
+
|
126
|
+
# 解析加密之后的plist文件
|
127
|
+
`plutil -convert json #{yp_infoPlistPath}`
|
128
|
+
yp_info_plist = `cat #{yp_infoPlistPath}`
|
129
|
+
yp_info_plist_hash = JSON.parse(yp_info_plist)
|
130
|
+
yp_log_success " 输出Info.plist文件#{yp_infoPlistName}"
|
131
|
+
puts yp_infoPlistPath
|
132
|
+
|
133
|
+
puts ''
|
134
|
+
yp_log_doing " CFBundleDisplayName:\t#{yp_info_plist_hash['CFBundleDisplayName']}"
|
135
|
+
yp_log_doing " CFBundleIdentifier:\t#{yp_info_plist_hash['CFBundleIdentifier']}"
|
136
|
+
yp_log_doing " CFBundleVersion:\t#{yp_info_plist_hash['CFBundleVersion']}"
|
137
|
+
# if yp_info_plist_hash['NSContactsUsageDescription']
|
138
|
+
# yp_log_doing " NSContactsUsageDescription:\t#{yp_info_plist_hash['NSContactsUsageDescription']}"
|
139
|
+
# end
|
140
|
+
# if yp_info_plist_hash['NSPhotoLibraryUsageDescription']
|
141
|
+
# yp_log_doing " NSPhotoLibraryUsageDescription:\t#{yp_info_plist_hash['NSPhotoLibraryUsageDescription']}"
|
142
|
+
# end
|
143
|
+
# if yp_info_plist_hash['NSBluetoothAlwaysUsageDescription']
|
144
|
+
# yp_log_doing " NSBluetoothAlwaysUsageDescription:\t#{yp_info_plist_hash['NSBluetoothAlwaysUsageDescription']}"
|
145
|
+
# end
|
146
|
+
# if yp_info_plist_hash['NSLocationAlwaysAndWhenInUseUsageDescription']
|
147
|
+
# yp_log_doing " NSLocationAlwaysAndWhenInUseUsageDescription:\t#{yp_info_plist_hash['NSLocationAlwaysAndWhenInUseUsageDescription']}"
|
148
|
+
# end
|
149
|
+
# if yp_info_plist_hash['NSLocationWhenInUseUsageDescription']
|
150
|
+
# yp_log_doing " NSLocationWhenInUseUsageDescription:\t#{yp_info_plist_hash['NSLocationWhenInUseUsageDescription']}"
|
151
|
+
# end
|
152
|
+
# if yp_info_plist_hash['NSCameraUsageDescription']
|
153
|
+
# yp_log_doing " NSCameraUsageDescription:\t#{yp_info_plist_hash['NSCameraUsageDescription']}"
|
154
|
+
# end
|
155
|
+
# if yp_info_plist_hash['NSLocationAlwaysUsageDescription']
|
156
|
+
# yp_log_doing " NSLocationAlwaysUsageDescription:\t#{yp_info_plist_hash['NSLocationAlwaysUsageDescription']}"
|
157
|
+
# end
|
158
|
+
# if yp_info_plist_hash['NSBluetoothPeripheralUsageDescription']
|
159
|
+
# yp_log_doing " NSBluetoothPeripheralUsageDescription:\t#{yp_info_plist_hash['NSBluetoothPeripheralUsageDescription']}"
|
160
|
+
# end
|
161
|
+
# if yp_info_plist_hash['NSPhotoLibraryAddUsageDescription']
|
162
|
+
# yp_log_doing " NSPhotoLibraryAddUsageDescription:\t#{yp_info_plist_hash['NSPhotoLibraryAddUsageDescription']}"
|
163
|
+
# end
|
164
|
+
# if yp_info_plist_hash['NSMicrophoneUsageDescription']
|
165
|
+
# yp_log_doing " NSMicrophoneUsageDescription:\t#{yp_info_plist_hash['NSMicrophoneUsageDescription']}"
|
166
|
+
# end
|
167
|
+
# if yp_info_plist_hash['NSMotionUsageDescription']
|
168
|
+
# yp_log_doing " NSMotionUsageDescription:\t#{yp_info_plist_hash['NSMotionUsageDescription']}"
|
169
|
+
# end
|
170
|
+
# if yp_info_plist_hash['NSSiriUsageDescription']
|
171
|
+
# yp_log_doing " NSSiriUsageDescription:\t#{yp_info_plist_hash['NSSiriUsageDescription']}"
|
172
|
+
# end
|
173
|
+
# if yp_info_plist_hash['NSCalendarsUsageDescription']
|
174
|
+
# yp_log_doing " NSCalendarsUsageDescription:\t#{yp_info_plist_hash['NSCalendarsUsageDescription']}"
|
175
|
+
# end
|
176
|
+
# if yp_info_plist_hash['NSFaceIDUsageDescription']
|
177
|
+
# yp_log_doing " NSFaceIDUsageDescription:\t#{yp_info_plist_hash['NSFaceIDUsageDescription']}"
|
178
|
+
# end
|
179
|
+
puts ''
|
180
|
+
yp_log_success "============================================================"
|
181
|
+
|
182
|
+
if delete == 1
|
183
|
+
yp_log_doing "移除临时目录#{yp_outPath}"
|
184
|
+
yp_method_rmdir yp_outPath
|
185
|
+
end
|
186
|
+
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
@@ -16,46 +16,9 @@ class YPXcodeproj
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.message
|
19
|
-
|
20
|
-
# project_path = '/Users/Hansen/Desktop/lehuo/PrivateDiary.xcodeproj'
|
21
|
-
# project = Xcodeproj::Project.open(project_path)
|
22
|
-
#
|
23
|
-
# project.targets.each do |target|
|
24
|
-
# puts target.name
|
25
|
-
# end
|
26
|
-
|
27
|
-
# target = project.targets.first
|
28
|
-
# files = target.source_build_phase.files.to_a.map do |pbx_build_file|
|
29
|
-
# pbx_build_file.file_ref.real_path.to_s
|
30
|
-
# end.select do |path|
|
31
|
-
# path.end_with?(".m", ".mm", ".swift")
|
32
|
-
# end.select do |path|
|
33
|
-
# !File.exists?(path)
|
34
|
-
# end
|
35
|
-
#
|
36
|
-
# files = target.source_build_phase.files.to_a.map do |pbx_build_file|
|
37
|
-
# pbx_build_file.file_ref.real_path.to_s
|
38
|
-
# end.select do |path|
|
39
|
-
# path.end_with?(".m", ".mm", ".swift")
|
40
|
-
# end.select do |path|
|
41
|
-
# !File.exists?(path)
|
42
|
-
# end
|
43
|
-
#
|
44
|
-
# puts files
|
45
|
-
|
46
|
-
# app_target = project.targets.first
|
47
|
-
#
|
48
|
-
# puts app_target
|
49
|
-
# new_group = project.new_group("CHSS")
|
50
|
-
#
|
51
|
-
# header_ref = new_group.new_file('/Users/Hansen/Desktop/CHSS/CoverView+CHSS.h')
|
52
|
-
# implm_ref = new_group.new_file('/Users/Hansen/Desktop/CHSS/CoverView+CHSS.m')
|
53
|
-
# app_target.add_file_references([implm_ref])
|
54
|
-
# project.save()
|
55
|
-
|
19
|
+
|
56
20
|
end
|
57
|
-
|
58
|
-
|
21
|
+
|
59
22
|
def self.check
|
60
23
|
|
61
24
|
yp_log_doing "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
@@ -185,7 +148,6 @@ end
|
|
185
148
|
|
186
149
|
#xcodeproj工程配置脚本化 https://www.jianshu.com/p/67ab2522daa7
|
187
150
|
|
188
|
-
|
189
151
|
## puts project.main_group.path
|
190
152
|
# files_m = target.source_build_phase.files.to_a.map do |pbx_build_file|
|
191
153
|
# pbx_build_file.file_ref.real_path.to_s
|
data/lib/yptools.rb
CHANGED
@@ -1,17 +1,31 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
1
3
|
require_relative 'yptools/mgc/yp_makegarbagecode'
|
2
4
|
require_relative 'yptools/help/yp_help'
|
3
5
|
require_relative 'yptools/log/yp_log'
|
4
6
|
require_relative 'yptools/install/yp_install'
|
5
7
|
require_relative 'yptools/update/yp_update'
|
6
8
|
require_relative 'yptools/xcodeproj/yp_xcodeproj'
|
9
|
+
require_relative 'yptools/file/yp_updatecreatedate'
|
10
|
+
require_relative 'yptools/package/yp_package'
|
7
11
|
|
8
12
|
class YPTools
|
9
13
|
|
10
14
|
def self.cmd_dispatch(argvs)
|
11
15
|
cmd = argvs[0]
|
12
16
|
case cmd
|
17
|
+
when 'install'
|
18
|
+
if argvs.size > 1
|
19
|
+
name = argvs[1]
|
20
|
+
self.install name
|
21
|
+
else
|
22
|
+
yp_log_fail "'yptools install ..' 参数缺失"
|
23
|
+
self.help
|
24
|
+
end
|
13
25
|
when 'help'
|
14
26
|
self.help
|
27
|
+
when 'ufct'
|
28
|
+
self.ufct
|
15
29
|
when 'mgc'
|
16
30
|
if argvs.size > 1
|
17
31
|
suffix = argvs[1]
|
@@ -28,6 +42,17 @@ class YPTools
|
|
28
42
|
yp_log_fail "'yptools install ..' 参数缺失"
|
29
43
|
self.help
|
30
44
|
end
|
45
|
+
when 'showipa'
|
46
|
+
if argvs.size > 2
|
47
|
+
filepath = argvs[1]
|
48
|
+
self.package(filepath,0)
|
49
|
+
elsif argvs.size > 1
|
50
|
+
filepath = argvs[1]
|
51
|
+
self.package filepath
|
52
|
+
else
|
53
|
+
yp_log_fail "'yptools package ..' 参数缺失"
|
54
|
+
self.help
|
55
|
+
end
|
31
56
|
when 'update'
|
32
57
|
self.update
|
33
58
|
when 'xpj'
|
@@ -48,6 +73,12 @@ class YPTools
|
|
48
73
|
YPHelp.message
|
49
74
|
end
|
50
75
|
|
76
|
+
def self.ufct
|
77
|
+
path = `pwd`
|
78
|
+
path = path.sub("\n","")
|
79
|
+
yp_updatereateDate path
|
80
|
+
end
|
81
|
+
|
51
82
|
def self.mgc(suffix)
|
52
83
|
yp_tools_method_makeGarbage suffix
|
53
84
|
end
|
@@ -56,6 +87,10 @@ class YPTools
|
|
56
87
|
YPInstall.install(name)
|
57
88
|
end
|
58
89
|
|
90
|
+
def self.package(filepath, delete = 1)
|
91
|
+
YPPackage.analysis(filepath,delete)
|
92
|
+
end
|
93
|
+
|
59
94
|
def self.update
|
60
95
|
YPUpdate.update
|
61
96
|
end
|
@@ -72,6 +107,7 @@ end
|
|
72
107
|
# 垃圾代码自动添加
|
73
108
|
# 自动打包功能
|
74
109
|
# SDK自动生成
|
110
|
+
# ipa 自动解析
|
75
111
|
|
76
112
|
#puts "🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀";
|
77
113
|
#
|
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.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- chenghengsheng
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,10 +90,12 @@ 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/package/yp_package.rb
|
97
99
|
- lib/yptools/update/yp_update.rb
|
98
100
|
- lib/yptools/xcodeproj/yp_xcodeproj.rb
|
99
101
|
homepage: https://github.com/HansenCCC/YPTools.git
|
@@ -115,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
117
|
- !ruby/object:Gem::Version
|
116
118
|
version: '0'
|
117
119
|
requirements: []
|
118
|
-
rubygems_version: 3.0.
|
120
|
+
rubygems_version: 3.0.3.1
|
119
121
|
signing_key:
|
120
122
|
specification_version: 4
|
121
123
|
summary: YPTools!
|