EXtremeZip 2021.5.6

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.
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: []