]> diplodocus.org Git - flac-archive/commitdiff
test flac filename generation
authorEric Gillespie <epg@pretzelnet.org>
Sun, 20 Mar 2022 21:43:14 +0000 (16:43 -0500)
committerEric Gillespie <epg@pretzelnet.org>
Sun, 20 Mar 2022 23:10:22 +0000 (18:10 -0500)
fa-encode
t/encode.t [new file with mode: 0644]

index 5f98151b5b17b21f581aea90bdcd0b442048520f..10210b90759a5bcd8818bd658a3409cd1b876490 100755 (executable)
--- a/fa-encode
+++ b/fa-encode
@@ -23,7 +23,9 @@ use warnings;
 use FindBin;
 use Pod::Usage;
 
-require "$FindBin::Bin/tags.pl";
+use lib $FindBin::Bin;
+
+require 'tags.pl';
 epg::flac::archive::tags->import(
     qw[
         read_tags
@@ -32,6 +34,18 @@ epg::flac::archive::tags->import(
         two_digits
     ]);
 
+sub filename {
+    my %a = @_;
+    my @discnumber = @{$a{discnumber} // []};
+    my $tracknumber = $a{tracknumber} // die('tracknumber required');
+    my $title = $a{title} // die('title required');
+    join('-',
+         (map { two_digits($_) } @discnumber),
+         two_digits($tracknumber),
+         mangle_for_file_name($title) . '.flac',
+        )
+}
+
 sub main {
     my $input_directory = shift || pod2usage();
     my $fn = "$input_directory/tags";
@@ -85,17 +99,17 @@ sub main {
             $track->{DISCNUMBER} = \@discnumber;
         }
         my $title = join(' ', @{$track->{TITLE}});
-        my $tracknum_s = two_digits($tracknum);
         my $fn = join('/',
                       $dir,
-                      join('_',
-                           (map { two_digits($_) } @discnumber),
-                           $tracknum_s,
-                           mangle_for_file_name($title) . '.flac',
+                      filename(
+                          discnumber => \@discnumber,
+                          tracknumber => $tracknum,
+                          title => $title,
                       ),
             );
         -e $fn && die("cowardly refusing to clobber $fn");
         my @pictures = ('--picture', quote('3|image/jpeg|||cover.front.jpeg')); # TODO optional
+        my $tracknum_s = two_digits($tracknum);
         say(join(' ',
                  'flac -o',
                  quote($fn),
diff --git a/t/encode.t b/t/encode.t
new file mode 100644 (file)
index 0000000..06b7cea
--- /dev/null
@@ -0,0 +1,25 @@
+use v5.12;
+use warnings;
+
+use Test::More tests => 2;
+
+use FindBin;
+
+use lib "$FindBin::Bin/..";
+
+require 'tags.pl';
+require 'fa-encode';
+
+is
+  '02-03-the_title.flac',
+  epg::flac::archive::encode::filename(
+    discnumber => [2],
+    tracknumber => 3,
+    title => 'the title'
+  ),
+  'with discnumber';
+
+is
+  '01-the_title.flac',
+  epg::flac::archive::encode::filename(tracknumber => 1, title => 'the title'),
+  'without discnumber';