diff options
Diffstat (limited to 'lib/App/BorgRestore')
-rw-r--r-- | lib/App/BorgRestore/DB.pm | 10 | ||||
-rw-r--r-- | lib/App/BorgRestore/Settings.pm | 15 |
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/App/BorgRestore/DB.pm b/lib/App/BorgRestore/DB.pm index feebd4c..a7c5916 100644 --- a/lib/App/BorgRestore/DB.pm +++ b/lib/App/BorgRestore/DB.pm @@ -7,6 +7,7 @@ use App::BorgRestore::Helper; use Data::Dumper; use DBI; +use Log::Any qw($log); sub new { my $class = shift; @@ -15,7 +16,12 @@ sub new { my $self = {}; bless $self, $class; - $self->_open_db($db_path); + if (! -f $db_path) { + my $db = $self->open_db($db_path); + $self->{db}->initialize_db(); + } else { + $self->_open_db($db_path); + } return $self; } @@ -24,6 +30,7 @@ sub _open_db { my $self = shift; my $dbfile = shift; + $log->debugf("Opening database at %s", $dbfile); $self->{dbh} = DBI->connect("dbi:SQLite:dbname=$dbfile","","", {RaiseError => 1, Taint => 1}); $self->{dbh}->do("PRAGMA cache_size=-1024000"); $self->{dbh}->do("PRAGMA strict=ON"); @@ -32,6 +39,7 @@ sub _open_db { sub initialize_db { my $self = shift; + $log->debug("Creating initial database"); $self->{dbh}->do('create table `files` (`path` text, primary key (`path`)) without rowid;'); $self->{dbh}->do('create table `archives` (`archive_name` text unique);'); } diff --git a/lib/App/BorgRestore/Settings.pm b/lib/App/BorgRestore/Settings.pm index 7416c54..93312b8 100644 --- a/lib/App/BorgRestore/Settings.pm +++ b/lib/App/BorgRestore/Settings.pm @@ -5,6 +5,8 @@ use warnings; use App::BorgRestore::Helper; +use File::Path qw(mkpath); + our $borg_repo = ""; our $cache_path_base = sprintf("%s/borg-restore.pl", $ENV{XDG_CACHE_HOME} // $ENV{HOME}."/.cache"); our @backup_prefixes = ( @@ -28,6 +30,19 @@ for my $configfile (@configfiles) { } $cache_path_base = App::BorgRestore::Helper::untaint($cache_path_base, qr/.*/); +# ensure the cache directory exists +mkpath(get_cache_dir(), {mode => oct(700)}); + +sub get_cache_dir { + return "$cache_path_base/v2"; +} + +sub get_cache_path { + my $item = shift; + return get_cache_dir()."/$item"; +} + + 1; __END__ |