dir-to-xml 1.0.0 → 1.0.1
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/dir-to-xml.rb +35 -6
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d3847feaade1ff658c8dda0403e10b0a98c6350333b01fc4048e97d86cdcd0d
|
4
|
+
data.tar.gz: 99a0cad18703df51c90405b585a2aeab5820dca22b52d27acba5dc96dc5e1bb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37bee8d677c8a5801715d92d2d0617be2d8b559244d4f58b0d0b6fb0cef37f0e803d1a76214dcc92b09012a6fe5d15b51bfe0949feb0bdaa3af6d9e53721d515
|
7
|
+
data.tar.gz: 60d691388d4e8f46f15307b50e01f4358fad88ced3f6656d29b8be9e1fa408a256f20f641146b8d375041800952818ed752d78043b79d03e4bae93868781d979
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/dir-to-xml.rb
CHANGED
@@ -7,7 +7,7 @@ require 'dxlite'
|
|
7
7
|
|
8
8
|
class DirToXML
|
9
9
|
|
10
|
-
attr_reader :dx
|
10
|
+
attr_reader :dx, :activity
|
11
11
|
|
12
12
|
def initialize(x= '.', recursive: false, index: 'dir.xml', debug: false)
|
13
13
|
|
@@ -29,9 +29,20 @@ class DirToXML
|
|
29
29
|
@path, @index, @recursive = path, index, recursive
|
30
30
|
|
31
31
|
raise "Directory not found." unless File.exists? path
|
32
|
+
|
33
|
+
@dx = DxLite.new(File.join(@path, @index), debug: @debug)
|
32
34
|
|
35
|
+
# has the directory been modified since last time?
|
36
|
+
#
|
37
|
+
if @dx.respond_to? :last_modified and @dx.last_modified.length > 0 then
|
38
|
+
return if Time.parse(@dx.last_modified) >= \
|
39
|
+
File.mtime(File.expand_path(path))
|
40
|
+
end
|
41
|
+
|
42
|
+
puts 'before Dir.glob' if @debug
|
43
|
+
|
33
44
|
a = Dir.glob(File.join(path, "*")).map{|x| File.basename(x) }.sort
|
34
|
-
|
45
|
+
|
35
46
|
a.delete index
|
36
47
|
|
37
48
|
a2 = a.inject([]) do |r, filename|
|
@@ -52,6 +63,23 @@ class DirToXML
|
|
52
63
|
end
|
53
64
|
|
54
65
|
end
|
66
|
+
|
67
|
+
if @dx.respond_to? :last_modified and @dx.last_modified.length > 0 then
|
68
|
+
|
69
|
+
t = Time.parse(@dx.last_modified)
|
70
|
+
|
71
|
+
# find the most recently modified cur_files
|
72
|
+
recent = a2.select {|x| x[:mtime] > t }.map {|x| x[:name]} \
|
73
|
+
- %w(dir.xml dir.json)
|
74
|
+
|
75
|
+
# is it a new file or recently modified?
|
76
|
+
new_files = recent - @dx.to_a.map {|x| x[:name]}
|
77
|
+
modified = recent - new_files
|
78
|
+
|
79
|
+
@activity = {modified: modified, new: new_files}
|
80
|
+
|
81
|
+
end
|
82
|
+
|
55
83
|
|
56
84
|
command = File.exists?(File.join(path, index)) ? :refresh : :dxify
|
57
85
|
|
@@ -164,13 +192,14 @@ class DirToXML
|
|
164
192
|
|
165
193
|
def dxify(a)
|
166
194
|
|
167
|
-
dx = DxLite.new('directory[title, file_path, description]/file(name, ' + \
|
195
|
+
dx = DxLite.new('directory[title, file_path, last_modified, description]/file(name, ' + \
|
168
196
|
'type, ext, ctime, mtime, atime, description, owner, ' + \
|
169
197
|
'group, permissions)')
|
170
198
|
|
171
199
|
dx.title = 'Index of ' + File.expand_path(@path)
|
172
200
|
dx.file_path = File.expand_path(@path)
|
173
|
-
|
201
|
+
dx.last_modified = Time.now.to_s
|
202
|
+
|
174
203
|
dx.import a
|
175
204
|
|
176
205
|
dx.save File.join(@path, @index)
|
@@ -182,9 +211,9 @@ class DirToXML
|
|
182
211
|
def refresh(cur_files)
|
183
212
|
|
184
213
|
puts 'inside refresh' if @debug
|
185
|
-
|
214
|
+
|
186
215
|
|
187
|
-
prev_files = dx.to_a
|
216
|
+
prev_files = @dx.to_a
|
188
217
|
|
189
218
|
#puts 'prev_files: ' + prev_files.inspect
|
190
219
|
#puts 'cur_files: ' + cur_files.inspect
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dir-to-xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
YSREEphg3phQsU9LV4Dlc2Id4gB3W+//c1Ek6TFieKoVemKMkbtB1lgqsEpTCfwh
|
36
36
|
oNUg84DlSmZ2z9LKagBVAlDy
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2021-01-
|
38
|
+
date: 2021-01-24 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: dxlite
|
metadata.gz.sig
CHANGED
Binary file
|