fffs 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/fffs.rb +4 -0
- data/lib/fffs/directory.rb +10 -4
- data/lib/fffs/file.rb +23 -4
- data/lib/fffs/link.rb +19 -17
- metadata +3 -3
data/lib/fffs.rb
CHANGED
data/lib/fffs/directory.rb
CHANGED
@@ -26,19 +26,24 @@ class Directory < Hash
|
|
26
26
|
|
27
27
|
attr_accessor :filesystem, :parent
|
28
28
|
|
29
|
-
attr_reader :name
|
29
|
+
attr_reader :name, :mode
|
30
30
|
|
31
31
|
def initialize (name, files=[], parent=nil, filesystem=nil)
|
32
32
|
@filesystem = filesystem
|
33
33
|
@parent = parent
|
34
34
|
|
35
35
|
@name = name
|
36
|
+
@mode = 0755
|
36
37
|
|
37
38
|
files.each {|file|
|
38
39
|
self[file.name] = file
|
39
40
|
}
|
40
41
|
end
|
41
42
|
|
43
|
+
def chmod (mode)
|
44
|
+
@mode = mode
|
45
|
+
end
|
46
|
+
|
42
47
|
def filesystem= (value)
|
43
48
|
self.each_value {|file|
|
44
49
|
file.filesystem = value
|
@@ -92,13 +97,14 @@ class Directory < Hash
|
|
92
97
|
"#{__path}/".sub(%r{/*/}, '/')
|
93
98
|
end
|
94
99
|
|
95
|
-
def save (path)
|
100
|
+
def save (path, mode=nil)
|
96
101
|
require 'fileutils'
|
97
102
|
|
98
103
|
FileUtils.mkpath(path)
|
104
|
+
::File.chmod(mode || @mode, path)
|
99
105
|
|
100
|
-
|
101
|
-
f.save("#{path}/#{f.name}")
|
106
|
+
map {|(_, f)|
|
107
|
+
f.save("#{path}/#{f.name}", mode)
|
102
108
|
}
|
103
109
|
end
|
104
110
|
|
data/lib/fffs/file.rb
CHANGED
@@ -27,13 +27,14 @@ class File
|
|
27
27
|
attr_accessor :filesystem, :parent
|
28
28
|
|
29
29
|
attr_accessor :content
|
30
|
-
attr_reader :name
|
30
|
+
attr_reader :name, :mode
|
31
31
|
|
32
32
|
def initialize (name, content='', parent=nil, filesystem=nil)
|
33
33
|
@filesystem = filesystem
|
34
34
|
@parent = parent
|
35
35
|
|
36
36
|
@name = name
|
37
|
+
@mode = 0644
|
37
38
|
|
38
39
|
@content = content.clone
|
39
40
|
@content.force_encoding 'ASCII-8BIT'
|
@@ -45,15 +46,33 @@ class File
|
|
45
46
|
@parent << self
|
46
47
|
end
|
47
48
|
|
48
|
-
def
|
49
|
+
def chmod (mode)
|
50
|
+
@mode = mode
|
51
|
+
end
|
52
|
+
|
53
|
+
def save (file, mode=nil)
|
54
|
+
result = true
|
55
|
+
|
49
56
|
if file.is_a?(String)
|
50
57
|
::File.open(file, 'wb') {|f|
|
51
|
-
f.write content
|
58
|
+
result = f.write content
|
59
|
+
|
60
|
+
begin
|
61
|
+
f.chmod(mode || @mode)
|
62
|
+
rescue Exception => e
|
63
|
+
end
|
52
64
|
}
|
53
65
|
else
|
54
|
-
file.write content
|
66
|
+
result = file.write content
|
55
67
|
file.flush
|
68
|
+
|
69
|
+
begin
|
70
|
+
file.chmod(mode || @mode)
|
71
|
+
rescue Exception => e
|
72
|
+
end
|
56
73
|
end
|
74
|
+
|
75
|
+
result
|
57
76
|
end
|
58
77
|
|
59
78
|
def execute (*args)
|
data/lib/fffs/link.rb
CHANGED
@@ -23,37 +23,39 @@ class Link
|
|
23
23
|
attr_accessor :filesystem, :parent
|
24
24
|
|
25
25
|
attr_accessor :to
|
26
|
+
attr_reader :name
|
26
27
|
|
27
|
-
def initialize (file, parent=nil, filesystem=nil)
|
28
|
+
def initialize (name, file, parent=nil, filesystem=nil)
|
28
29
|
@parent = parent
|
30
|
+
@name = name
|
29
31
|
@to = file
|
30
32
|
end
|
31
33
|
|
32
|
-
def
|
33
|
-
|
34
|
+
def name= (value)
|
35
|
+
@parent.delete(@name)
|
36
|
+
@name = value
|
37
|
+
@parent << self
|
38
|
+
end
|
34
39
|
|
35
|
-
|
40
|
+
def handle
|
41
|
+
handle = self.filesystem
|
36
42
|
|
37
43
|
@to.split('/').reject {|s| s.empty?}.each {|path|
|
38
|
-
|
44
|
+
handle = handle[path]
|
39
45
|
|
40
|
-
break if
|
46
|
+
break if !handle
|
41
47
|
}
|
42
48
|
|
43
|
-
return
|
49
|
+
return handle
|
44
50
|
end
|
45
51
|
|
46
|
-
|
47
|
-
|
48
|
-
handle
|
52
|
+
[:content, :chmod, :execute, :mode].each {|meth|
|
53
|
+
define_method meth do |*args|
|
54
|
+
if tmp = handle
|
55
|
+
tmp.send meth, *args
|
56
|
+
end
|
49
57
|
end
|
50
|
-
|
51
|
-
|
52
|
-
def execute (*args)
|
53
|
-
if handle
|
54
|
-
handle.execute(*args)
|
55
|
-
end
|
56
|
-
end
|
58
|
+
}
|
57
59
|
|
58
60
|
def save (path)
|
59
61
|
require 'fileutils'
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 10
|
9
|
+
version: 0.0.10
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- meh.
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-05-
|
17
|
+
date: 2011-05-08 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|