nested_file 0.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.
@@ -0,0 +1 @@
1
+ hello
@@ -0,0 +1,2 @@
1
+ <file {{NF_PARENT_DIR}}/a.txt>
2
+ </file>
@@ -0,0 +1,2 @@
1
+ <file a.txt>
2
+ </file>
@@ -0,0 +1 @@
1
+ hello
@@ -0,0 +1,66 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "PutDir" do
4
+ include_context "file stub"
5
+
6
+ it 'smoke' do
7
+ file_stub.add "/a/b/c/a.txt","hello"
8
+ dir = NestedFile::PutDir.new(parent_dir: "/a/b", mount_dir: "/z")
9
+ dir.contents("/").should == ['c']
10
+ dir.contents("/c").should == ['a.txt']
11
+ dir.read_file("/c/a.txt").should == 'hello'
12
+ end
13
+
14
+ it "nested read" do
15
+ file_stub.add "/a/b/a.txt","Hello"
16
+ file_stub.add "/a/b/b.txt","<file a.txt>\n</file>"
17
+
18
+ dir = NestedFile::PutDir.new(parent_dir: "/a/b", mount_dir: "/z")
19
+ dir.read_file("b.txt").should == "<file a.txt>\nHello\n</file>"
20
+ end
21
+
22
+ it "different relative dir" do
23
+ file_stub.add "/a/b/a.txt","Hello"
24
+ file_stub.add "/a/b/b.txt","<file a.txt>\n</file>"
25
+ file_stub.add "/c/d/a.txt","Goodbye"
26
+
27
+ dir = NestedFile::PutDir.new(parent_dir: "/a/b", mount_dir: "/z", relative_dir: "/c/d")
28
+ dir.read_file("b.txt").should == "<file a.txt>\nGoodbye\n</file>"
29
+ end
30
+
31
+ it "different relative dir - file group" do
32
+ file_stub.add "/a/b/a.txt","Junk"
33
+ file_stub.add "/a/b/multiple.txt","<files *.txt>\n</files>"
34
+ file_stub.add "/c/d/c.txt","Hello"
35
+ file_stub.add "/c/d/d.txt","Goodbye"
36
+
37
+ exp = <<EOF
38
+ <files *.txt>
39
+ <file c.txt>
40
+ Hello
41
+ </file>
42
+ <file d.txt>
43
+ Goodbye
44
+ </file>
45
+ </files>
46
+ EOF
47
+
48
+ dir = NestedFile::PutDir.new(parent_dir: "/a/b", mount_dir: "/z", relative_dir: "/c/d")
49
+ dir.read_file("multiple.txt").should == exp.strip
50
+ end
51
+
52
+ it "write subs - relative" do
53
+
54
+ # File.any_instance_of.stub(:write) do
55
+ # raise "file.write call"
56
+ # end
57
+
58
+ # raw_write(path,offset,sz,buf,file=nil)
59
+ dir = NestedFile::PutDir.new(parent_dir: "/a/b", mount_dir: "/z", relative_dir: "/c/d")
60
+ dir.raw_write "a.txt",0,nil,"<file b.txt>\nHello</file>"
61
+ Dir.entries("/a/b").should == ['a.txt']
62
+ end
63
+
64
+
65
+
66
+ end
@@ -0,0 +1,70 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'nested_file'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+ config.fail_fast = true
12
+ end
13
+
14
+ class FileStub
15
+ fattr(:files) { {} }
16
+ def add(file,contents)
17
+ self.files[file] = contents
18
+ end
19
+ def exist?(file)
20
+ !!files[file]
21
+ end
22
+ def read(file)
23
+ files[file] || (raise "no file")
24
+ end
25
+ def entries(dir)
26
+ dir = dir[0..-2] if dir[-1..-1] == '/'
27
+ fs = files.keys.select { |x| File.dirname(x) == dir }.map { |x| File.basename(x) }
28
+
29
+ res = []
30
+ files.keys.each do |file|
31
+ if file =~ /^#{dir}\/(.+)\//
32
+ res << $1
33
+ end
34
+ end
35
+ fs + res
36
+ end
37
+ def glob(glob)
38
+ if glob == "/c/d/*.txt"
39
+ entries("/c/d").map { |x| "/c/d/#{x}" }
40
+ else
41
+ raise "can't glob"
42
+ end
43
+ end
44
+
45
+ def stub!
46
+ FileTest.stub(:exist?) { |file| exist?(file) }
47
+ File.stub(:read) { |file| read(file) }
48
+ Dir.stub(:entries) do |dir|
49
+ entries(dir)
50
+ end
51
+
52
+ Dir.stub(:[]) do |glob|
53
+ glob(glob)
54
+ end
55
+
56
+ File.stub(:create) do |filename,body|
57
+ add filename, body
58
+ end
59
+ end
60
+ end
61
+
62
+ shared_context "file stub" do
63
+ let(:file_stub) do
64
+ FileStub.new
65
+ end
66
+
67
+ before(:each) do
68
+ file_stub.stub!
69
+ end
70
+ end
data/tmp/.gitkeep ADDED
File without changes
@@ -0,0 +1,24 @@
1
+ require 'mharris_ext'
2
+
3
+ # res = ec("ps -ax")
4
+ # lines = res.split("\n").map { |line| line[25..-1] }
5
+ # puts lines.sort.join("\n")
6
+
7
+ # (1..23).each do |i|
8
+ # ec "umount ruby@osxfuse#{i}"
9
+ # end
10
+
11
+ # mount listed the 24 mounts
12
+ # lsvfs showed 24
13
+
14
+ # ec "umount ruby@osxfuse0"
15
+ # ec "umount ruby@osxfuse88"
16
+ # ec "umount ruby@osxfuse2"
17
+
18
+ mounts = ec("mount").split("\n").map { |x| x.split(" ").first }.select { |x| x =~ /osxfuse/ }
19
+ puts mounts.inspect
20
+ puts "Continue?"
21
+ STDIN.gets
22
+ mounts.each do |name|
23
+ ec "umount #{name}"
24
+ end
data/util/green.gif ADDED
Binary file
data/util/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "Attendance",
3
+ "version": "0.0.1",
4
+ "description": "Attendance App",
5
+ "main": "index.js",
6
+ "author": "mharris717",
7
+ "license": "ISC",
8
+ "devDependencies": {
9
+
10
+ },
11
+ "dependencies": {
12
+ "node-notifier": "^4.5.0"
13
+ }
14
+ }
data/util/red.png ADDED
Binary file
data/util/run_specs ADDED
@@ -0,0 +1 @@
1
+ bundle exec rspec -f d
data/util/watch.js ADDED
@@ -0,0 +1,60 @@
1
+ function watch() {
2
+ const fs = require("fs")
3
+
4
+ for (var dir of ['../lib','../spec']) {
5
+ fs.watch(dir, {recursive: true}, (event,filename) => {
6
+ console.log("Running tests after mod to ",filename)
7
+ testNotify()
8
+ })
9
+ }
10
+
11
+ testNotify()
12
+ }
13
+
14
+ var lastTitle = null
15
+ function notify(title,message) {
16
+ const notifier = require('node-notifier');
17
+ const path = require('path')
18
+
19
+ title = title || process.argv[3]
20
+ const icon = (title == 'Failure') ? "red.png" : "green.gif"
21
+ var sound = (title == 'Failure') ? 'Basso' : false
22
+ if (lastTitle == 'Failure' && title == 'Success') sound = 'Blow'
23
+ const dt = new Date()
24
+ const dtStr = `${dt.getHours()}:${dt.getMinutes()}:${dt.getSeconds()}`
25
+ const fullMessage = dtStr + ' ' + (message||'')
26
+ lastTitle = title
27
+
28
+ notifier.notify({
29
+ 'title': title,
30
+ 'message': fullMessage,
31
+ icon: path.join(__dirname,icon),
32
+ sound: sound
33
+ });
34
+ }
35
+
36
+ function testNotify() {
37
+ const spawn = require('child_process').spawn;
38
+ // var test = spawn("npm",['test'])
39
+ // var test = spawn('bundle',['exec','rspec','-f','d'], {
40
+ var test = spawn('./util/run_specs', {
41
+ cwd: "/code/orig/nested_file"
42
+ })
43
+
44
+ test.on('close', (err) => {
45
+ if (err == 0) notify('Success');
46
+ else notify('Failure')
47
+ })
48
+
49
+ // mirror output to terminal
50
+ test.stdout.on('data', (data) => {
51
+ const str = ''+data
52
+ if (str.trim() != '') console.log(str.trimRight())
53
+ })
54
+ test.stderr.on('data', (data) => {
55
+ const str = ''+data
56
+ if (str.trim() != '') console.log(str.trimRight())
57
+ })
58
+ }
59
+
60
+ watch()
@@ -0,0 +1,19 @@
1
+ require 'mharris_ext'
2
+
3
+ puts "You can also put forked code in a block pid: #{Process.pid}"
4
+ pid = fork do
5
+ puts "Hello from fork pid: #{Process.pid}"
6
+ File.create("fork.pid",Process.pid)
7
+ num = rand(10000000000)
8
+ ec "mkdir tmp/test#{num}"
9
+ cmd = "bundle exec ruby ./bin/nested_file /code/orig/nested_file/tmp/test_parent /code/orig/nested_file/tmp/test#{num}"
10
+ puts cmd
11
+ exec cmd
12
+ end
13
+ puts "The parent process just skips over it: #{Process.pid}"
14
+ # 20.times do |i|
15
+ # puts "Parent times #{i}"
16
+ # sleep 1
17
+ # end
18
+ Process.wait pid
19
+
data/vol/watch_cat.rb ADDED
@@ -0,0 +1,16 @@
1
+ def print_cat
2
+ %w(test_dir child).each do |pc|
3
+ %w(a.txt def.txt).each do |f|
4
+ f = "#{pc}/#{f}"
5
+ puts f.upcase
6
+ puts File.read(f)
7
+ puts "\n\n"
8
+ end
9
+ end
10
+ puts "\n\n-------------------\n\n"
11
+ end
12
+
13
+ loop do
14
+ print_cat
15
+ sleep 1
16
+ end
metadata ADDED
@@ -0,0 +1,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nested_file
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Mike Harris
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mharris_ext
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rfusefs
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.8.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.12'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: jeweler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-spork
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rb-fsevent
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.9'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.9'
153
+ - !ruby/object:Gem::Dependency
154
+ name: lre
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rr
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ description: nested_file
182
+ email: mharris717@gmail.com
183
+ executables:
184
+ - nested_file
185
+ extensions: []
186
+ extra_rdoc_files:
187
+ - LICENSE.txt
188
+ - README.rdoc
189
+ files:
190
+ - ".document"
191
+ - ".rspec"
192
+ - ".travis.yml"
193
+ - Gemfile
194
+ - Gemfile.lock
195
+ - Guardfile
196
+ - LICENSE.txt
197
+ - README.rdoc
198
+ - Rakefile
199
+ - VERSION
200
+ - bin/nested_file
201
+ - lib/nested_file.rb
202
+ - lib/nested_file/file_group.rb
203
+ - lib/nested_file/file_section.rb
204
+ - lib/nested_file/file_tag.rb
205
+ - lib/nested_file/put_dir.rb
206
+ - lib/nested_file/put_file.rb
207
+ - lib/nested_file/util.rb
208
+ - nested_file.gemspec
209
+ - spec/file_section_spec.rb
210
+ - spec/nested_file_spec.rb
211
+ - spec/parent_template/a.txt
212
+ - spec/parent_template/include_others.txt
213
+ - spec/parent_template/include_others_rel.txt
214
+ - spec/parent_template/sub2/x.txt
215
+ - spec/put_dir_spec.rb
216
+ - spec/spec_helper.rb
217
+ - tmp/.gitkeep
218
+ - unmount_all_fuse.rb
219
+ - util/green.gif
220
+ - util/package.json
221
+ - util/red.png
222
+ - util/run_specs
223
+ - util/watch.js
224
+ - vol/spawn_mount.rb
225
+ - vol/watch_cat.rb
226
+ homepage: http://github.com/mharris717/nested_file
227
+ licenses:
228
+ - MIT
229
+ metadata: {}
230
+ post_install_message:
231
+ rdoc_options: []
232
+ require_paths:
233
+ - lib
234
+ required_ruby_version: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ required_rubygems_version: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ requirements: []
245
+ rubyforge_project:
246
+ rubygems_version: 2.5.1
247
+ signing_key:
248
+ specification_version: 4
249
+ summary: nested_file
250
+ test_files: []