nrename 0.2.5 → 0.2.6
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 +7 -0
- data/features/renaming_files.feature +2 -3
- data/features/support/env.rb +1 -1
- data/lib/nrename.rb +3 -1
- data/lib/nrename/counter.rb +11 -0
- data/lib/nrename/directory.rb +8 -20
- data/lib/nrename/numbered_file.rb +10 -7
- data/lib/nrename/options.rb +13 -13
- data/lib/nrename/utils.rb +16 -8
- data/lib/nrename/version.rb +1 -1
- data/spec/nrename/numbered_file_spec.rb +7 -5
- data/spec/nrename/options_spec.rb +6 -6
- data/spec/nrename/utils_spec.rb +1 -5
- data/spec/spec_helper.rb +3 -3
- metadata +17 -44
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 99a1a68b5cb84496cd6604eb163663bb1db2c30b
|
4
|
+
data.tar.gz: ccea83a7063621be76a9850dc4f72cd1fae17f1b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7b8d2ce878965f61ec9ee7af6d857d06adcdd640bb1baf5a7fb9967c8a80445bb369ce8902d2dc968c213cc3f527ff36c8948f6c75ce1c383e739db8a9495601
|
7
|
+
data.tar.gz: 22519ea4b7f2104cbc63042150efd8e7645ed819ec9d468aa484ec5f186961ca9e2f77f10b9a95b37338340a23e67311cc883faa7fe9f76d78bfd22128536bfd
|
@@ -97,10 +97,9 @@ Feature: Renaming files
|
|
97
97
|
| bb1.txt |
|
98
98
|
| bb10.txt |
|
99
99
|
| cc0023.txt |
|
100
|
-
When I
|
101
|
-
When I run `nrename -XN .`
|
100
|
+
When I run `nrename -XN dir`
|
102
101
|
Then the exit status should be 0
|
103
|
-
And the following files should exist:
|
102
|
+
And the following files should exist inside directory "dir":
|
104
103
|
| 01.txt |
|
105
104
|
| 10.txt |
|
106
105
|
| 23.txt |
|
data/features/support/env.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'aruba/cucumber'
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
|
-
ENV['PATH'] = "#{File.expand_path
|
4
|
+
ENV['PATH'] = "#{File.expand_path('../../../bin', __FILE__)}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
5
5
|
|
6
6
|
application_root = File.expand_path('../../..', __FILE__)
|
7
7
|
|
data/lib/nrename.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
libdir = File.expand_path(File.dirname __FILE__)
|
2
2
|
$:.push libdir unless $:.include? libdir
|
3
3
|
|
4
|
+
require 'nrename/counter'
|
4
5
|
require 'nrename/directory'
|
5
6
|
require 'nrename/numbered_file'
|
6
7
|
require 'nrename/options'
|
@@ -14,10 +15,11 @@ module Nrename
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def self.options
|
17
|
-
Options.
|
18
|
+
@options ||= Options.new
|
18
19
|
end
|
19
20
|
|
20
21
|
def self.parse_options(args)
|
22
|
+
@options = Options.new
|
21
23
|
options.parse args
|
22
24
|
end
|
23
25
|
end
|
data/lib/nrename/directory.rb
CHANGED
@@ -9,8 +9,11 @@ module Nrename
|
|
9
9
|
def_delegator :numbered_files, :empty?
|
10
10
|
def_delegator Nrename, :options
|
11
11
|
|
12
|
+
attr_reader :counter
|
13
|
+
|
12
14
|
def initialize(dir)
|
13
15
|
@dir = Pathname.new dir
|
16
|
+
@counter = Counter.new
|
14
17
|
end
|
15
18
|
|
16
19
|
def directories
|
@@ -28,8 +31,8 @@ module Nrename
|
|
28
31
|
def numbered_files
|
29
32
|
@numbered_files ||= files.
|
30
33
|
select { |file| file.basename.to_s =~ options.pattern }.
|
31
|
-
map { |file| NumberedFile.new file }.
|
32
|
-
sort_by(&:
|
34
|
+
map { |file| NumberedFile.new file, self }.
|
35
|
+
sort_by(&:number_from_path)
|
33
36
|
end
|
34
37
|
|
35
38
|
def num_field_length
|
@@ -40,29 +43,14 @@ module Nrename
|
|
40
43
|
if options.renumber
|
41
44
|
numbered_files.size
|
42
45
|
else
|
43
|
-
numbered_files.map(&:
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def renumber
|
48
|
-
numbered_files.each_with_index do |file, idx|
|
49
|
-
|
50
|
-
# Force 1-based indexing (could use Enumerator#with_index with
|
51
|
-
# argument, but that would be incompatible with ruby-1.8).
|
52
|
-
idx += 1
|
53
|
-
|
54
|
-
file.normalize num_field_length, idx
|
46
|
+
numbered_files.map(&:number_from_path).max
|
55
47
|
end
|
56
48
|
end
|
57
49
|
|
58
|
-
def
|
50
|
+
def normalize
|
59
51
|
numbered_files.each do |file|
|
60
|
-
file.normalize
|
52
|
+
file.normalize
|
61
53
|
end
|
62
54
|
end
|
63
|
-
|
64
|
-
def normalize
|
65
|
-
options.renumber ? renumber : fix_numbers
|
66
|
-
end
|
67
55
|
end
|
68
56
|
end
|
@@ -4,24 +4,27 @@ require 'forwardable'
|
|
4
4
|
|
5
5
|
module Nrename
|
6
6
|
class NumberedFile
|
7
|
-
attr_reader :path, :
|
7
|
+
attr_reader :path, :dir
|
8
8
|
|
9
9
|
extend Forwardable
|
10
10
|
|
11
11
|
def_delegator Nrename, :options
|
12
|
+
def_delegators :dir, :counter, :num_field_length
|
12
13
|
|
13
|
-
def initialize(path)
|
14
|
+
def initialize(path, dir)
|
14
15
|
@path = path
|
16
|
+
@dir = dir
|
15
17
|
end
|
16
18
|
|
17
19
|
def number
|
18
|
-
|
20
|
+
@number ||= options.renumber ? counter.next : number_from_path
|
19
21
|
end
|
20
22
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
23
|
+
def number_from_path
|
24
|
+
path.basename.to_s[options.pattern, 1].to_i
|
25
|
+
end
|
24
26
|
|
27
|
+
def normalize
|
25
28
|
rename_to normalized_path
|
26
29
|
end
|
27
30
|
|
@@ -50,7 +53,7 @@ module Nrename
|
|
50
53
|
end
|
51
54
|
|
52
55
|
def adjusted_number
|
53
|
-
number.to_s.rjust
|
56
|
+
number.to_s.rjust num_field_length, '0'
|
54
57
|
end
|
55
58
|
end
|
56
59
|
end
|
data/lib/nrename/options.rb
CHANGED
@@ -3,28 +3,28 @@ require 'optparse'
|
|
3
3
|
require 'ostruct'
|
4
4
|
require 'set'
|
5
5
|
require 'shellwords'
|
6
|
-
require 'singleton'
|
7
6
|
|
8
7
|
module Nrename
|
9
8
|
class Options
|
10
|
-
|
9
|
+
extend Forwardable
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
self.class.def_delegators :options, *default_options.keys
|
13
|
+
end
|
11
14
|
|
12
15
|
def default_options
|
13
16
|
{
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
:numbers_only => false,
|
18
|
+
:dirs => Set.new,
|
19
|
+
:execute => false,
|
20
|
+
:pattern => /(\d+)/,
|
21
|
+
:recursive => false,
|
22
|
+
:rename_dirs => false,
|
23
|
+
:renumber => false,
|
24
|
+
:verbose => true
|
22
25
|
}
|
23
26
|
end
|
24
27
|
|
25
|
-
extend Forwardable
|
26
|
-
def_delegators :options, *instance.default_options.keys
|
27
|
-
|
28
28
|
def options
|
29
29
|
@options ||= OpenStruct.new default_options
|
30
30
|
end
|
data/lib/nrename/utils.rb
CHANGED
@@ -1,20 +1,28 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require 'set'
|
3
2
|
|
4
3
|
module Nrename
|
5
4
|
module Utils
|
6
5
|
def all_subdirs_of(dir)
|
7
|
-
|
8
|
-
|
9
|
-
children = Set.new
|
6
|
+
children = []
|
10
7
|
|
11
|
-
dir
|
12
|
-
children
|
13
|
-
children.
|
8
|
+
each_subdir(dir) do |subdir|
|
9
|
+
children << subdir
|
10
|
+
children.concat all_subdirs_of subdir
|
14
11
|
end
|
15
12
|
|
16
|
-
|
13
|
+
children
|
17
14
|
end
|
18
15
|
module_function :all_subdirs_of
|
16
|
+
|
17
|
+
def each_subdir(dir, &block)
|
18
|
+
dir = Pathname.new dir
|
19
|
+
|
20
|
+
subdirs = dir.children.select &:directory?
|
21
|
+
|
22
|
+
subdirs.each do |subdir|
|
23
|
+
block.call subdir.to_s
|
24
|
+
end
|
25
|
+
end
|
26
|
+
module_function :each_subdir
|
19
27
|
end
|
20
28
|
end
|
data/lib/nrename/version.rb
CHANGED
@@ -2,7 +2,9 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Nrename::NumberedFile do
|
4
4
|
def numbered_file(path)
|
5
|
-
|
5
|
+
file = Pathname.new path
|
6
|
+
dir = Nrename::Directory.new file.dirname
|
7
|
+
Nrename::NumberedFile.new file, dir
|
6
8
|
end
|
7
9
|
|
8
10
|
describe '#number' do
|
@@ -38,7 +40,7 @@ describe Nrename::NumberedFile do
|
|
38
40
|
it 'normalizes file name' do
|
39
41
|
file = numbered_file 'abc_34.rb'
|
40
42
|
|
41
|
-
file.stub :
|
43
|
+
file.stub :num_field_length => 3
|
42
44
|
expect(file.normalized_path.to_s).to be == '034.rb'
|
43
45
|
end
|
44
46
|
end
|
@@ -51,17 +53,17 @@ describe Nrename::NumberedFile do
|
|
51
53
|
it 'normalizes file name' do
|
52
54
|
file = numbered_file 'abc_34.rb'
|
53
55
|
|
54
|
-
file.stub :
|
56
|
+
file.stub :num_field_length => 5
|
55
57
|
expect(file.normalized_path.to_s).to be == 'abc_00034.rb'
|
56
58
|
end
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
60
62
|
describe '#adjusted_number' do
|
61
|
-
it 'returns number, adjusted accordingly to #
|
63
|
+
it 'returns number, adjusted accordingly to #num_field_length' do
|
62
64
|
file = numbered_file 'foo123bar'
|
63
65
|
|
64
|
-
file.stub :
|
66
|
+
file.stub :num_field_length => 4
|
65
67
|
expect(file.adjusted_number).to be == '0123'
|
66
68
|
end
|
67
69
|
end
|
@@ -6,12 +6,12 @@ describe Nrename::Options do
|
|
6
6
|
|
7
7
|
def_delegator Nrename, :parse_options
|
8
8
|
|
9
|
+
let(:defaults) { parse_options([]) }
|
10
|
+
|
9
11
|
after :each do
|
10
12
|
Nrename.options.reset # do not leak state
|
11
13
|
end
|
12
14
|
|
13
|
-
let(:defaults) { parse_options([]) }
|
14
|
-
|
15
15
|
describe 'verbosity' do
|
16
16
|
it 'is on by default' do
|
17
17
|
expect(defaults.verbose).to be_true
|
@@ -108,16 +108,16 @@ describe Nrename::Options do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
describe 'directory arguments' do
|
111
|
-
let(:test_dir) { File.expand_path 'test
|
112
|
-
let(:subdirs) { ['aa', 'bb', 'cc', 'foo bar [baz]
|
111
|
+
let(:test_dir) { File.expand_path 'test [directory]' }
|
112
|
+
let(:subdirs) { ['aa', 'bb', 'cc', 'foo bar [baz]'] }
|
113
113
|
|
114
|
-
before :
|
114
|
+
before :each do
|
115
115
|
inside test_dir do
|
116
116
|
mkdir subdirs
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
-
after :
|
120
|
+
after :each do
|
121
121
|
rm_rf test_dir
|
122
122
|
end
|
123
123
|
|
data/spec/nrename/utils_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
require 'rspec'
|
2
1
|
require 'fileutils'
|
3
|
-
|
4
|
-
require File.expand_path '../../lib/nrename', __FILE__
|
2
|
+
require 'nrename'
|
5
3
|
|
6
4
|
module Support
|
7
5
|
def inside(dir, &block)
|
@@ -14,6 +12,8 @@ RSpec.configure do |config|
|
|
14
12
|
config.include FileUtils
|
15
13
|
config.include Support
|
16
14
|
|
15
|
+
config.order = 'random'
|
16
|
+
|
17
17
|
config.expect_with :rspec do |c|
|
18
18
|
c.syntax = :expect
|
19
19
|
end
|
metadata
CHANGED
@@ -1,96 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nrename
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Victor Deryagin
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-04-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: aruba
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
19
|
+
version: 0.5.1
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
26
|
+
version: 0.5.1
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: guard-rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 2.5.4
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 2.5.4
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.
|
47
|
+
version: 10.0.3
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
54
|
+
version: 10.0.3
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rb-inotify
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
61
|
+
version: 0.9.0
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rspec
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 2.11.0
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 2.11.0
|
68
|
+
version: 0.9.0
|
94
69
|
description: Nrename lets you rename set of numbered files so that they can be sorted
|
95
70
|
correctly in any shell or file manager.
|
96
71
|
email:
|
@@ -107,6 +82,7 @@ files:
|
|
107
82
|
- features/renaming_files.feature
|
108
83
|
- features/support/env.rb
|
109
84
|
- lib/nrename.rb
|
85
|
+
- lib/nrename/counter.rb
|
110
86
|
- lib/nrename/directory.rb
|
111
87
|
- lib/nrename/numbered_file.rb
|
112
88
|
- lib/nrename/options.rb
|
@@ -121,29 +97,26 @@ files:
|
|
121
97
|
homepage: https://github.com/vderyagin/nrename
|
122
98
|
licenses:
|
123
99
|
- MIT
|
100
|
+
metadata: {}
|
124
101
|
post_install_message:
|
125
102
|
rdoc_options: []
|
126
103
|
require_paths:
|
127
104
|
- lib
|
128
105
|
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
106
|
requirements:
|
131
|
-
- -
|
107
|
+
- - '>='
|
132
108
|
- !ruby/object:Gem::Version
|
133
109
|
version: '0'
|
134
|
-
segments:
|
135
|
-
- 0
|
136
|
-
hash: -2006144639180283266
|
137
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
111
|
requirements:
|
140
|
-
- -
|
112
|
+
- - '>='
|
141
113
|
- !ruby/object:Gem::Version
|
142
114
|
version: 1.3.6
|
143
115
|
requirements: []
|
144
116
|
rubyforge_project: nrename
|
145
|
-
rubygems_version:
|
117
|
+
rubygems_version: 2.0.3
|
146
118
|
signing_key:
|
147
|
-
specification_version:
|
119
|
+
specification_version: 4
|
148
120
|
summary: Command-line utility for renaming numbered files.
|
149
121
|
test_files: []
|
122
|
+
has_rdoc:
|