modname 0.2.4 → 1.0.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/lib/modname/modder.rb +26 -7
- data/lib/modname/version.rb +1 -1
- data/lib/modname.rb +3 -6
- data/readme.md +3 -4
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a75ac155dd3255d8cebd50ec9e01e629a9f64aa0b17090e482db22978baf8832
|
|
4
|
+
data.tar.gz: 29414f4677355f27ddda53fbfd857241adf1550c28709c955da4e2165b71d1c6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ea30c66c31f07b5b5f928cb49c0fd8cbddd6d765042b7b3f1cdd7c08e746d0085f7dd916e32488424b3c9a594a46a9c7ccd1fe769d663b0217b49b60216e6f6
|
|
7
|
+
data.tar.gz: 39b3a3d68f4462308713223c71b6fc7a7b307f333f452e1b1c4cf7e9509698e075c7ab2023dd6adcc25581e87dbecceb1dde56cf62b7022b29f1c5abbdb2eed8
|
data/lib/modname/modder.rb
CHANGED
|
@@ -14,9 +14,12 @@ module Modder
|
|
|
14
14
|
match, trans = Modder.parse args
|
|
15
15
|
|
|
16
16
|
Modder.files(@options[:recurse]).each do |file|
|
|
17
|
-
new =
|
|
17
|
+
new = Modder.rename_base(file) do |base|
|
|
18
|
+
result = base.sub Regexp.new(match), trans
|
|
19
|
+
result.empty? ? base : result # no changes
|
|
20
|
+
end
|
|
18
21
|
|
|
19
|
-
next if new
|
|
22
|
+
next if new.nil?
|
|
20
23
|
|
|
21
24
|
@transfer[file] = new
|
|
22
25
|
end
|
|
@@ -36,9 +39,9 @@ module Modder
|
|
|
36
39
|
|
|
37
40
|
else # move match extension to targeted
|
|
38
41
|
Modder.files(@options[:recurse]).each do |file|
|
|
39
|
-
new = file.sub(/#{match}$/, trans)
|
|
42
|
+
new = Modder.rename_base(file) { |base| base.sub(/#{match}$/, trans) }
|
|
40
43
|
|
|
41
|
-
next if new
|
|
44
|
+
next if new.nil?
|
|
42
45
|
|
|
43
46
|
@transfer[file] = new
|
|
44
47
|
end
|
|
@@ -80,6 +83,18 @@ class << Modder
|
|
|
80
83
|
end
|
|
81
84
|
end
|
|
82
85
|
|
|
86
|
+
# apply a transformation to a file's basename only, preserving its directory.
|
|
87
|
+
# the block receives the basename and returns a new basename; returning it
|
|
88
|
+
# unchanged means no rename should happen, in which case nil is returned
|
|
89
|
+
def rename_base(file)
|
|
90
|
+
dir, base = File.split(file)
|
|
91
|
+
new_base = yield base
|
|
92
|
+
|
|
93
|
+
return nil if new_base == base
|
|
94
|
+
|
|
95
|
+
dir == '.' ? new_base : File.join(dir, new_base)
|
|
96
|
+
end
|
|
97
|
+
|
|
83
98
|
# show the status of current files
|
|
84
99
|
def status(transfer)
|
|
85
100
|
if transfer.empty?
|
|
@@ -127,10 +142,14 @@ class << Modder
|
|
|
127
142
|
transfer = {}
|
|
128
143
|
allexts = ext.empty?
|
|
129
144
|
Modder.files(recurse).each do |file|
|
|
130
|
-
|
|
145
|
+
new = Modder.rename_base(file) do |base|
|
|
146
|
+
cur_ext = allexts ? base.split('.').last : ext
|
|
147
|
+
next base if cur_ext == base # no extension to change
|
|
148
|
+
|
|
149
|
+
base.sub(/#{cur_ext}$/i, cur_ext.downcase)
|
|
150
|
+
end
|
|
131
151
|
|
|
132
|
-
|
|
133
|
-
next if new == file || ext == file # no changes or extension
|
|
152
|
+
next if new.nil?
|
|
134
153
|
|
|
135
154
|
transfer[file] = new
|
|
136
155
|
end
|
data/lib/modname/version.rb
CHANGED
data/lib/modname.rb
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
# parse modname's command line args
|
|
4
4
|
|
|
5
5
|
require 'colored'
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
require_relative 'modname/banner'
|
|
7
|
+
require_relative 'modname/modder'
|
|
8
|
+
require_relative 'modname/version'
|
|
9
9
|
|
|
10
10
|
# Modname is a versatile file naming tool for renaming groups of files
|
|
11
11
|
module Modname
|
|
@@ -13,10 +13,7 @@ module Modname
|
|
|
13
13
|
class << self
|
|
14
14
|
def run(args) = Driver.new.run(args)
|
|
15
15
|
end
|
|
16
|
-
end
|
|
17
16
|
|
|
18
|
-
# Modname module containing the CLI driver
|
|
19
|
-
module Modname
|
|
20
17
|
# Driver class handles command-line argument parsing and execution
|
|
21
18
|
class Driver
|
|
22
19
|
include Modder
|
data/readme.md
CHANGED
|
@@ -70,16 +70,15 @@ try running `gem install bundler`. Once that is done:
|
|
|
70
70
|
Now, we should be able to build the gem locally. This will build the local
|
|
71
71
|
modname gem and link it in your path, so you can playing around with `modname`.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
just build
|
|
74
74
|
|
|
75
|
-
This uses `rspec` and `
|
|
75
|
+
This uses `rspec` and `just` to run a suite of unit tests. To run the suite:
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
just spec
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
## todos
|
|
81
81
|
|
|
82
|
-
- only try to rename filenames, not folders on recursive calls
|
|
83
82
|
- figure out whats up with the extension globbing
|
|
84
83
|
- apply optionally to directories as well
|
|
85
84
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: modname
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jeremy Warner
|
|
@@ -23,20 +23,6 @@ dependencies:
|
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '1.2'
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: rake
|
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '0'
|
|
33
|
-
type: :development
|
|
34
|
-
prerelease: false
|
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - ">="
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '0'
|
|
40
26
|
- !ruby/object:Gem::Dependency
|
|
41
27
|
name: rspec
|
|
42
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -110,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
110
96
|
- !ruby/object:Gem::Version
|
|
111
97
|
version: '0'
|
|
112
98
|
requirements: []
|
|
113
|
-
rubygems_version:
|
|
99
|
+
rubygems_version: 4.0.10
|
|
114
100
|
specification_version: 4
|
|
115
101
|
summary: a versatile file naming tool.
|
|
116
102
|
test_files: []
|