path_expander 1.0.0 → 1.1.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.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +42 -1
- data/Manifest.txt +1 -0
- data/README.rdoc +1 -1
- data/lib/path_expander.rb +35 -8
- data/test/bad_named_dir.rb/.ignore +0 -0
- data/test/test_path_expander.rb +52 -3
- data.tar.gz.sig +0 -0
- metadata +34 -27
- metadata.gz.sig +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 95157151cd3523ba3bcd9ca1668dbfa436e87b9dfabb3431ca218ea66571c436
|
4
|
+
data.tar.gz: b0714ed15b27ae4b4dc16f1f87ec20dd2732299ffbadff80b9e51ba004855ef6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c53f545816dc9c6341c1bddfede9b4ef137e64100dd4883df1ee7bf81d4df2adf91f78fabfa2ce431d1f85c03d65941dadd6e1e8b50de6f27ab9a63724da1398
|
7
|
+
data.tar.gz: 017eb994f9a635e8b780d326a364cae4fc82fd3852cd792c8819ccb9550539b14f49fc01a68b076a7fb367a7e6020099b7dfb9d6f5134cc33cb464ea13fabf9d
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,6 +1,47 @@
|
|
1
|
+
=== 1.1.1 / 2022-07-03
|
2
|
+
|
3
|
+
* 1 bug fix:
|
4
|
+
|
5
|
+
* Process plain '-' as a file, not an option.
|
6
|
+
|
7
|
+
=== 1.1.0 / 2019-09-22
|
8
|
+
|
9
|
+
* 1 minor enhancement:
|
10
|
+
|
11
|
+
* Added a default path (default: ".") to scan if no files are initially found.
|
12
|
+
|
13
|
+
=== 1.0.5 / 2019-09-14
|
14
|
+
|
15
|
+
* 1 bug fix:
|
16
|
+
|
17
|
+
* Fixed a deprecation warning from File.exists?
|
18
|
+
|
19
|
+
=== 1.0.4 / 2019-05-26
|
20
|
+
|
21
|
+
* 1 bug fix:
|
22
|
+
|
23
|
+
* Sorted the output from expand_dirs_to_files. (deivid-rodriguez)
|
24
|
+
|
25
|
+
=== 1.0.3 / 2018-03-16
|
26
|
+
|
27
|
+
* 1 bug fix:
|
28
|
+
|
29
|
+
* Don't process files if path expands to root directory. Prevents -n /./ from hanging.
|
30
|
+
|
31
|
+
=== 1.0.2 / 2017-05-09
|
32
|
+
|
33
|
+
* 1 bug fix:
|
34
|
+
|
35
|
+
* Fixed expand_dirs_to_files returning non-files on glob expansion.
|
36
|
+
|
37
|
+
=== 1.0.1 / 2016-11-30
|
38
|
+
|
39
|
+
* 1 bug fix:
|
40
|
+
|
41
|
+
* Expanded paths in filter_files to fix globs w/ absolute paths. (mknapik)
|
42
|
+
|
1
43
|
=== 1.0.0 / 2016-05-11
|
2
44
|
|
3
45
|
* 1 major enhancement
|
4
46
|
|
5
47
|
* Birthday!
|
6
|
-
|
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
data/lib/path_expander.rb
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
# PathExpander.
|
14
14
|
|
15
15
|
class PathExpander
|
16
|
-
VERSION = "1.
|
16
|
+
VERSION = "1.1.1" # :nodoc:
|
17
17
|
|
18
18
|
##
|
19
19
|
# The args array to process.
|
@@ -25,13 +25,20 @@ class PathExpander
|
|
25
25
|
|
26
26
|
attr_accessor :glob
|
27
27
|
|
28
|
+
##
|
29
|
+
# The path to scan if no paths are found in the initial scan.
|
30
|
+
|
31
|
+
attr_accessor :path
|
32
|
+
|
28
33
|
##
|
29
34
|
# Create a new path expander that operates on args and expands via
|
30
|
-
# glob as necessary.
|
35
|
+
# glob as necessary. Takes an optional +path+ arg to fall back on if
|
36
|
+
# no paths are found on the initial scan (see #process_args).
|
31
37
|
|
32
|
-
def initialize args, glob
|
38
|
+
def initialize args, glob, path = "."
|
33
39
|
self.args = args
|
34
40
|
self.glob = glob
|
41
|
+
self.path = path
|
35
42
|
end
|
36
43
|
|
37
44
|
##
|
@@ -42,11 +49,11 @@ class PathExpander
|
|
42
49
|
def expand_dirs_to_files *dirs
|
43
50
|
dirs.flatten.map { |p|
|
44
51
|
if File.directory? p then
|
45
|
-
Dir[File.join(p, glob)]
|
52
|
+
Dir[File.join(p, glob)].find_all { |f| File.file? f }
|
46
53
|
else
|
47
54
|
p
|
48
55
|
end
|
49
|
-
}.flatten
|
56
|
+
}.flatten.sort
|
50
57
|
end
|
51
58
|
|
52
59
|
##
|
@@ -67,28 +74,40 @@ class PathExpander
|
|
67
74
|
# -not_a_path :: Add to flags to be processed.
|
68
75
|
# dir_path :: Expand and add to files to be processed.
|
69
76
|
# file_path :: Add to files to be processed.
|
77
|
+
# - :: Add "-" (stdin) to files to be processed.
|
70
78
|
#
|
71
79
|
# See expand_dirs_to_files for details on how expansion occurs.
|
72
80
|
#
|
73
81
|
# Subtraction happens last, regardless of argument ordering.
|
82
|
+
#
|
83
|
+
# If no files are found (which is not the same as having an empty
|
84
|
+
# file list after subtraction), then fall back to expanding on the
|
85
|
+
# default #path given to initialize.
|
74
86
|
|
75
87
|
def process_args
|
76
88
|
pos_files = []
|
77
89
|
neg_files = []
|
78
90
|
flags = []
|
91
|
+
clean = true
|
79
92
|
|
80
93
|
args.each do |arg|
|
81
94
|
case arg
|
82
95
|
when /^@(.*)/ then # push back on, so they can have dirs/-/@ as well
|
96
|
+
clean = false
|
83
97
|
args.concat process_file $1
|
98
|
+
when "-" then
|
99
|
+
pos_files << arg
|
84
100
|
when /^-(.*)/ then
|
85
101
|
if File.exist? $1 then
|
102
|
+
clean = false
|
86
103
|
neg_files += expand_dirs_to_files($1)
|
87
104
|
else
|
88
105
|
flags << arg
|
89
106
|
end
|
90
107
|
else
|
91
|
-
|
108
|
+
root_path = File.expand_path(arg) == "/" # eg: -n /./
|
109
|
+
if File.exist? arg and not root_path then
|
110
|
+
clean = false
|
92
111
|
pos_files += expand_dirs_to_files(arg)
|
93
112
|
else
|
94
113
|
flags << arg
|
@@ -96,7 +115,10 @@ class PathExpander
|
|
96
115
|
end
|
97
116
|
end
|
98
117
|
|
99
|
-
|
118
|
+
files = pos_files - neg_files
|
119
|
+
files += expand_dirs_to_files(self.path) if files.empty? && clean
|
120
|
+
|
121
|
+
[files, flags]
|
100
122
|
end
|
101
123
|
|
102
124
|
##
|
@@ -143,7 +165,7 @@ class PathExpander
|
|
143
165
|
def filter_files files, ignore
|
144
166
|
ignore_paths = if ignore.respond_to? :read then
|
145
167
|
ignore.read
|
146
|
-
elsif File.
|
168
|
+
elsif File.exist? ignore then
|
147
169
|
File.read ignore
|
148
170
|
end
|
149
171
|
|
@@ -152,8 +174,13 @@ class PathExpander
|
|
152
174
|
dirs, ifiles = nonglobs.partition { |p| p.end_with? "/" }
|
153
175
|
dirs = dirs.map { |s| s.chomp "/" }
|
154
176
|
|
177
|
+
dirs.map! { |i| File.expand_path i }
|
178
|
+
globs.map! { |i| File.expand_path i }
|
179
|
+
ifiles.map! { |i| File.expand_path i }
|
180
|
+
|
155
181
|
only_paths = File::FNM_PATHNAME
|
156
182
|
files = files.reject { |f|
|
183
|
+
f = File.expand_path(f)
|
157
184
|
dirs.any? { |i| File.fnmatch?(i, File.dirname(f), only_paths) } ||
|
158
185
|
globs.any? { |i| File.fnmatch?(i, f) } ||
|
159
186
|
ifiles.any? { |i| File.fnmatch?(i, f, only_paths) }
|
File without changes
|
data/test/test_path_expander.rb
CHANGED
@@ -17,10 +17,14 @@ class TestPathExpander < Minitest::Test
|
|
17
17
|
assert_equal exp, act
|
18
18
|
end
|
19
19
|
|
20
|
+
def assert_filter_files_absolute_paths exp, filter, files = [File.join(Dir.pwd, 'test/dog_and_cat.rb')]
|
21
|
+
assert_filter_files exp, filter, files
|
22
|
+
end
|
23
|
+
|
20
24
|
def assert_process_args exp_files, exp_args, *args
|
21
25
|
expander.args.concat args
|
22
26
|
|
23
|
-
assert_equal [exp_files, exp_args], expander.process_args
|
27
|
+
assert_equal [exp_files.sort, exp_args], expander.process_args
|
24
28
|
end
|
25
29
|
|
26
30
|
def test_expand_dirs_to_files
|
@@ -30,16 +34,30 @@ class TestPathExpander < Minitest::Test
|
|
30
34
|
assert_equal %w[Rakefile], expander.expand_dirs_to_files("Rakefile")
|
31
35
|
end
|
32
36
|
|
37
|
+
def test_expand_dirs_to_files_sorting
|
38
|
+
exp = %w[test/test_bad.rb test/test_path_expander.rb]
|
39
|
+
input = %w[test/test_path_expander.rb test/test_bad.rb]
|
40
|
+
|
41
|
+
assert_equal exp, expander.expand_dirs_to_files(*input)
|
42
|
+
assert_equal %w[Rakefile], expander.expand_dirs_to_files("Rakefile")
|
43
|
+
end
|
44
|
+
|
33
45
|
def test_filter_files_dir
|
34
46
|
assert_filter_files [], "test/"
|
47
|
+
assert_filter_files_absolute_paths [], "test/"
|
35
48
|
end
|
36
49
|
|
37
50
|
def test_filter_files_files
|
38
|
-
assert_filter_files [], "test/*.rb"
|
39
|
-
|
40
51
|
example = %w[test/file.rb test/sub/file.rb top/test/perf.rb]
|
52
|
+
example_absolute_paths = example.map { |e| File.join(Dir.pwd, e) }
|
53
|
+
|
54
|
+
assert_filter_files [], "test/*.rb"
|
41
55
|
|
42
56
|
assert_filter_files example[1..-1], "test/*.rb", example
|
57
|
+
|
58
|
+
assert_filter_files_absolute_paths [], "test/*.rb"
|
59
|
+
|
60
|
+
assert_filter_files_absolute_paths example_absolute_paths[1..-1], "test/*.rb", example_absolute_paths
|
43
61
|
end
|
44
62
|
|
45
63
|
def test_filter_files_glob
|
@@ -47,12 +65,22 @@ class TestPathExpander < Minitest::Test
|
|
47
65
|
assert_filter_files [], "test*", ["test/lib/woot.rb"]
|
48
66
|
assert_filter_files [], "*.rb"
|
49
67
|
assert_filter_files [], "*dog*.rb"
|
68
|
+
|
69
|
+
assert_filter_files_absolute_paths [], "test*"
|
70
|
+
assert_filter_files_absolute_paths [], "test*", [File.join(Dir.pwd, "test/lib/woot.rb")]
|
71
|
+
assert_filter_files_absolute_paths [], "*.rb"
|
72
|
+
assert_filter_files_absolute_paths [], "*dog*.rb"
|
50
73
|
end
|
51
74
|
|
52
75
|
def test_filter_files_glob_miss
|
53
76
|
miss = %w[test/dog_and_cat.rb]
|
77
|
+
miss_absolute = [File.join(Dir.pwd, 'test/dog_and_cat.rb')]
|
78
|
+
|
54
79
|
assert_filter_files miss, "test"
|
55
80
|
assert_filter_files miss, "nope"
|
81
|
+
|
82
|
+
assert_filter_files_absolute_paths miss_absolute, "test"
|
83
|
+
assert_filter_files_absolute_paths miss_absolute, "nope"
|
56
84
|
end
|
57
85
|
|
58
86
|
def test_process
|
@@ -122,6 +150,27 @@ class TestPathExpander < Minitest::Test
|
|
122
150
|
"42")
|
123
151
|
end
|
124
152
|
|
153
|
+
def test_process_args_root
|
154
|
+
assert_process_args(%w[],
|
155
|
+
%w[-n /./],
|
156
|
+
"-n",
|
157
|
+
"/./")
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_process_args_no_files
|
161
|
+
self.expander = PathExpander.new args, "*.rb", "test" # extra test default
|
162
|
+
|
163
|
+
assert_process_args(%w[test/test_bad.rb test/test_path_expander.rb],
|
164
|
+
%w[-v],
|
165
|
+
"-v")
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_process_args_dash
|
169
|
+
assert_process_args(%w[-],
|
170
|
+
%w[-v],
|
171
|
+
"-", "-v")
|
172
|
+
end
|
173
|
+
|
125
174
|
def test_process_flags
|
126
175
|
exp = %w[a b c]
|
127
176
|
act = expander.process_flags %w[a b c]
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: path_expander
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIDPjCCAiagAwIBAgIBBjANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
14
14
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
-
|
15
|
+
GRYDY29tMB4XDTIxMTIyMzIzMTkwNFoXDTIyMTIyMzIzMTkwNFowRTETMBEGA1UE
|
16
16
|
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
17
|
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
18
|
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
@@ -21,44 +21,50 @@ cert_chain:
|
|
21
21
|
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
22
22
|
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
23
|
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
24
|
-
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
|
25
|
+
AQCKB5jfsuSnKb+t/Wrh3UpdkmX7TrEsjVmERC0pPqzQ5GQJgmEXDD7oMgaKXaAq
|
26
|
+
x2m+KSZDrqk7c8uho5OX6YMqg4KdxehfSLqqTZGoeV78qwf/jpPQZKTf+W9gUSJh
|
27
|
+
zsWpo4K50MP+QtdSbKXZwjAafpQ8hK0MnnZ/aeCsW9ov5vdXpYbf3dpg6ADXRGE7
|
28
|
+
lQY2y1tJ5/chqu6h7dQmnm2ABUqx9O+JcN9hbCYoA5i/EeubUEtFIh2w3SpO6YfB
|
29
|
+
JFmxn4h9YO/pVdB962BdBNNDia0kgIjI3ENnkLq0dKpYU3+F3KhEuTksLO0L6X/V
|
30
|
+
YsuyUzsMz6GQA4khyaMgKNSD
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2022-07-04 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rdoc
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
|
+
- - "<"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '7'
|
41
44
|
type: :development
|
42
45
|
prerelease: false
|
43
46
|
version_requirements: !ruby/object:Gem::Requirement
|
44
47
|
requirements:
|
45
|
-
- -
|
48
|
+
- - ">="
|
46
49
|
- !ruby/object:Gem::Version
|
47
50
|
version: '4.0'
|
51
|
+
- - "<"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '7'
|
48
54
|
- !ruby/object:Gem::Dependency
|
49
55
|
name: hoe
|
50
56
|
requirement: !ruby/object:Gem::Requirement
|
51
57
|
requirements:
|
52
|
-
- - ~>
|
58
|
+
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
60
|
+
version: '3.24'
|
55
61
|
type: :development
|
56
62
|
prerelease: false
|
57
63
|
version_requirements: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- - ~>
|
65
|
+
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
67
|
+
version: '3.24'
|
62
68
|
description: |-
|
63
69
|
PathExpander helps pre-process command-line arguments expanding
|
64
70
|
directories into their constituent files. It further helps by
|
@@ -81,38 +87,39 @@ extra_rdoc_files:
|
|
81
87
|
- Manifest.txt
|
82
88
|
- README.rdoc
|
83
89
|
files:
|
84
|
-
- .autotest
|
90
|
+
- ".autotest"
|
85
91
|
- History.rdoc
|
86
92
|
- Manifest.txt
|
87
93
|
- README.rdoc
|
88
94
|
- Rakefile
|
89
95
|
- lib/path_expander.rb
|
96
|
+
- test/bad_named_dir.rb/.ignore
|
90
97
|
- test/test_bad.rb
|
91
98
|
- test/test_path_expander.rb
|
92
99
|
homepage: https://github.com/seattlerb/path_expander
|
93
100
|
licenses:
|
94
101
|
- MIT
|
95
|
-
metadata:
|
96
|
-
|
102
|
+
metadata:
|
103
|
+
homepage_uri: https://github.com/seattlerb/path_expander
|
104
|
+
post_install_message:
|
97
105
|
rdoc_options:
|
98
|
-
- --main
|
106
|
+
- "--main"
|
99
107
|
- README.rdoc
|
100
108
|
require_paths:
|
101
109
|
- lib
|
102
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
111
|
requirements:
|
104
|
-
- -
|
112
|
+
- - ">="
|
105
113
|
- !ruby/object:Gem::Version
|
106
114
|
version: '0'
|
107
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
116
|
requirements:
|
109
|
-
- -
|
117
|
+
- - ">="
|
110
118
|
- !ruby/object:Gem::Version
|
111
119
|
version: '0'
|
112
120
|
requirements: []
|
113
|
-
|
114
|
-
|
115
|
-
signing_key:
|
121
|
+
rubygems_version: 3.3.12
|
122
|
+
signing_key:
|
116
123
|
specification_version: 4
|
117
124
|
summary: PathExpander helps pre-process command-line arguments expanding directories
|
118
125
|
into their constituent files
|
metadata.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
���
|
3
|
-
n�.�^A����?N�;�d����"k��ρ��ʣ�($(�z�@�|���x��c�� �$ �6I+y�AR���Zj�;K�y�����؟�vf��.{�T��������{t92��h̐9S��P�v���#�̸|����Ⳕ��H����/Ч�����@%0%Bv3��^�+��
|
1
|
+
,�n�]EΆ�j�S{nh�m�v�)���Ӷ�{�!�$iI�,L�o�'i�Aэԍ\���![g�� 2[݄�A�vȽ�s9kn"IQ�`T�QAa�l�%���}e�N,%��轴ʨ�g\��C�#I��dž1�?�H���-X'�\ѻm�E�g���#�m�Ţ�.�ח��u�4ڂd8��j��30@`LP�%9���J��ȚE;�1�&�<8�T�,�
|
2
|
+
��"�����5�jY�?EL���q��@����
|