filter_rename 1.0.0 → 1.2.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/.github/FUNDING.yml +16 -0
- data/.github/workflows/gem-push.yml +46 -0
- data/.github/workflows/main.yml +32 -0
- data/.rubocop.yml +84 -0
- data/Gemfile +15 -1
- data/README.md +83 -39
- data/Rakefile +7 -1
- data/exe/filter_rename +1 -1
- data/filter_rename.gemspec +23 -25
- data/lib/filter_rename/cli.rb +121 -61
- data/lib/filter_rename/config.rb +219 -46
- data/lib/filter_rename/filename.rb +59 -35
- data/lib/filter_rename/filename_factory.rb +22 -17
- data/lib/filter_rename/filetype/audio_filename.rb +86 -0
- data/lib/filter_rename/filetype/image_filename.rb +18 -12
- data/lib/filter_rename/filetype/mp3_filename.rb +23 -21
- data/lib/filter_rename/filetype/pdf_filename.rb +19 -12
- data/lib/filter_rename/filter_base.rb +171 -70
- data/lib/filter_rename/filter_pipe.rb +20 -15
- data/lib/filter_rename/filters.rb +737 -269
- data/lib/filter_rename/utils.rb +306 -105
- data/lib/filter_rename/version.rb +3 -1
- data/lib/filter_rename.rb +100 -34
- data/lib/filter_rename.yaml +27 -13
- metadata +34 -44
data/lib/filter_rename.rb
CHANGED
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
9
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "fileutils"
|
|
4
|
+
require "filter_rename/version"
|
|
5
|
+
require "filter_rename/config"
|
|
6
|
+
require "filter_rename/filter_base"
|
|
7
|
+
require "filter_rename/filters"
|
|
8
|
+
require "filter_rename/filter_pipe"
|
|
9
|
+
require "filter_rename/filename"
|
|
10
|
+
require "filter_rename/filename_factory"
|
|
11
|
+
require "filter_rename/utils"
|
|
10
12
|
|
|
11
13
|
module FilterRename
|
|
12
|
-
|
|
14
|
+
#
|
|
15
|
+
# Facade class for all the operations.
|
|
16
|
+
#
|
|
13
17
|
class Builder
|
|
14
|
-
|
|
15
18
|
def initialize(options)
|
|
16
19
|
@cfg = Config.new(options.global)
|
|
17
20
|
@filters = FilterList.new(options.filters)
|
|
18
21
|
@files = options.files
|
|
19
22
|
@show_macro = options.show_macro
|
|
23
|
+
@help_config = options.help_config
|
|
20
24
|
end
|
|
21
25
|
|
|
22
|
-
def
|
|
26
|
+
def diff
|
|
27
|
+
expand_files!
|
|
23
28
|
raise MissingFiles if @files.empty?
|
|
24
29
|
|
|
25
30
|
@filters.expand_macros!(@cfg.macro)
|
|
26
31
|
|
|
27
|
-
Messages.label "
|
|
32
|
+
Messages.label "Diff:"
|
|
28
33
|
|
|
29
34
|
@files.each do |src|
|
|
30
35
|
fp = FilterPipe.new(src, @filters, @cfg).apply
|
|
@@ -33,13 +38,16 @@ module FilterRename
|
|
|
33
38
|
end
|
|
34
39
|
|
|
35
40
|
def apply
|
|
41
|
+
expand_files!
|
|
36
42
|
raise MissingFiles if @files.empty?
|
|
37
43
|
|
|
38
44
|
@filters.expand_macros!(@cfg.macro)
|
|
45
|
+
renamed = 0
|
|
46
|
+
skipped = 0
|
|
47
|
+
errors = 0
|
|
39
48
|
|
|
40
49
|
Messages.label "Apply:"
|
|
41
50
|
@files.each do |src|
|
|
42
|
-
|
|
43
51
|
fp = FilterPipe.new(src, @filters, @cfg).apply
|
|
44
52
|
|
|
45
53
|
if fp.changed?
|
|
@@ -47,91 +55,149 @@ module FilterRename
|
|
|
47
55
|
|
|
48
56
|
if old_data[:full_filename]
|
|
49
57
|
Messages.renamed!(old_data, fp.dest)
|
|
50
|
-
Messages.changed_tags(fp, old_data, false) if fp.source.class.
|
|
51
|
-
|
|
58
|
+
Messages.changed_tags(fp, old_data, header: false) if fp.source.class.writable_tags?
|
|
59
|
+
renamed += 1
|
|
60
|
+
elsif fp.source.class.writable_tags?
|
|
52
61
|
Messages.changed_tags(fp, old_data)
|
|
62
|
+
renamed += 1
|
|
63
|
+
else
|
|
64
|
+
Messages.file_exists(fp)
|
|
65
|
+
Messages.file_hash(fp, @cfg.global.hash_type) if @cfg.global.hash_if_exists
|
|
66
|
+
errors += 1
|
|
53
67
|
end
|
|
54
|
-
|
|
55
68
|
else
|
|
56
69
|
Messages.skipping(fp)
|
|
70
|
+
skipped += 1
|
|
57
71
|
end
|
|
58
72
|
end
|
|
73
|
+
Messages.renaming_summary(renamed, skipped, errors)
|
|
59
74
|
end
|
|
60
75
|
|
|
61
76
|
def globals
|
|
62
|
-
Messages.label
|
|
77
|
+
Messages.label "Global configurations:"
|
|
63
78
|
Messages.config_list @cfg.global
|
|
64
79
|
end
|
|
65
80
|
|
|
66
81
|
def configs
|
|
67
|
-
Messages.label
|
|
82
|
+
Messages.label "Filter's configurations:"
|
|
68
83
|
Messages.config_list @cfg.filter
|
|
69
84
|
end
|
|
70
85
|
|
|
71
86
|
def words
|
|
72
|
-
Messages.label
|
|
87
|
+
Messages.label "Groups and subgroups of words available for translation:"
|
|
73
88
|
Messages.config_multilist @cfg.words
|
|
74
89
|
end
|
|
75
90
|
|
|
76
91
|
def dry_run
|
|
92
|
+
expand_files!
|
|
77
93
|
raise MissingFiles if @files.empty?
|
|
78
94
|
|
|
79
95
|
@filters.expand_macros!(@cfg.macro)
|
|
80
|
-
cache =
|
|
96
|
+
cache = {}
|
|
97
|
+
renamed = 0
|
|
98
|
+
skipped = 0
|
|
99
|
+
errors = 0
|
|
81
100
|
|
|
82
101
|
Messages.label "Dry Run:"
|
|
83
102
|
@files.each do |src|
|
|
84
|
-
|
|
85
103
|
fp = FilterPipe.new(src, @filters, @cfg).apply
|
|
86
104
|
|
|
87
105
|
if fp.unchanged?
|
|
88
106
|
Messages.skipping(fp)
|
|
89
|
-
|
|
107
|
+
skipped += 1
|
|
108
|
+
elsif cache.keys.include?(fp.dest.full_filename) || fp.dest.exists?
|
|
90
109
|
if fp.source.full_filename == fp.dest.full_filename
|
|
91
110
|
Messages.changed_tags(fp)
|
|
92
111
|
else
|
|
93
112
|
Messages.file_exists(fp)
|
|
113
|
+
Messages.file_hash(fp, @cfg.global.hash_type, cache[fp.dest.full_filename]) if @cfg.global.hash_if_exists
|
|
114
|
+
errors += 1
|
|
94
115
|
end
|
|
95
116
|
else
|
|
96
117
|
Messages.renamed(fp)
|
|
97
|
-
Messages.changed_tags(fp, {}, false) if fp.source.class.
|
|
98
|
-
cache
|
|
118
|
+
Messages.changed_tags(fp, {}, header: false) if fp.source.class.writable_tags?
|
|
119
|
+
cache[fp.dest.full_filename] = fp.dest
|
|
120
|
+
renamed += 1
|
|
99
121
|
end
|
|
100
122
|
end
|
|
123
|
+
Messages.renaming_summary(renamed, skipped, errors)
|
|
101
124
|
end
|
|
102
125
|
|
|
103
126
|
def targets
|
|
127
|
+
expand_files!
|
|
104
128
|
raise MissingFiles if @files.empty?
|
|
105
129
|
|
|
106
|
-
|
|
130
|
+
view = @cfg.global.inline_targets ? :inline_targets : :column_targets
|
|
131
|
+
Messages.label "Targets:"
|
|
107
132
|
@files.each do |src|
|
|
133
|
+
fname = FilenameFactory.create(src, @cfg.global)
|
|
134
|
+
|
|
135
|
+
Messages.multi fname.full_filename
|
|
136
|
+
Messages.send(view, fname)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def values
|
|
141
|
+
expand_files!
|
|
142
|
+
raise MissingFiles if @files.empty?
|
|
108
143
|
|
|
144
|
+
view = @cfg.global.inline_targets ? :inline_target_values : :column_target_values
|
|
145
|
+
Messages.label "Target values:"
|
|
146
|
+
@files.each do |src|
|
|
109
147
|
fname = FilenameFactory.create(src, @cfg.global)
|
|
110
148
|
|
|
111
149
|
Messages.multi fname.full_filename
|
|
112
|
-
Messages.send(
|
|
150
|
+
Messages.send(view, fname)
|
|
113
151
|
end
|
|
114
152
|
end
|
|
115
153
|
|
|
116
154
|
def macros
|
|
117
|
-
Messages.label
|
|
118
|
-
Messages.list @cfg.macro.
|
|
155
|
+
Messages.label "Macros:"
|
|
156
|
+
Messages.list @cfg.macro.macros
|
|
119
157
|
end
|
|
120
158
|
|
|
121
159
|
def show_macro
|
|
122
160
|
Messages.label "Macro: #{@show_macro}"
|
|
123
161
|
macro = @cfg.macro.get_macro(@show_macro)
|
|
124
|
-
if macro.
|
|
162
|
+
if macro.instance_of?(Array)
|
|
125
163
|
macro.each do |k|
|
|
126
|
-
Messages.item k.keys.first
|
|
164
|
+
Messages.item "#{k.keys.first}: " + k.values.first.map { |x| "\"#{x.to_s.green}\"" }.join(",")
|
|
127
165
|
end
|
|
128
|
-
elsif macro.
|
|
166
|
+
elsif macro.instance_of?(Hash)
|
|
129
167
|
macro.each do |k, v|
|
|
130
|
-
Messages.item k
|
|
168
|
+
Messages.item "#{k}: " + v.map { |x| "\"#{x.to_s.green}\"" }.join(", ")
|
|
131
169
|
end
|
|
132
170
|
end
|
|
133
171
|
end
|
|
134
172
|
|
|
135
|
-
|
|
173
|
+
def help_config
|
|
174
|
+
name = @help_config.downcase.gsub("-", "_").gsub(/^--/, "")
|
|
175
|
+
|
|
176
|
+
if name =~ /^g_/
|
|
177
|
+
name = name.gsub(/^g_/, "")
|
|
178
|
+
@help_config = GlobalConfig::OPTIONS[name.to_sym]
|
|
179
|
+
elsif @help_config =~ /^f_/
|
|
180
|
+
name = name.gsub(/^f_/, "")
|
|
181
|
+
@help_config = FilterConfig::OPTIONS[name.to_sym]
|
|
182
|
+
elsif FilterConfig::OPTIONS.key?(name.to_sym)
|
|
183
|
+
@help_config = FilterConfig::OPTIONS[name.to_sym]
|
|
184
|
+
elsif GlobalConfig::OPTIONS.key?(name.to_sym)
|
|
185
|
+
@help_config = GlobalConfig::OPTIONS[name.to_sym]
|
|
186
|
+
else
|
|
187
|
+
raise InvalidOption, name
|
|
188
|
+
end
|
|
189
|
+
Messages.help_option name, @help_config
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
private
|
|
193
|
+
|
|
194
|
+
def expand_files!
|
|
195
|
+
@files = @files.map do |f|
|
|
196
|
+
f = File.expand_path(f.chomp)
|
|
197
|
+
raise FileNotFound, f if @cfg.global.check_source && !File.exist?(f)
|
|
136
198
|
|
|
199
|
+
f
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
137
203
|
end
|
data/lib/filter_rename.yaml
CHANGED
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
:global:
|
|
3
|
-
:hash_type: :
|
|
3
|
+
:hash_type: :md5
|
|
4
|
+
:hash_on_tags: false
|
|
5
|
+
:hash_if_exists: true
|
|
4
6
|
:date_format: '%Y-%m-%d'
|
|
5
7
|
:counter_length: 3
|
|
6
8
|
:counter_start: 0
|
|
7
|
-
:
|
|
8
|
-
:pdf_metadata:
|
|
9
|
-
:image_metadata:
|
|
9
|
+
:inline_targets: true
|
|
10
|
+
:pdf_metadata: true
|
|
11
|
+
:image_metadata: true
|
|
12
|
+
:audio_metadata: true
|
|
13
|
+
:mimemagic: true
|
|
14
|
+
:essential_tags: false
|
|
15
|
+
:check_source: true
|
|
10
16
|
:filter:
|
|
11
17
|
:lang: :en
|
|
12
18
|
:word_separator: " "
|
|
19
|
+
:number_separator: '.'
|
|
20
|
+
:occurrence_separator: '-'
|
|
13
21
|
:target: :name
|
|
14
22
|
:ignore_case: true
|
|
15
23
|
:grep: '.*'
|
|
16
|
-
:
|
|
24
|
+
:grep_on_dest: false
|
|
17
25
|
:grep_exclude: false
|
|
18
26
|
# full_filename, :full_path, :filename, <target>
|
|
19
27
|
:grep_target: :full_filename
|
|
@@ -27,6 +35,12 @@
|
|
|
27
35
|
:fr: ['Salut']
|
|
28
36
|
:es: ['Hola']
|
|
29
37
|
:pt: ['Olá']
|
|
38
|
+
:months:
|
|
39
|
+
:short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
40
|
+
:long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
|
41
|
+
:days:
|
|
42
|
+
:short: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
|
43
|
+
:long: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
|
|
30
44
|
:short_months:
|
|
31
45
|
:en: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
32
46
|
:it: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']
|
|
@@ -70,32 +84,32 @@
|
|
|
70
84
|
:squeeze:
|
|
71
85
|
- ' '
|
|
72
86
|
-
|
|
73
|
-
:
|
|
87
|
+
:translate:
|
|
74
88
|
- :long_months
|
|
75
89
|
- :it
|
|
76
90
|
- :en
|
|
77
91
|
-
|
|
78
|
-
:
|
|
92
|
+
:translate:
|
|
79
93
|
- :long_months
|
|
80
94
|
- :es
|
|
81
95
|
- :en
|
|
82
96
|
-
|
|
83
|
-
:
|
|
97
|
+
:translate:
|
|
84
98
|
- :long_months
|
|
85
99
|
- :fr
|
|
86
100
|
- :en
|
|
87
101
|
-
|
|
88
|
-
:
|
|
102
|
+
:translate:
|
|
89
103
|
- :long_months
|
|
90
104
|
- :de
|
|
91
105
|
- :en
|
|
92
106
|
-
|
|
93
|
-
:
|
|
107
|
+
:translate:
|
|
94
108
|
- :long_months
|
|
95
109
|
- :hr
|
|
96
110
|
- :en
|
|
97
111
|
-
|
|
98
|
-
:
|
|
112
|
+
:translate:
|
|
99
113
|
- :long_months
|
|
100
114
|
- :pt
|
|
101
115
|
- :en
|
|
@@ -113,7 +127,7 @@
|
|
|
113
127
|
- '\1 \2'
|
|
114
128
|
append_issue:
|
|
115
129
|
:move_to:
|
|
116
|
-
- '(Issue
|
|
130
|
+
- 'Volume +([0-9]+)|Issue +([0-9]+)'
|
|
117
131
|
- 'tmp'
|
|
118
132
|
:template:
|
|
119
133
|
- '<name> #<tmp>'
|
|
@@ -144,7 +158,7 @@
|
|
|
144
158
|
- ignore_case:false
|
|
145
159
|
-
|
|
146
160
|
:replace:
|
|
147
|
-
- "([A-Z])([a-z!']+)"
|
|
161
|
+
- "(?<![A-Z])([A-Z])([a-z!',-]+)"
|
|
148
162
|
- " \\1\\2 "
|
|
149
163
|
-
|
|
150
164
|
:replace:
|
metadata
CHANGED
|
@@ -1,59 +1,44 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: filter_rename
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fabio Mucciante
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '2.0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '2.0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rake
|
|
13
|
+
name: differ
|
|
29
14
|
requirement: !ruby/object:Gem::Requirement
|
|
30
15
|
requirements:
|
|
31
|
-
- - "
|
|
16
|
+
- - ">="
|
|
32
17
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
34
|
-
type: :
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
35
20
|
prerelease: false
|
|
36
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
22
|
requirements:
|
|
38
|
-
- - "
|
|
23
|
+
- - ">="
|
|
39
24
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
25
|
+
version: '0'
|
|
41
26
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
27
|
+
name: exiv2
|
|
43
28
|
requirement: !ruby/object:Gem::Requirement
|
|
44
29
|
requirements:
|
|
45
|
-
- - "
|
|
30
|
+
- - ">="
|
|
46
31
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
48
|
-
type: :
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
49
34
|
prerelease: false
|
|
50
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
36
|
requirements:
|
|
52
|
-
- - "
|
|
37
|
+
- - ">="
|
|
53
38
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
39
|
+
version: '0'
|
|
55
40
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
41
|
+
name: fastimage
|
|
57
42
|
requirement: !ruby/object:Gem::Requirement
|
|
58
43
|
requirements:
|
|
59
44
|
- - ">="
|
|
@@ -67,7 +52,7 @@ dependencies:
|
|
|
67
52
|
- !ruby/object:Gem::Version
|
|
68
53
|
version: '0'
|
|
69
54
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
55
|
+
name: keisan
|
|
71
56
|
requirement: !ruby/object:Gem::Requirement
|
|
72
57
|
requirements:
|
|
73
58
|
- - ">="
|
|
@@ -81,7 +66,7 @@ dependencies:
|
|
|
81
66
|
- !ruby/object:Gem::Version
|
|
82
67
|
version: '0'
|
|
83
68
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
69
|
+
name: mimemagic
|
|
85
70
|
requirement: !ruby/object:Gem::Requirement
|
|
86
71
|
requirements:
|
|
87
72
|
- - ">="
|
|
@@ -95,7 +80,7 @@ dependencies:
|
|
|
95
80
|
- !ruby/object:Gem::Version
|
|
96
81
|
version: '0'
|
|
97
82
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
83
|
+
name: mp3info
|
|
99
84
|
requirement: !ruby/object:Gem::Requirement
|
|
100
85
|
requirements:
|
|
101
86
|
- - ">="
|
|
@@ -109,7 +94,7 @@ dependencies:
|
|
|
109
94
|
- !ruby/object:Gem::Version
|
|
110
95
|
version: '0'
|
|
111
96
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
97
|
+
name: pdf-reader
|
|
113
98
|
requirement: !ruby/object:Gem::Requirement
|
|
114
99
|
requirements:
|
|
115
100
|
- - ">="
|
|
@@ -123,7 +108,7 @@ dependencies:
|
|
|
123
108
|
- !ruby/object:Gem::Version
|
|
124
109
|
version: '0'
|
|
125
110
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
111
|
+
name: taglib-ruby
|
|
127
112
|
requirement: !ruby/object:Gem::Requirement
|
|
128
113
|
requirements:
|
|
129
114
|
- - ">="
|
|
@@ -136,8 +121,9 @@ dependencies:
|
|
|
136
121
|
- - ">="
|
|
137
122
|
- !ruby/object:Gem::Version
|
|
138
123
|
version: '0'
|
|
139
|
-
description:
|
|
140
|
-
|
|
124
|
+
description: FilterRename is a bulk renaming tool, based on the concept of filters
|
|
125
|
+
as small operations to perform over sections of the full filename logically represented
|
|
126
|
+
in targets.
|
|
141
127
|
email:
|
|
142
128
|
- fabio.mucciante@gmail.com
|
|
143
129
|
executables:
|
|
@@ -145,8 +131,12 @@ executables:
|
|
|
145
131
|
extensions: []
|
|
146
132
|
extra_rdoc_files: []
|
|
147
133
|
files:
|
|
134
|
+
- ".github/FUNDING.yml"
|
|
135
|
+
- ".github/workflows/gem-push.yml"
|
|
136
|
+
- ".github/workflows/main.yml"
|
|
148
137
|
- ".gitignore"
|
|
149
138
|
- ".rspec"
|
|
139
|
+
- ".rubocop.yml"
|
|
150
140
|
- ".travis.yml"
|
|
151
141
|
- CODE_OF_CONDUCT.md
|
|
152
142
|
- Gemfile
|
|
@@ -163,6 +153,7 @@ files:
|
|
|
163
153
|
- lib/filter_rename/config.rb
|
|
164
154
|
- lib/filter_rename/filename.rb
|
|
165
155
|
- lib/filter_rename/filename_factory.rb
|
|
156
|
+
- lib/filter_rename/filetype/audio_filename.rb
|
|
166
157
|
- lib/filter_rename/filetype/image_filename.rb
|
|
167
158
|
- lib/filter_rename/filetype/mp3_filename.rb
|
|
168
159
|
- lib/filter_rename/filetype/pdf_filename.rb
|
|
@@ -176,11 +167,11 @@ licenses:
|
|
|
176
167
|
- GPL-3.0
|
|
177
168
|
metadata:
|
|
178
169
|
bug_tracker_uri: https://github.com/fabiomux/filter_rename/issues
|
|
179
|
-
|
|
180
|
-
homepage_uri: https://github.com/fabiomux/filter_rename
|
|
170
|
+
homepage_uri: https://freeaptitude.altervista.org/projects/filter-rename.html
|
|
181
171
|
source_code_uri: https://github.com/fabiomux/filter_rename
|
|
172
|
+
changelog_uri: https://freeaptitude.altervista.org/projects/filter-rename.html#changelog
|
|
182
173
|
wiki_uri: https://github.com/fabiomux/filter_rename/wiki
|
|
183
|
-
|
|
174
|
+
rubygems_mfa_required: 'true'
|
|
184
175
|
rdoc_options: []
|
|
185
176
|
require_paths:
|
|
186
177
|
- lib
|
|
@@ -188,15 +179,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
188
179
|
requirements:
|
|
189
180
|
- - ">="
|
|
190
181
|
- !ruby/object:Gem::Version
|
|
191
|
-
version:
|
|
182
|
+
version: 2.5.0
|
|
192
183
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
184
|
requirements:
|
|
194
185
|
- - ">="
|
|
195
186
|
- !ruby/object:Gem::Version
|
|
196
187
|
version: '0'
|
|
197
188
|
requirements: []
|
|
198
|
-
rubygems_version: 3.
|
|
199
|
-
signing_key:
|
|
189
|
+
rubygems_version: 3.6.7
|
|
200
190
|
specification_version: 4
|
|
201
|
-
summary:
|
|
191
|
+
summary: File renaming tool which make use of a chain of actions called filters.
|
|
202
192
|
test_files: []
|