]> Sergey Matveev's repositories - torn.git/blobdiff - torn
Raise copyright years
[torn.git] / torn
diff --git a/torn b/torn
index 2fe88def679854e774c3a5b9f1d3e1fdd4f19af2..70a82b939d40b114f9a7ece029bf760ef34db756 100755 (executable)
--- a/torn
+++ b/torn
@@ -1,6 +1,6 @@
 #!/usr/bin/env perl
 # torn - Musical files renaming with russian language transliteration
-# Copyright (C) 2007-2020 Sergey Matveev (stargrave@stargrave.org)
+# Copyright (C) 2007-2023 Sergey Matveev (stargrave@stargrave.org)
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,7 +25,8 @@ files and rules to convert russian filenames to translit.
 =head1 USAGE
 
 Simply run this script in directory where you want files and/or
-directorires to be renamed.
+directories to be renamed. Directories are not transliterated by
+default, but you can use FORCE_DIR=1 environment variable.
 
 =head1 OVERVIEW
 
@@ -59,14 +60,14 @@ use Encode;
 
 binmode STDOUT, ":utf8";
 
-my $VERSION = "0.9";
+my $VERSION = "0.10";
 
 my $src;
 my $dst;
 my $src_filename;
 
 if ($#ARGV >= 0) {
-    print "torn version $VERSION, Copyright (C) 2007-2020 Sergey Matveev
+    print "torn version $VERSION, Copyright (C) 2007-2023 Sergey Matveev
 torn comes with ABSOLUTELY NO WARRANTY.  This is free software,
 and you are welcome to redistribute it under certain conditions.\n
 Usage: just run inside the directory. Look for POD inside the script itself.\n";
@@ -76,6 +77,7 @@ opendir DIR, "." or die "Can not open directory\n";
 foreach (sort readdir DIR) {
     # Skip directory itself
     next if /^\.{1,2}$/;
+    next if -d and not $ENV{FORCE_DIR};
 
     $src_filename = $_;
     $src = decode "utf-8", $src_filename;
@@ -111,18 +113,18 @@ foreach (sort readdir DIR) {
     $dst =~ s/Ю/Ju/g;
 
     # Lowercase file extensions
-    if($dst =~ /^(.*)\.([^\.]+)$/){
+    if ($dst =~ /^(.*)\.([^\.]+)$/) {
         $dst = $1 . "." . lc $2;
     };
 
     # Change looking of track numbers
-    # And renaming itself
-    if($dst =~ /^(\d+)\-(.+)$/){
-        print "$src -> $1.$2\n";
-        rename $src_filename, "$1.$2";
-    } else {
-        print "$src -> $dst\n";
-        rename $src_filename, $dst;
+    if ($dst =~ /^(\d+)[-.]_*(.+)$/) {
+        $dst = "$1.$2";
     };
+
+    next if ($src_filename eq $dst);
+    print "$src -> $dst\n";
+    die "\"$dst\" exists" if -e $dst;
+    rename $src_filename, $dst;
 };
 closedir DIR;