tmpdir 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84a1d6925a3dce09b6cee2ed681d30e1627763f3ee4d1eedb777dd6f85aab68e
4
- data.tar.gz: 1efaad6103749c58fb74b1b78d90b43aa0c63a02a4c4f223cc3a33cec89abcda
3
+ metadata.gz: 9572f0043f9ac0057c01f47404fa7ef1fc380807cfc362c5f66a4ec9fd80f5cd
4
+ data.tar.gz: a3d8d5fe9f6cd2b54f3bc2c32cbc0fbb0ddfed898658049da9e7e588de8298c2
5
5
  SHA512:
6
- metadata.gz: 25d2caf79564b451c54de55c78cd55efc5951c8a92295226c860e60ce10069d0986dc9149ba0a79f86ed630303cd3e0378bdf13d1c3211db6f962a0f1dc70092
7
- data.tar.gz: dcbbeb5f96f45b953550f41028415e4a6ae71a5230e4a51db8edc51d68d2a595d1ef0610e62249dfa71886b6c00a65551d2d88f2a1e54ed0e4661707502907e2
6
+ metadata.gz: d261987f369e87a27b22cf75d11cd880dd59d2ff7b25aa4030b345d27cccb2b34721d0b75243705feb97ea3ebbd70e973caae9e11602485c919da7aca02d6303
7
+ data.tar.gz: 9257c8f6160e0e8da8722dd4266afb09bdb7aedc972d9b149f18c169f028266daf59406c1eaac2651a4bd31768b5b83d862b7bbf93395ba8369701f3037e4e47
data/.document ADDED
@@ -0,0 +1,2 @@
1
+ README.md
2
+ lib/
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: 'github-actions'
4
+ directory: '/'
5
+ schedule:
6
+ interval: 'weekly'
@@ -1,24 +1,34 @@
1
- name: ubuntu
1
+ name: test
2
2
 
3
3
  on: [push, pull_request]
4
4
 
5
5
  jobs:
6
+ ruby-versions:
7
+ uses: ruby/actions/.github/workflows/ruby_versions.yml@master
8
+ with:
9
+ engine: cruby
10
+ min_version: 2.7
11
+
6
12
  build:
13
+ needs: ruby-versions
7
14
  name: build (${{ matrix.ruby }} / ${{ matrix.os }})
8
15
  strategy:
9
16
  matrix:
10
- ruby: [ 2.7, 2.6, 2.5, 2.4, head ]
11
- os: [ ubuntu-latest, macos-latest ]
17
+ ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
18
+ os: [ ubuntu-latest, macos-latest, windows-latest ]
19
+ exclude:
20
+ - { os: windows-latest, ruby: head }
21
+ include:
22
+ - { os: windows-latest, ruby: mingw }
23
+ - { os: windows-latest, ruby: mswin }
12
24
  runs-on: ${{ matrix.os }}
13
25
  steps:
14
- - uses: actions/checkout@v2
26
+ - uses: actions/checkout@v4
15
27
  - name: Set up Ruby
16
28
  uses: ruby/setup-ruby@v1
17
29
  with:
18
30
  ruby-version: ${{ matrix.ruby }}
19
31
  - name: Install dependencies
20
- run: |
21
- gem install bundler --no-document
22
- bundle install
32
+ run: bundle install
23
33
  - name: Run test
24
34
  run: rake test
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /Gemfile.lock
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ gemspec
4
4
 
5
5
  gem "rake"
6
6
  gem "test-unit"
7
+ gem "test-unit-ruby-core"
data/Rakefile CHANGED
@@ -7,11 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList["test/**/test_*.rb"]
8
8
  end
9
9
 
10
- task :sync_tool do
11
- require 'fileutils'
12
- FileUtils.cp "../ruby/tool/lib/test/unit/core_assertions.rb", "./test/lib"
13
- FileUtils.cp "../ruby/tool/lib/envutil.rb", "./test/lib"
14
- FileUtils.cp "../ruby/tool/lib/find_executable.rb", "./test/lib"
15
- end
16
-
17
10
  task :default => :test
data/lib/tmpdir.rb CHANGED
@@ -13,15 +13,21 @@ end
13
13
 
14
14
  class Dir
15
15
 
16
- @@systmpdir ||= defined?(Etc.systmpdir) ? Etc.systmpdir : '/tmp'
16
+ # Class variables are inaccessible from non-main Ractor.
17
+ # And instance variables too, in Ruby 3.0.
18
+
19
+ # System-wide temporary directory path
20
+ SYSTMPDIR = (defined?(Etc.systmpdir) ? Etc.systmpdir.freeze : '/tmp')
21
+ private_constant :SYSTMPDIR
17
22
 
18
23
  ##
19
24
  # Returns the operating system's temporary file path.
20
25
 
21
26
  def self.tmpdir
22
- tmp = nil
23
- ['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].each do |name, dir = ENV[name]|
24
- next if !dir
27
+ ['TMPDIR', 'TMP', 'TEMP', ['system temporary path', SYSTMPDIR], ['/tmp']*2, ['.']*2].find do |name, dir|
28
+ unless dir
29
+ next if !(dir = ENV[name] rescue next) or dir.empty?
30
+ end
25
31
  dir = File.expand_path(dir)
26
32
  stat = File.stat(dir) rescue next
27
33
  case
@@ -32,12 +38,9 @@ class Dir
32
38
  when stat.world_writable? && !stat.sticky?
33
39
  warn "#{name} is world-writable: #{dir}"
34
40
  else
35
- tmp = dir
36
- break
41
+ break dir
37
42
  end
38
- end
39
- raise ArgumentError, "could not find a temporary directory" unless tmp
40
- tmp
43
+ end or raise ArgumentError, "could not find a temporary directory"
41
44
  end
42
45
 
43
46
  # Dir.mktmpdir creates a temporary directory.
@@ -69,7 +72,7 @@ class Dir
69
72
  #
70
73
  # Dir.mktmpdir {|dir|
71
74
  # # use the directory...
72
- # open("#{dir}/foo", "w") { ... }
75
+ # open("#{dir}/foo", "w") { something using the file }
73
76
  # }
74
77
  #
75
78
  # If a block is not given,
@@ -79,7 +82,7 @@ class Dir
79
82
  # dir = Dir.mktmpdir
80
83
  # begin
81
84
  # # use the directory...
82
- # open("#{dir}/foo", "w") { ... }
85
+ # open("#{dir}/foo", "w") { something using the file }
83
86
  # ensure
84
87
  # # remove the directory.
85
88
  # FileUtils.remove_entry dir
@@ -108,6 +111,7 @@ class Dir
108
111
  end
109
112
  end
110
113
 
114
+ # Temporary name generator
111
115
  module Tmpname # :nodoc:
112
116
  module_function
113
117
 
@@ -115,16 +119,24 @@ class Dir
115
119
  Dir.tmpdir
116
120
  end
117
121
 
122
+ # Unusable characters as path name
118
123
  UNUSABLE_CHARS = "^,-.0-9A-Z_a-z~"
119
124
 
120
- class << (RANDOM = Random.new)
125
+ # Dedicated random number generator
126
+ RANDOM = Object.new
127
+ class << RANDOM # :nodoc:
128
+ # Maximum random number
121
129
  MAX = 36**6 # < 0x100000000
130
+
131
+ # Returns new random string upto 6 bytes
122
132
  def next
123
- rand(MAX).to_s(36)
133
+ (::Random.urandom(4).unpack1("L")%MAX).to_s(36)
124
134
  end
125
135
  end
136
+ RANDOM.freeze
126
137
  private_constant :RANDOM
127
138
 
139
+ # Generates and yields random names to create a temporary name
128
140
  def create(basename, tmpdir=nil, max_try: nil, **opts)
129
141
  origdir = tmpdir
130
142
  tmpdir ||= tmpdir()
data/tmpdir.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "tmpdir"
3
- spec.version = "0.1.2"
3
+ spec.version = "0.2.0"
4
4
  spec.authors = ["Yukihiro Matsumoto"]
5
5
  spec.email = ["matz@ruby-lang.org"]
6
6
 
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.description = %q{Extends the Dir class to manage the OS temporary file path.}
9
9
  spec.homepage = "https://github.com/ruby/tmpdir"
10
10
  spec.licenses = ["Ruby", "BSD-2-Clause"]
11
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
11
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
12
12
 
13
13
  spec.metadata["homepage_uri"] = spec.homepage
14
14
  spec.metadata["source_code_uri"] = spec.homepage
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  # Specify which files should be added to the gem when it is released.
17
17
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
18
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
19
- `git ls-files -z 2>/dev/null`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+ `git ls-files -z 2>#{IO::NULL}`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
20
  end
21
21
  spec.bindir = "exe"
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tmpdir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yukihiro Matsumoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-05 00:00:00.000000000 Z
11
+ date: 2023-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fileutils
@@ -31,10 +31,11 @@ executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
+ - ".document"
35
+ - ".github/dependabot.yml"
34
36
  - ".github/workflows/test.yml"
35
37
  - ".gitignore"
36
38
  - Gemfile
37
- - Gemfile.lock
38
39
  - README.md
39
40
  - Rakefile
40
41
  - bin/console
@@ -56,14 +57,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
57
  requirements:
57
58
  - - ">="
58
59
  - !ruby/object:Gem::Version
59
- version: 2.3.0
60
+ version: 2.7.0
60
61
  required_rubygems_version: !ruby/object:Gem::Requirement
61
62
  requirements:
62
63
  - - ">="
63
64
  - !ruby/object:Gem::Version
64
65
  version: '0'
65
66
  requirements: []
66
- rubygems_version: 3.3.0.dev
67
+ rubygems_version: 3.5.0.dev
67
68
  signing_key:
68
69
  specification_version: 4
69
70
  summary: Extends the Dir class to manage the OS temporary file path.
data/Gemfile.lock DELETED
@@ -1,23 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- tmpdir (0.1.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- power_assert (1.1.5)
10
- rake (12.3.3)
11
- test-unit (3.3.5)
12
- power_assert
13
-
14
- PLATFORMS
15
- ruby
16
-
17
- DEPENDENCIES
18
- rake
19
- test-unit
20
- tmpdir!
21
-
22
- BUNDLED WITH
23
- 2.1.4