EXtremeZip 2021.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/bin/exuz +12 -0
  3. data/bin/exz +12 -0
  4. data/lib/extremeunzip.zzaqsu.rb +156 -0
  5. metadata +81 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6d8b532725ca8997ac89e9e2474d6470519599990f46df267f3d8ee4b947475c
4
+ data.tar.gz: 64396057023279e0c32aed5939b4426f993bb22a541ddba869f74eac11390852
5
+ SHA512:
6
+ metadata.gz: 2338e30f71b1fb13f66100134196e10bb36ae1469b81b17c6103bf7cadfbc654af57862eb6340c49a6686df96cfde3b75d961c6791a8be3843a697622f49daba
7
+ data.tar.gz: 6962e359806dd2e1471a1bafcf5d0f6753ff0d3938950028ffbc29886c8c725cf298c6e68506f0602e935cd445ea26d5774eed5c4f849099285caa5721385ddb
data/bin/exuz ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'extremeunzip.zzaqsu'
4
+
5
+ if (ARGV.empty? ) #未指定命令行参数。
6
+ else #指定了命令行参数。
7
+ $rootPath=ARGV[0] #记录要打包的目录树的根目录。
8
+
9
+ exuzObject=ExtremeUnZip.new #解压对象
10
+
11
+ exuzObject.exuz($rootPath) #解压
12
+ end
data/bin/exz ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'extremezip.zzaqsv'
4
+
5
+ if (ARGV.empty? ) #未指定命令行参数。
6
+ else #指定了命令行参数。
7
+ $rootPath=ARGV[0] #记录要打包的目录树的根目录。
8
+
9
+ exzObject=ExtremeZip.new #创建压缩对象
10
+
11
+ exzObject.exz($rootPath) #压缩
12
+ end
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # require 'pathname'
4
+ # require File.dirname(__FILE__)+'/filemessage.pb.rb'
5
+ require 'victoriafresh'
6
+ require 'cbor'
7
+ require 'lzma'
8
+ require 'get_process_mem'
9
+
10
+ def checkMemoryUsage(lineNumber)
11
+ mem= GetProcessMem.new
12
+
13
+ puts("#{lineNumber} , Memory: #{mem.mb}"); #Debug
14
+
15
+ end #def checkMemoryUsage
16
+
17
+ #根据版本号,提取VFS数据内容
18
+ def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion)
19
+ victoriaFreshData='' #解压后的数据块整体
20
+ dataFileName='victoriafreshdata.w' #数据文件名
21
+ dataFile={} #数据文件对象
22
+
23
+ if (fileVersion==14) #14版本
24
+ compressedVfsData=wholeCbor['vfsData'] #获取压缩后的数据内容
25
+
26
+ victoriaFreshData=LZMA.decompress(compressedVfsData) #解压缩数据内容
27
+
28
+ dataFile=File.open(dataFileName, 'wb') #打开文件
29
+
30
+ dataFile.syswrite(victoriaFreshData) #写入内容
31
+
32
+ dataFile.close #关闭文件
33
+ elsif (fileVersion>=30) #30以上版本
34
+ compressedVfsDataList=wholeCbor['vfsDataList'] #获取压缩后的数据块列表
35
+
36
+ puts("data block amont: #{compressedVfsDataList.length}") #Debug
37
+
38
+ dataBlockCounter=0 #Data block counter
39
+
40
+ dataFile=File.open(dataFileName, 'wb') #打开文件
41
+
42
+
43
+ compressedVfsDataList.each do |currentCompressed| #一块块地解压
44
+ puts("data block counter: #{dataBlockCounter}") #Debug
45
+ checkMemoryUsage(34)
46
+
47
+ currentRawData=LZMA.decompress(currentCompressed) #解压这一块
48
+
49
+ dataFile.syswrite(currentRawData) #写入内容
50
+
51
+ # victoriaFreshData=victoriaFreshData+currentRawData #追加
52
+ # victoriaFreshData << currentRawData #追加
53
+
54
+ puts("byte size: #{victoriaFreshData.bytesize}") #debug.
55
+
56
+ dataBlockCounter=dataBlockCounter+1 #count
57
+ end #compressedVfsDataList.each do |currentCompressed|
58
+
59
+ dataFile.close #关闭文件
60
+ end #if (fileVersion==14) #14版本
61
+
62
+ return dataFileName #返回解压后的数据块整体
63
+ end #def extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
64
+
65
+ def extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
66
+ victoriaFreshData='' #解压后的数据块整体
67
+
68
+ if (fileVersion==14) #14版本
69
+ compressedVfsData=wholeCbor['vfsData'] #获取压缩后的数据内容
70
+
71
+ victoriaFreshData=LZMA.decompress(compressedVfsData) #解压缩数据内容
72
+ elsif (fileVersion>=30) #30以上版本
73
+ compressedVfsDataList=wholeCbor['vfsDataList'] #获取压缩后的数据块列表
74
+
75
+ puts("data block amont: #{compressedVfsDataList.length}") #Debug
76
+
77
+ dataBlockCounter=0 #Data block counter
78
+
79
+ compressedVfsDataList.each do |currentCompressed| #一块块地解压
80
+ puts("data block counter: #{dataBlockCounter}") #Debug
81
+ checkMemoryUsage(34)
82
+
83
+ currentRawData=LZMA.decompress(currentCompressed) #解压这一块
84
+
85
+ # victoriaFreshData=victoriaFreshData+currentRawData #追加
86
+ victoriaFreshData << currentRawData #追加
87
+
88
+ puts("byte size: #{victoriaFreshData.bytesize}") #debug.
89
+
90
+ dataBlockCounter=dataBlockCounter+1 #count
91
+ end #compressedVfsDataList.each do |currentCompressed|
92
+ end #if (fileVersion==14) #14版本
93
+
94
+ return victoriaFreshData #返回解压后的数据块整体
95
+ end # extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
96
+
97
+ class ExtremeUnZip
98
+ #解压
99
+ def exuz(rootPath)
100
+
101
+
102
+ wholeFileContent=File.read(rootPath) #最终文件内容
103
+
104
+ # puts wholeFileContent #Debug.
105
+ checkMemoryUsage(60)
106
+
107
+ puts wholeFileContent.class #debug
108
+
109
+ wholeCborByteArray=wholeFileContent[4..-1] #从第5个到末尾
110
+ checkMemoryUsage(65)
111
+
112
+
113
+ # puts wholeCborByteArray #Debug.
114
+
115
+ checkMemoryUsage(70)
116
+ wholeCbor=CBOR.decode(wholeCborByteArray) #解码
117
+ # wholeCbor=wholeCborByteArray.from_cbor #解码CBOR
118
+
119
+ # puts wholeCbor #Debug.
120
+ checkMemoryUsage(75)
121
+
122
+ fileVersion=wholeCbor['version'] #获取版本号
123
+
124
+ puts 'fileVersion:' #Debug
125
+ checkMemoryUsage(80)
126
+ puts fileVersion #Debug.
127
+
128
+
129
+ if (fileVersion<14) #版本号过小
130
+ checkMemoryUsage(85)
131
+ puts 'file version too old' #报告错误
132
+ else #版本号够大
133
+ compressedVfsMenu=wholeCbor['vfsMenu'] #获取压缩后的目录内容
134
+
135
+ checkMemoryUsage(90)
136
+ replyByteArray=LZMA.decompress(compressedVfsMenu) #解码目录VFS字节数组内容
137
+
138
+ # puts replyByteArray #Debug
139
+
140
+ checkMemoryUsage(95)
141
+ # victoriaFreshData=extractVfsDataWithVersion(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
142
+ victoriaFreshDataFile=extractVfsDataWithVersionExternalFile(wholeCbor, fileVersion) #根据版本号,提取VFS数据内容
143
+
144
+ # puts victoriaFreshData #Debug
145
+
146
+ checkMemoryUsage(100)
147
+ $clipDownloader=VictoriaFresh.new #创建下载器。
148
+
149
+
150
+ $clipDownloader.releaseFilesExternalDataFile(replyByteArray, victoriaFreshDataFile) #释放各个文件
151
+ checkMemoryUsage(105)
152
+ end #if (fileVersion<14) #版本号过小
153
+
154
+ end #def exuz(rootPath)
155
+ end #class ExtremeUnZip
156
+
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: EXtremeZip
3
+ version: !ruby/object:Gem::Version
4
+ version: 2021.5.6
5
+ platform: ruby
6
+ authors:
7
+ - Hxcan Cai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-05-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: VictoriaFreSh
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2021.5.6
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: 2021.5.6
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 2021.5.6
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: 2021.5.6
33
+ - !ruby/object:Gem::Dependency
34
+ name: ruby-lzma
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.4.3
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.4.3
47
+ description: Extreme zip.
48
+ email: caihuosheng@gmail.com
49
+ executables:
50
+ - exz
51
+ - exuz
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - bin/exuz
56
+ - bin/exz
57
+ - lib/extremeunzip.zzaqsu.rb
58
+ homepage: http://rubygems.org/gems/EXtremeZip
59
+ licenses:
60
+ - MIT
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubygems_version: 3.0.3
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: EXtremeZip
81
+ test_files: []