mass_renamer 0.9.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d46b3031201bc4a0331b657ffed062873c5e3ede
4
- data.tar.gz: e4de33fa45fe4d9fdd0e3adcd42073256f281f4d
3
+ metadata.gz: 3257e201ad3cb42e4ccebbf0a58630293c9cfd2b
4
+ data.tar.gz: 28761b844a71a4167214732aa50b1f8ff15f2ec3
5
5
  SHA512:
6
- metadata.gz: 9c4e30e093954d32783d73861a5c1cc49a03d4e3d6b11f81ecf1942ad73119a99b31de8110efcd9bc051c5c47904a3e59d913f8ab7ec3f19d5d8c09d767366bd
7
- data.tar.gz: bdeca266b0c0bdb21374b51d1e205c58c3b9f252cdb1f90ab9b93b560162c2a34e2b77093fb5ee52d97effe1d651c28fa75d06b5e5d80b2109ab5e991bc72410
6
+ metadata.gz: 9b8838efa35da98760cc9f3dfe8ba5cb7b6e0e615433becdeb3a7b25e3f968b08ed5001c2824fe7c9c89f0f9745950a0d33089f72d003004a6d3db2fb6494617
7
+ data.tar.gz: 4b2ffea33edd18d6ec0358e59e9afcb742dfcc1064ba24866b39996b3c6be8bef44ef0aa68c3af793da020148921f581fb9a9cc2f7f11141b38332336e04563a
@@ -37,7 +37,10 @@ module Renamer
37
37
  opt.on('-r', '--recursive', 'Recurse into subdirectories') do
38
38
  opts[:recursive] = true
39
39
  end
40
- opt.on('-D', '--no-delete', 'Complete disables delete function') do
40
+ opt.on('-F', '--force', 'Don\'t ask if target exists') do
41
+ opts[:force] = true
42
+ end
43
+ opt.on('-D', '--no-delete', 'Completely disables delete function') do
41
44
  opts[:no_delete] = true
42
45
  end
43
46
  opt.on('-v', '--verify', 'Ask for consent before doing each action') do
@@ -5,11 +5,12 @@ module Renamer
5
5
 
6
6
  class Filesystem_Driver
7
7
 
8
- def initialize ask: , dry:, verbose:, no_delete:
8
+ def initialize ask: , dry:, verbose:, no_delete:, force:
9
9
  @ask = ask
10
10
  @dry = dry
11
11
  @verbose = verbose
12
12
  @no_delete = no_delete
13
+ @force = force
13
14
  end
14
15
 
15
16
  def ask msg, from, to = nil
@@ -17,6 +18,25 @@ module Renamer
17
18
  gets.chomp.downcase == ?y
18
19
  end
19
20
 
21
+ def overwrite to
22
+ loop do
23
+ print "Overwrite #{to}? [Y(es)/N(o)/A(bort)]: "
24
+ case gets.chomp.downcase
25
+ when ?a
26
+ puts "Aborting."
27
+ return :abort
28
+ when ?y
29
+ return :yes
30
+ when ?n
31
+ puts "Not overwriting, skipping."
32
+ return :no
33
+ else
34
+ puts "Unexpected answer, try again."
35
+ end
36
+ end
37
+
38
+ end
39
+
20
40
  def remove! from
21
41
  raise "Deletes were disables." if @no_delete
22
42
  begin
@@ -39,6 +59,15 @@ module Renamer
39
59
  return unless ask("Copy", from, to)
40
60
  end
41
61
  return if @dry
62
+ if File.exist?(to) and not @force
63
+ case overwrite(to)
64
+ when :abort
65
+ exit 1
66
+ when :no
67
+ return
68
+ when :yes
69
+ end
70
+ end
42
71
  FileUtils.mkdir_p File.dirname(to)
43
72
  FileUtils.copy_entry from, to, preserve: true, remove_destination: true
44
73
  rescue StandardError => e
@@ -54,6 +83,15 @@ module Renamer
54
83
  return unless ask("Move", from, to)
55
84
  end
56
85
  return if @dry
86
+ if File.exist?(to) and not @force
87
+ case overwrite(to)
88
+ when :abort
89
+ exit 1
90
+ when :no
91
+ return
92
+ when :yes
93
+ end
94
+ end
57
95
  FileUtils.mkdir_p File.dirname(to)
58
96
  File.rename from, to
59
97
  rescue StandardError => e
@@ -87,7 +125,8 @@ module Renamer
87
125
  ask: @opts[:ask],
88
126
  dry: @opts[:dry],
89
127
  verbose: @opts[:verbose],
90
- no_delete: @opts[:no_delete]
128
+ no_delete: @opts[:no_delete],
129
+ force: @opts[:force]
91
130
  )
92
131
 
93
132
  renames.each do |from, to|
@@ -103,8 +142,8 @@ module Renamer
103
142
  next if from == to
104
143
  fd.move! from, to
105
144
  else
106
- to.each { |to| fd.copy! from, to }
107
- fd.remove! from
145
+ to.each { |to| fd.copy! from, to unless from == to }
146
+ fd.remove! from unless to.include? from
108
147
  end
109
148
  rescue
110
149
  next if @opts[:keep_going]
data/lib/renamer/free.rb CHANGED
@@ -58,7 +58,7 @@ module Renamer
58
58
  end
59
59
 
60
60
  def parse_renames str
61
- lines = str.lines.map(&:chomp)
61
+ lines = str.lines.map(&:chomp).reject { |l| l[/^\s*$/] }
62
62
  renames = []
63
63
  until lines.empty?
64
64
  filename = lines.shift
@@ -1,3 +1,3 @@
1
1
  module Renamer
2
- VERSION = '0.9.1'
2
+ VERSION = '1.0.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mass_renamer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gray Wolf