fiddle with DB->new parameters
authorIan Beckwith <ianb@erislabs.net>
Fri, 24 Sep 2010 01:05:20 +0000 (02:05 +0100)
committerIan Beckwith <ianb@erislabs.net>
Fri, 24 Sep 2010 01:05:20 +0000 (02:05 +0100)
bin/id3fs
lib/ID3FS/DB.pm
sbin/id3fsd

index 1998169..547b96d 100755 (executable)
--- a/bin/id3fs
+++ b/bin/id3fs
@@ -12,23 +12,33 @@ $me=($0=~/(?:.*\/)?(.*)/)[0];
 
 my $verbose=0;
 my $help=0;
-my $init=0;
-my @extensions=qw(mp3); # ogg flac);
+my $basedir=undef;
+my $dbpath=undef;
+
+my @extensions=qw(mp3); # ogg flac); # FIXME
 Configure(qw(bundling no_ignore_case));
 my $optret=GetOptions(
-    "verbose|v"  => \$verbose,
-    "quiet|q"    => sub { $verbose=0; },
-    "help|h"     => \$help,
+    "verbose|v"      => \$verbose,
+    "quiet|q"        => sub { $verbose=0; },
+    "help|h"         => \$help,
+    "basedir|d=s"    => \$basedir,
+    "database|db=s"  => \$dbpath,
     "extensions|e=s" => sub { @extensions=split(/\s+|\s*,\s*/, $_[1]); },
-    "init|i"     => \$init,
     );
 
 usage() if(!@ARGV || !$optret || $help);
 
-my $path=shift;
-my $db=ID3FS::DB->new($path, $init, $me);
+if(@ARGV > 1 && !defined($basedir))
+{
+    die("$me: --basedir must be specified if multiple paths are supplied\n");
+}
+
+my $db=ID3FS::DB->new($me, $dbpath, $basedir, $ARGV[0]);
 
-File::Find::find( {wanted => \&wanted, follow => 1, no_chdir => 1}, $path);
+while(my $path=shift)
+{
+    File::Find::find( {wanted => \&wanted, follow => 1, no_chdir => 1}, $path);
+}
 
 sub wanted
 {
index 5217484..11381c6 100644 (file)
@@ -16,21 +16,19 @@ sub new
     my $self={};
     bless($self,$class);
 
-    my($dir, $init, $me)=@_;
-    $self->{base}=$dir;
-    $self->{absbase}=Cwd::abs_path($dir);
-    $self->{dbpath}="$dir/$dbfile";
-    $self->{me}=$me;
+    $self->{me}=shift;
+    $self->{dbpath}=shift;
+    $self->{base}=shift;
+    $self->{fallbackdir}=shift;
 
-    my $exists=-f $self->{dbpath};
-
-    $self->{postgres}=0;
-
-    unless($self->{postgres})
+    if(!defined($self->{base}) &&
+       defined($self->{fallbackdir}) &&
+       -d $self->{fallbackdir})
     {
-       die("$me: $self->{dbpath}: not found. use --init to create.\n") if(!$exists && !$init);
-       die("$me: --init used but $self->{dbpath} exists.\n")           if($exists && $init);
+       $self->{base}=$self->{fallbackdir};
     }
+    $self->{dbpath}="$self->{base}/$dbfile" unless(defined($self->{dbpath}));
+    $self->{absbase}=Cwd::abs_path($self->{base});
 
     my $connectstr="dbi:SQLite:dbname=$self->{dbpath}";
     my ($user, $pass)=("", "");
@@ -40,20 +38,21 @@ sub new
        $user="ianb";
        $pass="foo";
     }
+    my $exists=-f $self->{dbpath};
     $self->{dbh}=DBI->connect($connectstr, $user, $pass,
                              { AutoCommit=>1 } );
     unless(defined($self->{dbh}))
     {
-       die("$me: DB Error: " . $DBI::errstr . "\n");
+       die("$self->{me}: DB Error: " . $DBI::errstr . "\n");
     }
 
-    if($init)
+    if($exists)
     {
-       $self->create();
+       $self->checkschema();
     }
     else
     {
-       $self->checkschema();
+       $self->create();
     }
 
     return $self;
index 3e95597..96a4f57 100755 (executable)
@@ -12,12 +12,14 @@ $me=($0=~/(?:.*\/)?(.*)/)[0];
 
 my $verbose=0;
 my $help=0;
+my $dbpath=undef;
 
 Configure(qw(bundling no_ignore_case));
 my $optret=GetOptions(
     "verbose|v"  => \$verbose,
     "quiet|q"    => sub { $verbose=0; },
     "help|h"     => \$help,
+    "database|db=s"  => \$dbpath,
     );
 
 usage() if(scalar(@ARGV) != 2 || !$optret || $help);
@@ -25,7 +27,7 @@ usage() if(scalar(@ARGV) != 2 || !$optret || $help);
 my $source=shift;
 my $mountpoint=shift;
 
-my $db=ID3FS::DB->new($source, 0, $me);
+my $db=ID3FS::DB->new($me, $dbpath, $source);
 my $fuse=ID3FS::Fuse->new($db, $source, $mountpoint, $verbose);
 $fuse->run();