Makefile: add pickrand
[cmccabe-bin] / names_to_numbers.rb
index 9439fd1..31c42e4 100755 (executable)
@@ -19,6 +19,8 @@ class MyOptions
     opts.dry_run = false
     opts.num_digits = 2
     opts.extension = nil
+    opts.starting_number = 1
+    opts.prefix_counter_increment = 1
     $fu_args = { :verbose => true }
     opts.preserve_names = false
 
@@ -43,12 +45,27 @@ 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
+      myparser.on("--prefix-counter-increment NUMBER", "-I",
+              "The increment to use (defaults to 1)") do |e|
+        opts.prefix_counter_increment = e.to_i
+      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 +77,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,9 +92,11 @@ def get_file_name(num)
 end
 
 def rename_files(file)
-  FileUtils.mv(file, "#{get_file_name(1 + $total_files)}.#{$opts.extension}",
-               $fu_args)
-  $total_files = $total_files + 1
+  dst="#{get_file_name($prefix_counter)}.#{$opts.extension}"
+  if (file != dst) then
+    FileUtils.mv(file, dst, $fu_args)
+  end
+  $prefix_counter = $prefix_counter + $opts.prefix_counter_increment
 end
 
 def rename_files_keep_names(file)
@@ -88,9 +106,9 @@ def rename_files_keep_names(file)
   else
     raise "can't find proper name for #{file}"
   end
-  full_name = "#{get_file_name(1 + $total_files)} - #{proper_file}"
+  full_name = "#{get_file_name($prefix_counter)} - #{proper_file}"
   FileUtils.mv(file, full_name, $fu_args)
-  $total_files = $total_files + 1
+  $prefix_counter = $prefix_counter + $opts.prefix_counter_increment
 end
 
 # MAIN
@@ -112,7 +130,7 @@ if ($total_files > max_total_files) then
 end
 
 # rename files
-$total_files = 0
+$prefix_counter = $opts.starting_number
 if ( $opts.preserve_names ) then
   file_iter { |f| rename_files_keep_names(f) }
 else