rename2mac 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
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