fspath 1.0.0-darwin → 1.1.0-darwin
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.
- data/VERSION +1 -1
- data/fspath.gemspec +3 -5
- data/lib/fspath.rb +36 -0
- data/spec/fspath_spec.rb +60 -0
- metadata +4 -6
- data/TODO +0 -40
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/fspath.gemspec
CHANGED
@@ -5,23 +5,21 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "fspath"
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.1.0"
|
9
9
|
s.platform = "darwin"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ["Ivan Kuchin"]
|
13
|
-
s.date = "2011-10-
|
13
|
+
s.date = "2011-10-31"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
16
|
-
"README.markdown"
|
17
|
-
"TODO"
|
16
|
+
"README.markdown"
|
18
17
|
]
|
19
18
|
s.files = [
|
20
19
|
".tmignore",
|
21
20
|
"LICENSE.txt",
|
22
21
|
"README.markdown",
|
23
22
|
"Rakefile",
|
24
|
-
"TODO",
|
25
23
|
"VERSION",
|
26
24
|
"fspath.gemspec",
|
27
25
|
"lib/fspath.rb",
|
data/lib/fspath.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
require 'pathname'
|
2
|
+
require 'tempfile'
|
3
|
+
require 'tmpdir'
|
2
4
|
|
3
5
|
class FSPath < Pathname
|
6
|
+
class Tempfile < ::Tempfile
|
7
|
+
def path
|
8
|
+
FSPath.new(super)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
4
12
|
class << self
|
5
13
|
# Return current user home path if called without argument.
|
6
14
|
# If called with argument return specified user home path.
|
@@ -14,6 +22,34 @@ class FSPath < Pathname
|
|
14
22
|
new(path).dirname.ascend
|
15
23
|
end.inject(:&).first
|
16
24
|
end
|
25
|
+
|
26
|
+
# Returns or yields temp file created by Tempfile.new with path returning FSPath
|
27
|
+
def temp_file(*args, &block)
|
28
|
+
args = %w[f] if args.empty?
|
29
|
+
Tempfile.open(*args, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns or yields path as FSPath of temp file created by Tempfile.new
|
33
|
+
def temp_file_path(*args)
|
34
|
+
if block_given?
|
35
|
+
temp_file(*args) do |file|
|
36
|
+
yield file.path
|
37
|
+
end
|
38
|
+
else
|
39
|
+
temp_file(*args).path
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# Returns or yields FSPath with temp directory created by Dir.mktmpdir
|
44
|
+
def temp_dir(*args)
|
45
|
+
if block_given?
|
46
|
+
Dir.mktmpdir(*args) do |dir|
|
47
|
+
yield new(dir)
|
48
|
+
end
|
49
|
+
else
|
50
|
+
new(Dir.mktmpdir(*args))
|
51
|
+
end
|
52
|
+
end
|
17
53
|
end
|
18
54
|
|
19
55
|
# Join paths using File.join
|
data/spec/fspath_spec.rb
CHANGED
@@ -34,6 +34,66 @@ describe FSPath do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
describe "temp_file" do
|
38
|
+
before do
|
39
|
+
@file = mock(:file)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should return instance of FSPath::Tempfile" do
|
43
|
+
FSPath::Tempfile.stub!(:open).and_return(@file)
|
44
|
+
|
45
|
+
FSPath.temp_file.should == @file
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should yield instance of FSPath::Tempfile" do
|
49
|
+
FSPath::Tempfile.stub!(:open).and_yield(@file)
|
50
|
+
|
51
|
+
yielded = nil
|
52
|
+
FSPath.temp_file{ |y| yielded = y }
|
53
|
+
yielded.should == @file
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "temp_file_path" do
|
58
|
+
before do
|
59
|
+
@path = mock(:path)
|
60
|
+
@file = mock(:file)
|
61
|
+
@file.stub!(:path).and_return(@path)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should return FSPath with temporary path" do
|
65
|
+
FSPath::Tempfile.stub!(:new).and_return(@file)
|
66
|
+
|
67
|
+
FSPath.temp_file_path.should == @path
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should yield FSPath with temporary path" do
|
71
|
+
FSPath::Tempfile.stub!(:open).and_yield(@file)
|
72
|
+
|
73
|
+
yielded = nil
|
74
|
+
FSPath.temp_file_path{ |y| yielded = y }
|
75
|
+
yielded.should == @path
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "temp_dir" do
|
80
|
+
it "should return result of running Dir.mktmpdir as FSPath instance" do
|
81
|
+
@path = '/tmp/a/b/1'
|
82
|
+
Dir.stub!(:mktmpdir).and_return(@path)
|
83
|
+
|
84
|
+
FSPath.temp_dir.should == FSPath('/tmp/a/b/1')
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should yield path yielded by Dir.mktmpdir as FSPath instance" do
|
88
|
+
@path = '/tmp/a/b/2'
|
89
|
+
Dir.stub!(:mktmpdir).and_yield(@path)
|
90
|
+
|
91
|
+
yielded = nil
|
92
|
+
FSPath.temp_dir{ |y| yielded = y }
|
93
|
+
yielded.should == FSPath('/tmp/a/b/2')
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
37
97
|
describe "/" do
|
38
98
|
it "should join path with string" do
|
39
99
|
(FSPath('a') / 'b').should == FSPath('a/b')
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fspath
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: darwin
|
12
12
|
authors:
|
13
13
|
- Ivan Kuchin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-10-
|
18
|
+
date: 2011-10-31 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: xattr
|
@@ -98,13 +98,11 @@ extensions: []
|
|
98
98
|
extra_rdoc_files:
|
99
99
|
- LICENSE.txt
|
100
100
|
- README.markdown
|
101
|
-
- TODO
|
102
101
|
files:
|
103
102
|
- .tmignore
|
104
103
|
- LICENSE.txt
|
105
104
|
- README.markdown
|
106
105
|
- Rakefile
|
107
|
-
- TODO
|
108
106
|
- VERSION
|
109
107
|
- fspath.gemspec
|
110
108
|
- lib/fspath.rb
|
data/TODO
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
class Pathname
|
2
|
-
def non_existing
|
3
|
-
dir = dirname
|
4
|
-
ext = extname
|
5
|
-
name = basename(ext)
|
6
|
-
postfix = nil
|
7
|
-
while (path = dir + "#{name}#{postfix}#{ext}").exist?
|
8
|
-
postfix = postfix ? postfix.succ : '-a'
|
9
|
-
end
|
10
|
-
path
|
11
|
-
# begin
|
12
|
-
# FSPath('abc').open(Fcntl::O_WRONLY | Fcntl::O_CREAT | Fcntl::O_EXCL) do |f|
|
13
|
-
# end
|
14
|
-
# rescue => e
|
15
|
-
# p e
|
16
|
-
# end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
def lock(options = {}, &block)
|
21
|
-
File.lock(@path, options, &block)
|
22
|
-
# class File
|
23
|
-
# def self.lock(path, options = {})
|
24
|
-
# if lock = File.open(path, options[:mode] || 'r')
|
25
|
-
# begin
|
26
|
-
# if lock.flock(options[:no_block] ? (File::LOCK_EX | File::LOCK_NB) : (File::LOCK_EX))
|
27
|
-
# yield
|
28
|
-
# end
|
29
|
-
# ensure
|
30
|
-
# lock.flock(File::LOCK_UN)
|
31
|
-
# lock.close
|
32
|
-
# end
|
33
|
-
# end
|
34
|
-
# end
|
35
|
-
# end
|
36
|
-
# Fcntl::O_RDONLY | Fcntl::O_CREAT
|
37
|
-
# Fcntl::O_SHLOCK
|
38
|
-
# Fcntl::O_EXLOCK
|
39
|
-
end
|
40
|
-
end
|