VictoriaFreSh 2020.7.43 → 2020.8.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/victoriafresh.rb +50 -25
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cd9a3ba2ec266174958ab7fed3a2dfba2656ffb0b0833742fb91fe078a28617
4
- data.tar.gz: 44f60f5f60c7d0126a5994e1ba99afa435a2c153a4a84d46dd9406ddf0bbb9b1
3
+ metadata.gz: f11c77fa1613f7abb1115e42cc3803c042efc756346c0053d17a8aa33a1a3589
4
+ data.tar.gz: e45655df3304cee4c976cb663734cb9fd75a373369c16ceb06fb0eb78edbd334
5
5
  SHA512:
6
- metadata.gz: 965aea54528d639258d17c780a28160fb33d4043f026eb000c3c1ad51e5b11960c3655b2b5b96ad1c1fe02e926417603560eadbaca2d42b436380573883ce233
7
- data.tar.gz: ae2bbe7ab8f2a894af168acbebbe9e6861bd2e46baf5fe19d65049d986575848f3d27fe9fbf6e0827e9c604d1814b21e26e3921737e5455601c6405a32bac8eb
6
+ metadata.gz: 1227d165836ad8b3c3d19fd1eb91f886d3cd7401cc087d5c0e4fd6c22208573f79bbd222422496465524975455315aebea5648b8aed6b7a9c0bf188d08abd4d1
7
+ data.tar.gz: c7aa3118a9204ca443e70c4b67552c8bdd17f998f5ee45188b097f2a1da40998e61945d7cc09f96e019acd43b2861b8e840d3dce266f551539e45d2ae3ded669
@@ -35,10 +35,22 @@ class VictoriaFresh
35
35
 
36
36
  end #writeFile(pathPrefix, packagedFile, contentString) #写入文件
37
37
 
38
- def getTimeObject(packagedFile) #构造时间戳对象
39
- # puts packagedFile.timestamp #Debug
40
- puts packagedFile['timestamp'] #Debug
38
+ #创建符号链接
39
+ def makeSymlink(pathPrefix, packagedFile, contentString)
40
+ victoriaFreshData=contentString[ packagedFile['file_start_index'], packagedFile['file_length'] ] #获取内容
41
+
42
+ pathToMake=pathPrefix + '/' + packagedFile['name'] #构造文件名
41
43
 
44
+ # victoriaFreshDataFile=File.new(pathToMake , "wb") #数据文件。
45
+ # victoriaFreshDataFile.syswrite(victoriaFreshData) #写入文件。
46
+ # victoriaFreshDataFile.close #关闭文件。
47
+ #
48
+ # FileUtils.touch pathToMake, :mtime => timeObject #设置修改时间
49
+
50
+ FileUtils.symlink(victoriaFreshData, pathToMake, force: true) #创建符号链接
51
+ end #def makeSymlink(pathPrefix, packagedFile, contentString) #创建符号链接
52
+
53
+ def getTimeObject(packagedFile) #构造时间戳对象
42
54
  # seconds=packagedFile.timestamp.seconds #获取秒数
43
55
  seconds=packagedFile['timestamp']['seconds'] #获取秒数
44
56
 
@@ -80,6 +92,9 @@ class VictoriaFresh
80
92
  # if packagedFile.is_file #是文件,则直接写入文件
81
93
  if packagedFile['is_file'] #是文件,则直接写入文件
82
94
  writeFile(pathPrefix, packagedFile, contentString) #写入文件
95
+ elsif packagedFile['is_symlink'] #是符号链接,则创建符号链接
96
+ makeSymlink(pathPrefix, packagedFile, contentString) #创建符号链接
97
+ # writeFile(pathPrefix, packagedFile, contentString) #写入文件
83
98
  else #是目录,则创建目录,并递归处理
84
99
  makeDirectory(pathPrefix, packagedFile) #创建目录
85
100
 
@@ -111,43 +126,54 @@ class VictoriaFresh
111
126
 
112
127
  baseName=directoryPathName.basename.to_s #基本文件名。
113
128
 
114
- # packagedFile.name=baseName #设置文件名。
115
129
  packagedFile['name']=baseName #设置文件名。
116
130
 
117
131
  isFile=directoryPathName.file? #是否是文件。
132
+ isSymLink=directoryPathName.symlink? #是否是符号链接
118
133
 
119
- # packagedFile.is_file=isFile #设置属性,是否是文件。
120
134
  packagedFile['is_file']=isFile #设置属性,是否是文件。
121
-
122
- # packagedFile.file_start_index=startIndex #记录文件内容的开始位置。
123
135
  packagedFile['file_start_index']=startIndex #记录文件内容的开始位置。
124
136
 
125
-
126
- #记录时间戳:
127
- mtimeStamp=File.mtime(directoryPath) #获取时间戳
137
+ packagedFile['is_symlink']=isSymLink #设置属性,是否是符号链接
138
+
128
139
  puts directoryPath #Dbug.
129
- puts mtimeStamp #Debug
130
- puts mtimeStamp.tv_sec #Debug
131
- puts mtimeStamp.tv_nsec #Debug
132
140
 
133
- # packagedFile.timestamp=Google::Protobuf::Timestamp.new #时间戳
134
- packagedFile['timestamp']={} #时间戳
141
+ #记录时间戳:
142
+ begin #读取时间戳
143
+ mtimeStamp=File.mtime(directoryPath) #获取时间戳
144
+ # puts mtimeStamp #Debug
135
145
 
136
- # packagedFile.timestamp.seconds=mtimeStamp.tv_sec #设置秒数
137
- packagedFile['timestamp']['seconds']=mtimeStamp.tv_sec #设置秒数
146
+ packagedFile['timestamp']={} #时间戳
147
+ packagedFile['timestamp']['seconds']=mtimeStamp.tv_sec #设置秒数
148
+ packagedFile['timestamp']['nanos']=mtimeStamp.tv_nsec #设置纳秒数
149
+
150
+ rescue Errno::ENOENT
138
151
 
152
+ end #begin #读取时间戳
139
153
 
140
- # packagedFile.timestamp.nanos=mtimeStamp.tv_nsec #设置纳秒数
141
- packagedFile['timestamp']['nanos']=mtimeStamp.tv_nsec #设置纳秒数
142
154
 
143
155
  if (isFile) #是文件,不用再列出其子文件了。
144
- # packagedFile.file_length=directoryPathName.size #记录文件的内容长度。
145
156
  packagedFile['file_length']=directoryPathName.size #记录文件的内容长度。
146
157
 
147
158
  #读取文件内容:
148
159
  fileToReadContent=File.new(directoryPath,"rb") #创建文件。
149
160
  contentString=fileToReadContent.read #全部读取。
150
161
 
162
+ # puts("encoding: #{contentString.encoding}") #Debug.
163
+ elsif (isSymLink) #是符号链接
164
+ # puts("sub file: #{directoryPathName}, class: #{directoryPathName.class}, symlink: #{directoryPathName.symlink?}, expand_path: #{directoryPathName.expand_path}, file?: #{directoryPathName.file?}, read link: #{directoryPathName.readlink}") #Debug.
165
+
166
+ linkTarget=directoryPathName.readlink #获取链接目标
167
+
168
+ # 待续,设置内容长度。符号链接字符串的长度
169
+ packagedFile['file_length']=linkTarget.to_s.bytesize #记录文件的内容长度。
170
+
171
+ #读取文件内容:
172
+ # fileToReadContent=File.new(directoryPath,"rb") #创建文件。
173
+ contentString=StringIO.new(linkTarget.to_s).binmode.read #全部读取。
174
+ # contentString=linkTarget.to_s.encode('UTF-8') #全部读取。
175
+ puts("encoding: #{contentString.encoding}") #Debug.
176
+ puts("content string: #{contentString}") #Debug
151
177
  else #是目录。
152
178
  contentString="" #容纳内容的字符串。
153
179
  subFileStartIndex=startIndex #子文件的起始位置,以此目录的起始位置为基准。
@@ -156,20 +182,19 @@ class VictoriaFresh
156
182
  packagedFile['file_length']=0 #本目录的内容长度。
157
183
 
158
184
  directoryPathName.each_child do |subFile| #一个个文件地处理。
159
- realPath=subFile.realpath #获取绝对路径。
160
-
185
+ # puts("sub file: #{subFile}, class: #{subFile.class}, symlink: #{subFile.symlink?}, expand_path: #{subFile.expand_path}, file?: #{subFile.file?}") #Debug.
186
+ realPath=subFile.expand_path #获取绝对路径。
161
187
 
162
188
  packagedSubFile,subFileContent=checkOnce(realPath,subFileStartIndex) #打包这个子文件。
163
189
 
164
- # packagedFile.sub_files << packagedSubFile #加入到子文件列表中。
165
190
  packagedFile['sub_files'] << packagedSubFile #加入到子文件列表中。
166
191
 
192
+ # puts("sub file content: #{subFileContent}") #Debug
193
+
167
194
  contentString = contentString + subFileContent #串接文件内容。
168
195
 
169
- # subFileStartIndex+=packagedSubFile.file_length #记录打包的子文件的长度,更新下一个要打包的子文件的起始位置。
170
196
  subFileStartIndex+=packagedSubFile['file_length'] #记录打包的子文件的长度,更新下一个要打包的子文件的起始位置。
171
197
 
172
- # packagedFile.file_length+=packagedSubFile.file_length #随着子文件的打包而更新本目录的总长度。
173
198
  packagedFile['file_length']+=packagedSubFile['file_length'] #随着子文件的打包而更新本目录的总长度。
174
199
  end #directoryPathName.each_child do |subFile| #一个个文件地处理。
175
200
  end #if (isFile) #是文件,不用再列出其子文件了。
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: VictoriaFreSh
3
3
  version: !ruby/object:Gem::Version
4
- version: 2020.7.43
4
+ version: 2020.8.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hxcan Cai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-02 00:00:00.000000000 Z
11
+ date: 2020-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cbor