nrename 0.2.3 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/nrename/options.rb +1 -10
- data/lib/nrename/utils.rb +20 -0
- data/lib/nrename/version.rb +1 -1
- data/lib/nrename.rb +1 -0
- data/spec/nrename/utils_spec.rb +59 -0
- metadata +4 -2
data/lib/nrename/options.rb
CHANGED
@@ -119,16 +119,7 @@ module Nrename
|
|
119
119
|
|
120
120
|
if options.recursive
|
121
121
|
dirs.dup.each do |dir|
|
122
|
-
|
123
|
-
# work with unescaped path, also mri-1.8 does not have
|
124
|
-
# constant RUBY_ENGINE defined.
|
125
|
-
unless defined? RUBY_ENGINE and RUBY_ENGINE == 'jruby'
|
126
|
-
dir = dir.shellescape
|
127
|
-
end
|
128
|
-
|
129
|
-
Dir.glob(File.join dir, '**/') do |subdir|
|
130
|
-
dirs << subdir.chomp('/')
|
131
|
-
end
|
122
|
+
dirs.merge Utils.all_subdirs_of dir
|
132
123
|
end
|
133
124
|
end
|
134
125
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'set'
|
3
|
+
|
4
|
+
module Nrename
|
5
|
+
module Utils
|
6
|
+
def all_subdirs_of(dir)
|
7
|
+
dir = Pathname.new dir
|
8
|
+
|
9
|
+
children = Set.new
|
10
|
+
|
11
|
+
dir.children.select(&:directory?).map(&:to_s).each do |child|
|
12
|
+
children.add child
|
13
|
+
children.merge all_subdirs_of child
|
14
|
+
end
|
15
|
+
|
16
|
+
Array children
|
17
|
+
end
|
18
|
+
module_function :all_subdirs_of
|
19
|
+
end
|
20
|
+
end
|
data/lib/nrename/version.rb
CHANGED
data/lib/nrename.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Nrename::Utils do
|
4
|
+
include Nrename::Utils
|
5
|
+
|
6
|
+
describe '.all_subdirs_of' do
|
7
|
+
let(:test_dir) { File.expand_path '[dir] )with( funny {name}' }
|
8
|
+
|
9
|
+
let(:subdirs) {
|
10
|
+
%w[foo bar baz quux].map { |dir|
|
11
|
+
File.expand_path dir, test_dir
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
before :each do
|
16
|
+
mkdir_p subdirs
|
17
|
+
end
|
18
|
+
|
19
|
+
after :each do
|
20
|
+
rm_rf test_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns subdirectories of provided directory' do
|
24
|
+
expect(all_subdirs_of test_dir).to match_array subdirs
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'ignores plain files' do
|
28
|
+
inside test_dir do
|
29
|
+
touch %w[some plain files]
|
30
|
+
end
|
31
|
+
|
32
|
+
expect(all_subdirs_of test_dir).to match_array subdirs
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'captures deeply nested directories' do
|
36
|
+
inside test_dir do
|
37
|
+
inside 'deeper' do
|
38
|
+
inside 'even_deeper' do
|
39
|
+
mkdir 'deepest'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
all_subdirs = [
|
45
|
+
File.join(test_dir, 'deeper'),
|
46
|
+
File.join(test_dir, 'deeper', 'even_deeper'),
|
47
|
+
File.join(test_dir, 'deeper', 'even_deeper', 'deepest')
|
48
|
+
] + subdirs
|
49
|
+
|
50
|
+
expect(all_subdirs_of test_dir).to match_array all_subdirs
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'raises error when given argument is not a directory' do
|
54
|
+
expect {
|
55
|
+
all_subdirs_of '/non/existant/directory'
|
56
|
+
}.to raise_error StandardError
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nrename
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -111,10 +111,12 @@ files:
|
|
111
111
|
- lib/nrename/numbered_file.rb
|
112
112
|
- lib/nrename/options.rb
|
113
113
|
- lib/nrename/runner.rb
|
114
|
+
- lib/nrename/utils.rb
|
114
115
|
- lib/nrename/version.rb
|
115
116
|
- spec/nrename/directory_spec.rb
|
116
117
|
- spec/nrename/numbered_file_spec.rb
|
117
118
|
- spec/nrename/options_spec.rb
|
119
|
+
- spec/nrename/utils_spec.rb
|
118
120
|
- spec/spec_helper.rb
|
119
121
|
homepage: https://github.com/vderyagin/nrename
|
120
122
|
licenses:
|
@@ -131,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
133
|
version: '0'
|
132
134
|
segments:
|
133
135
|
- 0
|
134
|
-
hash: -
|
136
|
+
hash: -2006144639180283266
|
135
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
138
|
none: false
|
137
139
|
requirements:
|