rename2mac 0.9.4 → 0.9.5

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: 8599bcf752af590a428546ecc70ce7578a44f792
4
- data.tar.gz: e8e7406f2c38815dab761cdf302c1ac9180b8fec
3
+ metadata.gz: b38ef30c1d7c15e3ba46586d9e447351956d4f8a
4
+ data.tar.gz: fd5d7c3c8b53f7c4e67561b6de5f4aa545ab58d4
5
5
  SHA512:
6
- metadata.gz: b2a184cf5133bfebd4a1071d6099b3db32ee2407bc9d91404eec6d6f6733b805dc4121da5691287341e4ca35b0bd4eeef768e740787f6d974ca8dc626d5ef6b7
7
- data.tar.gz: 1f6440252cca2772a31b4557bcbfd27b07dfcfe487204ff1a77a4b74d96ec5fb20ce3285929c90069b6590869d7607a00d16735ae8d0096bb36f0b76c62b3245
6
+ metadata.gz: f8556b354e5595741d2cbc2ea29d4f7f210b7693ca1e718e8cbda4fb7b64cd6c79921e8cfe14c7db25509be5dd385057b491e8324b9c68a1aed67d99142e36a4
7
+ data.tar.gz: a8f94c4d709718224068ead0dc367d36825444bd1ecc54de80ba7309242b5151adf3ed88dbe3b8547bc85fcecf279d6aa2c32a9cb5d8c8be584733b238cc1780
data/README.md CHANGED
@@ -4,7 +4,11 @@ Rename folderful of filenames to Mac OS X supported format (UTF8-MAC). Mac OS X
4
4
 
5
5
  Background:
6
6
  --------------------------
7
- The Mac OS X system handles filenames in modified Unicode format called UTF8-Mac. If a filename contain none UTF8-Mac character, the Finder may exihibit behavour such as disappearing file, constant refresh, unable to open file, etc. To fix this problem, the file has to be renamed using UTF8-Mac format. This program will recursively rename all the filenames that needs to be renamed to UTF8-Mac format.
7
+ When I use Mac OS X Finder, I have a lot of issue when dealing with Asian filenames, such as Japanese/Korean/Chinese characters. Previous attempt using convmv and iconv tools failed to fix the problem led me created this tool. I am sure this can fix other international characters too.
8
+
9
+ The Mac OS X system handles filenames in modified Unicode format called UTF8-Mac. If a filename contain none UTF8-Mac character, the Finder may exihibit behavour such as disappearing file, constant refresh, unable to open file, etc. To fix this problem, the file has to be renamed using UTF8-Mac format.
10
+
11
+ For more information read https://www.j3e.de/linux/convmv/man/#hfs__on_os_x___darwin
8
12
 
9
13
  Installation:
10
14
  --------------------------
@@ -14,13 +18,17 @@ Installation:
14
18
 
15
19
  Usage:
16
20
  --------------------------
17
- rename2mac \[-n\] \<directory\>
21
+ rename2mac \[arguments\] \<directory\>
18
22
 
19
- Infomation:
23
+ Arguments:
20
24
  --------------------------
21
- If -n argument is applied, it will only show what will be renamed without making any changes.
25
+ --noop -n Make no changes
26
+ --recursive -r Recursively rename
27
+ --force -f Force overwrite existing file if it exists
28
+ --quiet -q Do not output individual results to screen
29
+ --help -h Display current help message
22
30
 
23
31
  License:
24
32
  --------------------------
25
33
  MIT
26
- Mac Ma comomac(at)runbox(dot)com (C) 2013 Copyright
34
+ Mac Ma comomac (at) runbox (dot) com (C) 2013 Copyright
data/bin/rename2mac CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  #
5
5
  # Rename folderful of filenames to Mac OS X supported format (UTF8-MAC). Mac OS X use only.
6
- # Mac Ma comomac (at) runbox (dot) com (c) Copyright 2013
6
+ # Mac Ma comomac (at) runbox (dot) com (c) Copyright 2013
7
7
  # License MIT
8
8
  #
9
9
 
@@ -17,13 +17,18 @@ unless RbConfig::CONFIG['host_os'] =~ /darwin/
17
17
  exit
18
18
  end
19
19
 
20
- require 'find'
20
+ require 'getoptlong'
21
21
  require 'fileutils'
22
22
  require 'term/ansicolor'
23
23
 
24
24
  include Term::ANSIColor
25
25
 
26
26
  class String
27
+ # escape [] and {} character for Dir.glob to use
28
+ def glob_escape
29
+ self.gsub(/([\[\]\{\}\*\?\\])/, '\\\\\1')
30
+ end
31
+
27
32
  def to_m
28
33
  # convert string to UTF8-MAC format
29
34
  self.encode('UTF8-MAC', 'UTF-8')
@@ -85,28 +90,67 @@ def Dir.restricted?( dir, excludes=[] )
85
90
  return false
86
91
  end
87
92
 
93
+ def show_help
94
+ puts \
95
+ %Q{Usage:
96
+ rename2mac [arguments] <dir>
97
+
98
+ Arguments:
99
+ --noop -n Make no changes
100
+ --recursive -r Recursively rename
101
+ --force -f Force overwrite existing file if it exists
102
+ --quiet -q Do not output individual results to screen
103
+ --help -h Display current help message}
104
+ end
105
+
106
+
107
+
108
+ opts = GetoptLong.new(
109
+ [ '--noop', '-n', GetoptLong::NO_ARGUMENT ],
110
+ [ '--recursive', '-r', GetoptLong::NO_ARGUMENT ],
111
+ [ '--force', '-f', GetoptLong::NO_ARGUMENT ],
112
+ [ '--quiet', '-q', GetoptLong::NO_ARGUMENT ],
113
+ [ '--help', '-h', GetoptLong::NO_ARGUMENT ]
114
+ )
115
+
116
+ noop = recursive = force = quiet = false
117
+
118
+ opts.each do |opt, arg|
119
+ noop = true if opt == '--noop'
120
+ recursive = true if opt == '--recursive'
121
+ force = true if opt == '--force'
122
+ quiet = true if opt == '--quiet'
123
+
124
+ if opt == '--help'
125
+ show_help
126
+ exit
127
+ end
128
+ end
129
+
130
+
88
131
  if ARGV.length == 0
89
- puts "no dir specified.."
132
+ show_help
90
133
  exit
91
134
  else
92
- if ARGV[0] == '-n'
93
- # -n argument will show what files/folders will be changed, without making changes
94
- noop = true
95
- src_dir = File.expand_path(ARGV[1])
96
- else
97
- noop = false
98
- src_dir = File.expand_path(ARGV[0])
99
- end
135
+ src_dir = File.expand_path(ARGV[0])
100
136
 
101
137
  unless FileTest.directory?( src_dir )
102
- puts "dir don't exists. #{src_dir}"
138
+ puts "Dir don't exists. #{src_dir}"
103
139
  exit
104
140
  end
105
141
  end
106
142
 
143
+
107
144
  total_success = 0 # success rename counter
108
145
  total_fail = 0 # fail rename counter
109
146
 
147
+ # set wildcard if recursive or not
148
+ if recursive
149
+ wildcard = '/**/*'
150
+ else
151
+ wildcard = '/*'
152
+ end
153
+
110
154
  # repeat if discover some success, because new files might be discovered
111
155
  total_files = 0
112
156
  flag = true
@@ -114,9 +158,9 @@ while flag
114
158
  total_files = 0
115
159
  flag = false
116
160
 
117
- Find.find( src_dir ) {|fullpath|
118
- # skip files and folders that shouldn't be touched
119
- Find.prune if Dir.restricted?( fullpath )
161
+ Dir.glob(File.expand_path(src_dir).glob_escape + wildcard).delete_if { |fullpath|
162
+ Dir.restricted?( fullpath )
163
+ }.each { |fullpath|
120
164
  next if fullpath.bn[0..0] == '.'
121
165
 
122
166
  total_files += 1
@@ -136,10 +180,10 @@ while flag
136
180
  # rename directory or file
137
181
  begin
138
182
  # tell program to restart the rename from beginning after finish, because some files maybe revealed after rename
139
- FileUtils.mv(fullpath, fullpath.dn.to_m + '/' + fullpath.bn.to_m, :noop => noop)
140
- fullpath.print_diff
183
+ FileUtils.mv(fullpath, fullpath.dn.to_m + '/' + fullpath.bn.to_m, :noop => noop, :force => force)
184
+ fullpath.print_diff unless quiet
141
185
  total_success += 1
142
- flag = true
186
+ flag = true unless noop
143
187
  rescue => e
144
188
  print 'failed: '
145
189
  fullpath.print_diff
Binary file
data/rename2mac.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'rename2mac'
3
- s.version = '0.9.4'
3
+ s.version = '0.9.5'
4
4
  s.date = '2013-11-15'
5
5
  s.summary = "rename2mac"
6
6
  s.description = "Rename folderful of filenames to Mac OS X supported format (UTF8-MAC). Mac OS X use only."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rename2mac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mac Ma
@@ -34,6 +34,7 @@ extra_rdoc_files: []
34
34
  files:
35
35
  - LICENSE
36
36
  - README.md
37
+ - rename2mac-0.9.4.gem
37
38
  - rename2mac.gemspec
38
39
  - bin/rename2mac
39
40
  homepage: http://rubygems.org/gems/rename2mac