diff options
-rw-r--r-- | lib/App/BorgRestore.pm | 16 | ||||
-rwxr-xr-x | script/borg-restore.pl | 10 |
2 files changed, 18 insertions, 8 deletions
diff --git a/lib/App/BorgRestore.pm b/lib/App/BorgRestore.pm index e8a3edb..d072a31 100644 --- a/lib/App/BorgRestore.pm +++ b/lib/App/BorgRestore.pm @@ -104,6 +104,22 @@ sub new_no_defaults { return $self; } +sub resolve_relative_path { + my $self = shift; + my $path = shift; + + my $canon_path = File::Spec->canonpath($path); + my $abs_path = abs_path($canon_path); + + if (!defined($abs_path)) { + $log->fatalf("Failed to resolve path to absolute path: %s: %s", $canon_path, $!); + $log->fatal("Make sure that all parts of the path, except the last one, exist."); + return; + } + + return $abs_path; +} + sub find_archives { my $self = shift; my $path = shift; diff --git a/script/borg-restore.pl b/script/borg-restore.pl index 40c0ca1..2beb306 100755 --- a/script/borg-restore.pl +++ b/script/borg-restore.pl @@ -164,7 +164,6 @@ use App::BorgRestore::Settings; use autodie; use Cwd qw(abs_path); use File::Basename; -use File::Spec; use Getopt::Long; use Log::Any qw($log); use Log::Any::Adapter; @@ -260,13 +259,8 @@ sub main { exit(1); } - my $canon_path = File::Spec->canonpath($path); - my $abs_path = abs_path($canon_path); - if (!defined($abs_path)) { - $log->fatalf("Failed to resolve path to absolute path: %s: %s", $canon_path, $!); - $log->fatal("Make sure that all parts of the path, except the last one, exist."); - exit(1); - } + my $abs_path = $app->resolve_relative_path($path); + return 1 unless defined $abs_path; if (!defined($destination)) { $destination = dirname($abs_path); |