VictoriaFreSh 2020.7.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: fc6cfc97b686d61a5afc8d69c5f9e478af9f33fc6437fcbfdd4d45f82da63fb3
4
+ data.tar.gz: f599c4a3f99706742e140ae37b88684b151587887fe13e71a7e98bb5bbf91def
5
+ SHA512:
6
+ metadata.gz: e1c3ff37bfa37c3065e1028b9c2e00d4ae4f772b67c79552c3effd3a88ee54de4804975b3979d62d961d88b530f7150cf7fa7872bc9ce3b690a9ae9287c8a387
7
+ data.tar.gz: 91188412fbe776a00245a20344416597d8286577719054f0c07cccb30d81cb433d14f08992c69cf8e363225b421b516d8ebe736359e23d7a22a0e8db28d29403
@@ -0,0 +1,15 @@
1
+ ## Generated from filemessage.proto for com.stupidbeauty.victoriafresh
2
+ require "beefcake"
3
+
4
+
5
+ class FileMessage
6
+ include Beefcake::Message
7
+ end
8
+
9
+ class FileMessage
10
+ optional :name, :string, 1
11
+ repeated :sub_files, FileMessage, 2
12
+ optional :is_file, :bool, 3
13
+ optional :file_start_index, :int32, 5
14
+ optional :file_length, :int32, 6
15
+ end
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'pathname'
4
+ require File.dirname(__FILE__)+'/VictoriaFreSh/filemessage.pb.rb'
5
+
6
+ class VictoriaFresh
7
+ def checkOnce(directoryPath,startIndex=0) #打包一个目录树。
8
+ packagedFile=FileMessage.new #创建文件消息对象。
9
+ packagedFile.sub_files=[] #初始化数组。
10
+
11
+ directoryPathName=Pathname.new(directoryPath) #构造路径名字对象。
12
+
13
+ baseName=directoryPathName.basename.to_s #基本文件名。
14
+
15
+ packagedFile.name=baseName #设置文件名。
16
+
17
+ isFile=directoryPathName.file? #是否是文件。
18
+ packagedFile.is_file=isFile #设置属性,是否是文件。
19
+ packagedFile.file_start_index=startIndex #记录文件内容的开始位置。
20
+
21
+ if (isFile) #是文件,不用再列出其子文件了。
22
+ packagedFile.file_length=directoryPathName.size #记录文件的内容长度。
23
+
24
+ #读取文件内容:
25
+ fileToReadContent=File.new(directoryPath,"rb") #创建文件。
26
+ contentString=fileToReadContent.read #全部读取。
27
+
28
+ else #是目录。
29
+ contentString="" #容纳内容的字符串。
30
+ subFileStartIndex=startIndex #子文件的起始位置,以此目录的起始位置为基准。
31
+ packagedFile.file_length=0 #本目录的内容长度。
32
+
33
+ directoryPathName.each_child do |subFile| #一个个文件地处理。
34
+ realPath=subFile.realpath #获取绝对路径。
35
+
36
+
37
+ packagedSubFile,subFileContent=checkOnce(realPath,subFileStartIndex) #打包这个子文件。
38
+
39
+ packagedFile.sub_files << packagedSubFile #加入到子文件列表中。
40
+
41
+ contentString = contentString + subFileContent #串接文件内容。
42
+
43
+ subFileStartIndex+=packagedSubFile.file_length #记录打包的子文件的长度,更新下一个要打包的子文件的起始位置。
44
+
45
+ packagedFile.file_length+=packagedSubFile.file_length #随着子文件的打包而更新本目录的总长度。
46
+ end #directoryPathName.each_child do |subFile| #一个个文件地处理。
47
+ end #if (isFile) #是文件,不用再列出其子文件了。
48
+
49
+ return packagedFile,contentString #返回打包之后的对象。和文件内容字节数组。
50
+ end #def downloadOne #下载一个视频。
51
+ end
52
+
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # require 'pathname'
4
+ # require File.dirname(__FILE__)+'/filemessage.pb.rb'
5
+ require 'VictoriaFreSh'
6
+
7
+ if (ARGV.empty? ) #未指定命令行参数。
8
+ else #指定了命令行参数。
9
+ $rootPath=ARGV[0] #记录要打包的目录树的根目录。
10
+
11
+ $clipDownloader=VictoriaFresh.new #创建下载器。
12
+
13
+ victoriaFresh,victoriaFreshData=$clipDownloader.checkOnce($rootPath) #打包该目录树。
14
+
15
+ #利用protobuf打包成字节数组:
16
+ replyByteArray="" #回复时使用的字节数组。
17
+ victoriaFresh.encode(replyByteArray) #打包成字节数组。
18
+
19
+ victoriaFreshFile=File.new("victoriafresh.v","wb") #创建文件。
20
+ victoriaFreshFile.syswrite(replyByteArray) #写入文件。
21
+
22
+ victoriaFreshFile.close #关闭文件。
23
+
24
+ victoriaFreshDataFile=File.new("victoriafreshdata.v","wb") #数据文件。
25
+ victoriaFreshDataFile.syswrite(victoriaFreshData) #写入文件。
26
+ victoriaFreshDataFile.close #关闭文件。
27
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: VictoriaFreSh
3
+ version: !ruby/object:Gem::Version
4
+ version: 2020.7.21
5
+ platform: ruby
6
+ authors:
7
+ - Hxcan Cai
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: beefcake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.0
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.2'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.0
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.2'
33
+ description: Virtual file system.
34
+ email: caihuosheng@gmail.com
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - lib/VictoriaFreSh/filemessage.pb.rb
40
+ - lib/victoriafresh.rb
41
+ - victoriafresh.example.rb
42
+ homepage: http://rubygems.org/gems/VictoriaFreSh
43
+ licenses:
44
+ - MIT
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubygems_version: 3.0.3
62
+ signing_key:
63
+ specification_version: 4
64
+ summary: VictoriaFreSh
65
+ test_files: []