names_to_numbers.rb: fix bug in non-glob operation
[cmccabe-bin] / names_to_numbers.rb
index 0fac484..fe03ff9 100755 (executable)
@@ -19,6 +19,7 @@ class MyOptions
     opts.dry_run = false
     opts.num_digits = 2
     opts.extension = nil
+    opts.starting_number = 1
     $fu_args = { :verbose => true }
     opts.preserve_names = false
 
@@ -43,12 +44,23 @@ class MyOptions
               "Preserve the names while changing the numbers.") do |e|
         opts.preserve_names = true
       end
+      myparser.on("--starting-number NUMBER", "-N",
+              "The starting number (defaults to 1)") do |e|
+        opts.starting_number = e.to_i
+      end
+      myparser.on("--glob GLOB", "-g",
+              "Specify the glob expression to use.  Example: '*/*.mp3'.") do |d|
+        opts.glob = d
+      end
     end
 
     parser.parse!(args)
     raise "invalid num_digits: #{opts.num_digits}" unless
       opts.num_digits > 0
-    raise "must give an extension" unless opts.extension != nil
+    raise "must specify an extension" unless opts.extension != nil
+    if (opts.glob == nil) then
+      opts.glob = "*.#{opts.extension}"
+    end
     return opts
   end
 end
@@ -60,9 +72,8 @@ def pow(x, y)
   end
   return ret
 end
-#.#{$opts.extension}").sort.each do |f|
 def file_iter
-  Dir.glob("*.#{$opts.extension}").sort.each do |f| 
+  Dir.glob($opts.glob).sort.each do |f|
     yield f
   end
 end
@@ -76,7 +87,7 @@ def get_file_name(num)
 end
 
 def rename_files(file)
-  dst="#{get_file_name(1 + $total_files)}.#{$opts.extension}"
+  dst="#{get_file_name($opts.starting_number + $total_files)}.#{$opts.extension}"
   if (file != dst) then
     FileUtils.mv(file, dst, $fu_args)
   end