pathname 0.2.0 → 0.3.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/.git-blame-ignore-revs +7 -0
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/test.yml +12 -5
- data/Gemfile +1 -0
- data/Rakefile +0 -7
- data/ext/pathname/pathname.c +19 -29
- data/lib/pathname.rb +12 -5
- data/pathname.gemspec +10 -3
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a656bfd312a6e64a60dbe0587adb442864e7e243112dfd2de00818faa81ddd8
|
4
|
+
data.tar.gz: 4bb517d92a8f16923bb2c2e0b3e6cd6336f7b384e69d6a8f93f5fb9c9db4be6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 257242ff8d0cad1b3510f8baa055b53c613d62b8be2975e559824f202cf2500ef700ca714223c0978b03befac7c5daae9eaa3847c6c8b12e50952504ca966f90
|
7
|
+
data.tar.gz: 13061a06efa6cbfd3b08799e0974691f1e3d52df1210031d080d2bdb2bfd24081b9c241a21f7115ee859d78d1da8a57cfbf4cd26d68b4eb1446a3886019f3017
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# This is a file used by GitHub to ignore the following commits on `git blame`.
|
2
|
+
#
|
3
|
+
# You can also do the same thing in your local repository with:
|
4
|
+
# $ git config --local blame.ignoreRevsFile .git-blame-ignore-revs
|
5
|
+
|
6
|
+
# Expand tabs
|
7
|
+
93e8aaadc7c7945895b1b0b6d9909134409517ff
|
data/.github/workflows/test.yml
CHANGED
@@ -3,11 +3,17 @@ name: build
|
|
3
3
|
on: [push, pull_request]
|
4
4
|
|
5
5
|
jobs:
|
6
|
-
|
6
|
+
ruby-versions:
|
7
|
+
uses: ruby/actions/.github/workflows/ruby_versions.yml@master
|
8
|
+
with:
|
9
|
+
engine: cruby
|
10
|
+
|
11
|
+
test:
|
12
|
+
needs: ruby-versions
|
7
13
|
name: build (${{ matrix.ruby }} / ${{ matrix.os }})
|
8
14
|
strategy:
|
9
15
|
matrix:
|
10
|
-
ruby:
|
16
|
+
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
|
11
17
|
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
12
18
|
exclude:
|
13
19
|
- { os: windows-latest , ruby: head }
|
@@ -16,11 +22,12 @@ jobs:
|
|
16
22
|
- { os: windows-latest , ruby: mswin }
|
17
23
|
runs-on: ${{ matrix.os }}
|
18
24
|
steps:
|
19
|
-
- uses: actions/checkout@
|
25
|
+
- uses: actions/checkout@v4
|
20
26
|
- name: Set up Ruby
|
21
27
|
uses: ruby/setup-ruby@v1
|
22
28
|
with:
|
23
29
|
ruby-version: ${{ matrix.ruby }}
|
24
|
-
|
30
|
+
- name: Install dependencies
|
31
|
+
run: bundle install
|
25
32
|
- name: Run test
|
26
|
-
run:
|
33
|
+
run: rake compile test
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -7,13 +7,6 @@ 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/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
|
require 'rake/extensiontask'
|
18
11
|
Rake::ExtensionTask.new("pathname")
|
19
12
|
|
data/ext/pathname/pathname.c
CHANGED
@@ -35,6 +35,7 @@ static ID id_lchmod;
|
|
35
35
|
static ID id_lchown;
|
36
36
|
static ID id_link;
|
37
37
|
static ID id_lstat;
|
38
|
+
static ID id_lutime;
|
38
39
|
static ID id_mkdir;
|
39
40
|
static ID id_mtime;
|
40
41
|
static ID id_open;
|
@@ -129,32 +130,6 @@ path_freeze(VALUE self)
|
|
129
130
|
return self;
|
130
131
|
}
|
131
132
|
|
132
|
-
/*
|
133
|
-
* call-seq:
|
134
|
-
* pathname.taint -> obj
|
135
|
-
*
|
136
|
-
* Returns pathname. This method is deprecated and will be removed in Ruby 3.2.
|
137
|
-
*/
|
138
|
-
static VALUE
|
139
|
-
path_taint(VALUE self)
|
140
|
-
{
|
141
|
-
rb_warn("Pathname#taint is deprecated and will be removed in Ruby 3.2.");
|
142
|
-
return self;
|
143
|
-
}
|
144
|
-
|
145
|
-
/*
|
146
|
-
* call-seq:
|
147
|
-
* pathname.untaint -> obj
|
148
|
-
*
|
149
|
-
* Returns pathname. This method is deprecated and will be removed in Ruby 3.2.
|
150
|
-
*/
|
151
|
-
static VALUE
|
152
|
-
path_untaint(VALUE self)
|
153
|
-
{
|
154
|
-
rb_warn("Pathname#untaint is deprecated and will be removed in Ruby 3.2.");
|
155
|
-
return self;
|
156
|
-
}
|
157
|
-
|
158
133
|
/*
|
159
134
|
* Compare this pathname with +other+. The comparison is string-based.
|
160
135
|
* Be aware that two different paths (<tt>foo.txt</tt> and <tt>./foo.txt</tt>)
|
@@ -764,6 +739,19 @@ path_utime(VALUE self, VALUE atime, VALUE mtime)
|
|
764
739
|
return rb_funcall(rb_cFile, id_utime, 3, atime, mtime, get_strpath(self));
|
765
740
|
}
|
766
741
|
|
742
|
+
/*
|
743
|
+
* Update the access and modification times of the file.
|
744
|
+
*
|
745
|
+
* Same as Pathname#utime, but does not follow symbolic links.
|
746
|
+
*
|
747
|
+
* See File.lutime.
|
748
|
+
*/
|
749
|
+
static VALUE
|
750
|
+
path_lutime(VALUE self, VALUE atime, VALUE mtime)
|
751
|
+
{
|
752
|
+
return rb_funcall(rb_cFile, id_lutime, 3, atime, mtime, get_strpath(self));
|
753
|
+
}
|
754
|
+
|
767
755
|
/*
|
768
756
|
* Returns the last component of the path.
|
769
757
|
*
|
@@ -1212,7 +1200,7 @@ path_entries(VALUE self)
|
|
1212
1200
|
ary = rb_funcall(rb_cDir, id_entries, 1, str);
|
1213
1201
|
ary = rb_convert_type(ary, T_ARRAY, "Array", "to_ary");
|
1214
1202
|
for (i = 0; i < RARRAY_LEN(ary); i++) {
|
1215
|
-
|
1203
|
+
VALUE elt = RARRAY_AREF(ary, i);
|
1216
1204
|
elt = rb_class_new_instance(1, &elt, klass);
|
1217
1205
|
rb_ary_store(ary, i, elt);
|
1218
1206
|
}
|
@@ -1274,6 +1262,7 @@ static VALUE
|
|
1274
1262
|
path_each_entry(VALUE self)
|
1275
1263
|
{
|
1276
1264
|
VALUE args[1];
|
1265
|
+
RETURN_ENUMERATOR(self, 0, 0);
|
1277
1266
|
|
1278
1267
|
args[0] = get_strpath(self);
|
1279
1268
|
return rb_block_call(rb_cDir, id_foreach, 1, args, each_entry_i, rb_obj_class(self));
|
@@ -1464,6 +1453,7 @@ path_f_pathname(VALUE self, VALUE str)
|
|
1464
1453
|
* - #make_symlink(old)
|
1465
1454
|
* - #truncate(length)
|
1466
1455
|
* - #utime(atime, mtime)
|
1456
|
+
* - #lutime(atime, mtime)
|
1467
1457
|
* - #basename(*args)
|
1468
1458
|
* - #dirname
|
1469
1459
|
* - #extname
|
@@ -1521,8 +1511,6 @@ Init_pathname(void)
|
|
1521
1511
|
rb_cPathname = rb_define_class("Pathname", rb_cObject);
|
1522
1512
|
rb_define_method(rb_cPathname, "initialize", path_initialize, 1);
|
1523
1513
|
rb_define_method(rb_cPathname, "freeze", path_freeze, 0);
|
1524
|
-
rb_define_method(rb_cPathname, "taint", path_taint, 0);
|
1525
|
-
rb_define_method(rb_cPathname, "untaint", path_untaint, 0);
|
1526
1514
|
rb_define_method(rb_cPathname, "==", path_eq, 1);
|
1527
1515
|
rb_define_method(rb_cPathname, "===", path_eq, 1);
|
1528
1516
|
rb_define_method(rb_cPathname, "eql?", path_eq, 1);
|
@@ -1562,6 +1550,7 @@ Init_pathname(void)
|
|
1562
1550
|
rb_define_method(rb_cPathname, "make_symlink", path_make_symlink, 1);
|
1563
1551
|
rb_define_method(rb_cPathname, "truncate", path_truncate, 1);
|
1564
1552
|
rb_define_method(rb_cPathname, "utime", path_utime, 2);
|
1553
|
+
rb_define_method(rb_cPathname, "lutime", path_lutime, 2);
|
1565
1554
|
rb_define_method(rb_cPathname, "basename", path_basename, -1);
|
1566
1555
|
rb_define_method(rb_cPathname, "dirname", path_dirname, 0);
|
1567
1556
|
rb_define_method(rb_cPathname, "extname", path_extname, 0);
|
@@ -1645,6 +1634,7 @@ InitVM_pathname(void)
|
|
1645
1634
|
id_lchown = rb_intern("lchown");
|
1646
1635
|
id_link = rb_intern("link");
|
1647
1636
|
id_lstat = rb_intern("lstat");
|
1637
|
+
id_lutime = rb_intern("lutime");
|
1648
1638
|
id_mkdir = rb_intern("mkdir");
|
1649
1639
|
id_mtime = rb_intern("mtime");
|
1650
1640
|
id_open = rb_intern("open");
|
data/lib/pathname.rb
CHANGED
@@ -14,6 +14,8 @@ require 'pathname.so'
|
|
14
14
|
|
15
15
|
class Pathname
|
16
16
|
|
17
|
+
VERSION = "0.3.0"
|
18
|
+
|
17
19
|
# :stopdoc:
|
18
20
|
|
19
21
|
# to_path is implemented so Pathname objects are usable with File.open, etc.
|
@@ -338,6 +340,8 @@ class Pathname
|
|
338
340
|
|
339
341
|
#
|
340
342
|
# Appends a pathname fragment to +self+ to produce a new Pathname object.
|
343
|
+
# Since +other+ is considered as a path relative to +self+, if +other+ is
|
344
|
+
# an absolute path, the new Pathname object is created from just +other+.
|
341
345
|
#
|
342
346
|
# p1 = Pathname.new("/usr") # Pathname:/usr
|
343
347
|
# p2 = p1 + "bin/ruby" # Pathname:/usr/bin/ruby
|
@@ -399,6 +403,8 @@ class Pathname
|
|
399
403
|
|
400
404
|
#
|
401
405
|
# Joins the given pathnames onto +self+ to create a new Pathname object.
|
406
|
+
# This is effectively the same as using Pathname#+ to append +self+ and
|
407
|
+
# all arguments sequentially.
|
402
408
|
#
|
403
409
|
# path0 = Pathname.new("/usr") # Pathname:/usr
|
404
410
|
# path0 = path0.join("bin/ruby") # Pathname:/usr/bin/ruby
|
@@ -574,9 +580,9 @@ class Pathname # * Find *
|
|
574
580
|
end
|
575
581
|
|
576
582
|
|
577
|
-
|
578
|
-
autoload(:FileUtils, 'fileutils')
|
583
|
+
autoload(:FileUtils, 'fileutils')
|
579
584
|
|
585
|
+
class Pathname # * FileUtils *
|
580
586
|
# Creates a full path, including any intermediate directories that don't yet
|
581
587
|
# exist.
|
582
588
|
#
|
@@ -588,11 +594,12 @@ class Pathname # * FileUtils *
|
|
588
594
|
|
589
595
|
# Recursively deletes a directory, including all directories beneath it.
|
590
596
|
#
|
591
|
-
# See FileUtils.
|
592
|
-
def rmtree
|
597
|
+
# See FileUtils.rm_rf
|
598
|
+
def rmtree(noop: nil, verbose: nil, secure: nil)
|
593
599
|
# The name "rmtree" is borrowed from File::Path of Perl.
|
594
600
|
# File::Path provides "mkpath" and "rmtree".
|
595
|
-
|
601
|
+
require 'fileutils'
|
602
|
+
FileUtils.rm_rf(@path, noop: noop, verbose: verbose, secure: secure)
|
596
603
|
nil
|
597
604
|
end
|
598
605
|
end
|
data/pathname.gemspec
CHANGED
@@ -1,13 +1,20 @@
|
|
1
|
+
name = File.basename(__FILE__, ".gemspec")
|
2
|
+
version = ["lib", "ext/lib"].find do |dir|
|
3
|
+
break File.foreach(File.join(__dir__, dir, "#{name}.rb")) do |line|
|
4
|
+
/^\s*VERSION\s*=\s*"(.*)"/ =~ line and break $1
|
5
|
+
end rescue nil
|
6
|
+
end
|
7
|
+
|
1
8
|
Gem::Specification.new do |spec|
|
2
|
-
spec.name =
|
3
|
-
spec.version =
|
9
|
+
spec.name = name
|
10
|
+
spec.version = version
|
4
11
|
spec.authors = ["Tanaka Akira"]
|
5
12
|
spec.email = ["akr@fsij.org"]
|
6
13
|
|
7
14
|
spec.summary = %q{Representation of the name of a file or directory on the filesystem}
|
8
15
|
spec.description = %q{Representation of the name of a file or directory on the filesystem}
|
9
16
|
spec.homepage = "https://github.com/ruby/pathname"
|
10
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
17
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
11
18
|
spec.licenses = ["Ruby", "BSD-2-Clause"]
|
12
19
|
|
13
20
|
spec.metadata["homepage_uri"] = spec.homepage
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pathname
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanaka Akira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Representation of the name of a file or directory on the filesystem
|
14
14
|
email:
|
@@ -18,6 +18,8 @@ extensions:
|
|
18
18
|
- ext/pathname/extconf.rb
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
|
+
- ".git-blame-ignore-revs"
|
22
|
+
- ".github/dependabot.yml"
|
21
23
|
- ".github/workflows/test.yml"
|
22
24
|
- ".gitignore"
|
23
25
|
- Gemfile
|
@@ -45,14 +47,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
45
47
|
requirements:
|
46
48
|
- - ">="
|
47
49
|
- !ruby/object:Gem::Version
|
48
|
-
version: 2.
|
50
|
+
version: 2.7.0
|
49
51
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
52
|
requirements:
|
51
53
|
- - ">="
|
52
54
|
- !ruby/object:Gem::Version
|
53
55
|
version: '0'
|
54
56
|
requirements: []
|
55
|
-
rubygems_version: 3.
|
57
|
+
rubygems_version: 3.5.0.dev
|
56
58
|
signing_key:
|
57
59
|
specification_version: 4
|
58
60
|
summary: Representation of the name of a file or directory on the filesystem
|