rubysl-tmpdir 1.0.0 → 2.0.0
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
- data/.travis.yml +2 -2
- data/lib/rubysl/tmpdir/tmpdir.rb +62 -56
- data/lib/rubysl/tmpdir/version.rb +1 -1
- data/rubysl-tmpdir.gemspec +2 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c3738f5ee5f6a9a14c853ec09b92f28184a97dd
|
4
|
+
data.tar.gz: 8c3f78e9983f98102141907c09ee4206a156fda6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22b02e647848ee6ded4b44391015c7e80559f704d6cff7483facd4f9b6d87947ce667ea48e65ff879c02e85bea02aaf4f71a2d17f5b5171d05a4370848606699
|
7
|
+
data.tar.gz: 8be289cc7696602da5218cf3daf4123425435adb8102efe976c388d55da731761c4d2bbbcaf94f5cb9dbf7e2b529ba1b70dde764060971419d22ee9889aa5b06
|
data/.travis.yml
CHANGED
data/lib/rubysl/tmpdir/tmpdir.rb
CHANGED
@@ -1,37 +1,18 @@
|
|
1
1
|
#
|
2
2
|
# tmpdir - retrieve temporary directory path
|
3
3
|
#
|
4
|
-
# $Id: tmpdir.rb
|
4
|
+
# $Id: tmpdir.rb 28230 2010-06-08 13:14:51Z naruse $
|
5
5
|
#
|
6
6
|
|
7
7
|
require 'fileutils'
|
8
|
+
begin
|
9
|
+
require 'etc.so'
|
10
|
+
rescue LoadError
|
11
|
+
end
|
8
12
|
|
9
13
|
class Dir
|
10
14
|
|
11
|
-
@@systmpdir
|
12
|
-
|
13
|
-
begin
|
14
|
-
require 'Win32API'
|
15
|
-
CSIDL_LOCAL_APPDATA = 0x001c
|
16
|
-
max_pathlen = 260
|
17
|
-
windir = "\0"*(max_pathlen+1)
|
18
|
-
begin
|
19
|
-
getdir = Win32API.new('shell32', 'SHGetFolderPath', 'LLLLP', 'L')
|
20
|
-
raise RuntimeError if getdir.call(0, CSIDL_LOCAL_APPDATA, 0, 0, windir) != 0
|
21
|
-
windir = File.expand_path(windir.rstrip)
|
22
|
-
rescue RuntimeError
|
23
|
-
begin
|
24
|
-
getdir = Win32API.new('kernel32', 'GetSystemWindowsDirectory', 'PL', 'L')
|
25
|
-
rescue RuntimeError
|
26
|
-
getdir = Win32API.new('kernel32', 'GetWindowsDirectory', 'PL', 'L')
|
27
|
-
end
|
28
|
-
len = getdir.call(windir, windir.size)
|
29
|
-
windir = File.expand_path(windir[0, len])
|
30
|
-
end
|
31
|
-
temp = File.join(windir.untaint, 'temp')
|
32
|
-
@@systmpdir = temp if File.directory?(temp) and File.writable?(temp)
|
33
|
-
rescue LoadError
|
34
|
-
end
|
15
|
+
@@systmpdir ||= defined?(Etc.systmpdir) ? Etc.systmpdir : '/tmp'
|
35
16
|
|
36
17
|
##
|
37
18
|
# Returns the operating system's temporary file path.
|
@@ -41,12 +22,11 @@ class Dir
|
|
41
22
|
if $SAFE > 0
|
42
23
|
tmp = @@systmpdir
|
43
24
|
else
|
44
|
-
for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'],
|
45
|
-
|
46
|
-
if dir and File.directory?(dir) and File.writable?(dir)
|
25
|
+
for dir in [ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], @@systmpdir, '/tmp']
|
26
|
+
if dir and stat = File.stat(dir) and stat.directory? and stat.writable?
|
47
27
|
tmp = dir
|
48
28
|
break
|
49
|
-
end
|
29
|
+
end rescue nil
|
50
30
|
end
|
51
31
|
File.expand_path(tmp)
|
52
32
|
end
|
@@ -96,41 +76,67 @@ class Dir
|
|
96
76
|
# FileUtils.remove_entry_secure dir
|
97
77
|
# end
|
98
78
|
#
|
99
|
-
def Dir.mktmpdir(prefix_suffix=nil,
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
when Array
|
108
|
-
prefix = prefix_suffix[0]
|
109
|
-
suffix = prefix_suffix[1]
|
79
|
+
def Dir.mktmpdir(prefix_suffix=nil, *rest)
|
80
|
+
path = Tmpname.create(prefix_suffix || "d", *rest) {|n| mkdir(n, 0700)}
|
81
|
+
if block_given?
|
82
|
+
begin
|
83
|
+
yield path
|
84
|
+
ensure
|
85
|
+
FileUtils.remove_entry_secure path
|
86
|
+
end
|
110
87
|
else
|
111
|
-
|
88
|
+
path
|
112
89
|
end
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
90
|
+
end
|
91
|
+
|
92
|
+
module Tmpname # :nodoc:
|
93
|
+
module_function
|
94
|
+
|
95
|
+
def tmpdir
|
96
|
+
Dir.tmpdir
|
97
|
+
end
|
98
|
+
|
99
|
+
def make_tmpname(prefix_suffix, n)
|
100
|
+
case prefix_suffix
|
101
|
+
when String
|
102
|
+
prefix = prefix_suffix
|
103
|
+
suffix = ""
|
104
|
+
when Array
|
105
|
+
prefix = prefix_suffix[0]
|
106
|
+
suffix = prefix_suffix[1]
|
107
|
+
else
|
108
|
+
raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}"
|
109
|
+
end
|
110
|
+
t = Time.now.strftime("%Y%m%d")
|
111
|
+
path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}"
|
118
112
|
path << "-#{n}" if n
|
119
113
|
path << suffix
|
120
|
-
Dir.mkdir(path, 0700)
|
121
|
-
rescue Errno::EEXIST
|
122
|
-
n ||= 0
|
123
|
-
n += 1
|
124
|
-
retry
|
125
114
|
end
|
126
115
|
|
127
|
-
|
116
|
+
def create(basename, *rest)
|
117
|
+
if opts = Hash.try_convert(rest[-1])
|
118
|
+
opts = opts.dup if rest.pop.equal?(opts)
|
119
|
+
max_try = opts.delete(:max_try)
|
120
|
+
opts = [opts]
|
121
|
+
else
|
122
|
+
opts = []
|
123
|
+
end
|
124
|
+
tmpdir, = *rest
|
125
|
+
if $SAFE > 0 and tmpdir.tainted?
|
126
|
+
tmpdir = '/tmp'
|
127
|
+
else
|
128
|
+
tmpdir ||= tmpdir()
|
129
|
+
end
|
130
|
+
n = nil
|
128
131
|
begin
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
+
path = File.expand_path(make_tmpname(basename, n), tmpdir)
|
133
|
+
yield(path, n, *opts)
|
134
|
+
rescue Errno::EEXIST
|
135
|
+
n ||= 0
|
136
|
+
n += 1
|
137
|
+
retry if !max_try or n < max_try
|
138
|
+
raise "cannot generate temporary name using `#{basename}' under `#{tmpdir}'"
|
132
139
|
end
|
133
|
-
else
|
134
140
|
path
|
135
141
|
end
|
136
142
|
end
|
data/rubysl-tmpdir.gemspec
CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
17
|
spec.require_paths = ["lib"]
|
18
18
|
|
19
|
+
spec.required_ruby_version = "~> 2.0"
|
20
|
+
|
19
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
20
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
21
23
|
spec.add_development_dependency "mspec", "~> 1.5"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysl-tmpdir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -82,9 +82,9 @@ require_paths:
|
|
82
82
|
- lib
|
83
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- -
|
85
|
+
- - ~>
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: '0'
|
87
|
+
version: '2.0'
|
88
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
90
|
- - '>='
|