]> diplodocus.org Git - flac-archive/commitdiff
Add support for a post-processor hook.
authorepg <>
Sun, 5 Dec 2004 05:38:18 +0000 (05:38 +0000)
committerepg <>
Sun, 5 Dec 2004 05:38:18 +0000 (05:38 +0000)
(fa-flacd):
    Document the hook.

    (flac): Execute and remove the hook if it exists before removing
    the temporary directory.

(fa-rip):
    (make_post_processor): New function to create the post-processor
    file, if defined.

    (MAIN): Take new -p/--post-processor option.

fa-flacd
fa-rip

index 3e9e7cb8059bdbdb7c55830d3fc1a76784e5c3c1..50a936cbce7698c70beb4d24ed0d1e99daee88c0 100755 (executable)
--- a/fa-flacd
+++ b/fa-flacd
@@ -108,11 +108,18 @@ sub flac {
     rename('log', "../$artist/$outfile.log")
       or die("rename(log, ../$artist/$outfile.log): $!");
     chdir('..') or die("chdir(..): $!");
-    rmdir($dir) or die("rmdir($dir): $!");
 
     rename("$artist/$outfile.flac-tmp", "$artist/$outfile.flac")
       or die("rename($artist/$outfile.flac-tmp, $artist/$outfile.flac): $!");
 
+    if (-x "$dir/post-processor") {
+        verbose("Running './$dir/post-processor $artist/$outfile.flac'\n");
+        system("./$dir/post-processor", "$artist/$outfile.flac");
+        unlink("$dir/post-processor") or die("unlink($dir/post-processor): $!");
+    }
+
+    rmdir($dir) or die("rmdir($dir): $!");
+
     return 0;
 }
 
@@ -241,6 +248,17 @@ the "log" file.  Finally, B<fa-flacd> moves the "cue" and "log" files
 to the artist directory (named by album) and removes the temporary
 directory.
 
+If the temporary directory contains an executable file named
+"post-processor", B<fa-flacd> executes that file with the relative
+path to the output FLAC file as an argument.  The output files are in
+their final location when "post-processor" starts.  Possible uses are
+running B<flac2mp3>, moving the output files to a different location,
+removing the lock file, or adding to a database.  The standard input,
+output, and error streams are inherited from B<fa-flacd>, so they may
+be connected to anything from a tty to /dev/null.  This means that you
+may want to redirect these streams, if you want to save them or do any
+logging.
+
 =head1 OPTIONS
 
 =over 4
diff --git a/fa-rip b/fa-rip
index 1a9bc2a10a8e228c2e31f16d01cb59e194d7dba6..916c050b6b81ec8fe33b7125b8dbbb6e8620d76b 100755 (executable)
--- a/fa-rip
+++ b/fa-rip
@@ -9,7 +9,7 @@ B<fa-rip> - rip a CD for B<fa-flacd>
 
 =head1 SYNOPSIS
 
-B<fa-rip> [B<-d> I<device>] [B<-t> I<track-count>]
+B<fa-rip> [B<-d> I<device>] [B<-p> I<post-processor> [B<-t> I<track-count>]
 
 =cut
 
@@ -20,6 +20,7 @@ use Env qw(
            CDDEV
 );
 
+use Fcntl qw(O_CREAT O_WRONLY);
 use File::Temp;
 use Getopt::Long qw(:config gnu_getopt no_ignore_case);
 use POSIX ':sys_wait_h';
@@ -136,13 +137,26 @@ sub rip {
     die;
 }
 
+sub make_post_processor {
+    my $command = shift;
+
+    defined($command) or return;
+
+    sysopen(F, 'post-processor', O_CREAT | O_WRONLY, 0555)
+      or die("sysopen(post-processor, O_CREAT | O_WRONLY, 0555): $!");
+    print(F $command, ' "$@"', "\n");
+    close(F) or die("close(post-processor, O_CREAT | O_WRONLY, 0555): $!");
+}
+
 MAIN: {
+    my $post_processor;
     my $trackcount;
     my $help;
     my $tempdir;
 
     GetOptions(
                'device|d=s' => \$CDDEV,
+               'post-processor|p=s', \$post_processor,
                'tracks|t=i' => \$trackcount,
                'help|h|?' => \$help,
               ) or pod2usage();
@@ -152,6 +166,7 @@ MAIN: {
     $tempdir = File::Temp::tempdir('flac-archive.XXXXXXXXXX');
     chdir($tempdir) or die("chdir($tempdir): $!");
 
+    make_post_processor($post_processor);
     $trackcount = mkcue($CDDEV, $trackcount);
     tags($CDDEV, $trackcount);
     rip($CDDEV, $trackcount);
@@ -183,6 +198,12 @@ have to fill out the candidate-tags-0 template.
 Use I<device> as the CD-ROM device, instead of the default
 "/dev/cdrom" or the environment variable CDDEV.
 
+=item B<-p> [B<--post-processor>] I<post-processor>
+
+Create a "post-processor" file in the temporary directory containing
+the line 'I<post-processor> "$@"'.  See B<fa-flacd>'s man page for
+information about this hook.
+
 =item B<-t> [B<--tracks>] I<track-count>
 
 Archive only the first I<track-count> tracks.  This is handy for