From d1a17dab46ddfd269f9df819e7a2c1014274c35b Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Wed, 12 Jun 2024 14:37:14 +0200
Subject: [PATCH] - refactoring, extracted check_a_bag()

---
 lib/SLUB/LZA/TA/Command/permanent.pm | 30 +++++++++++++++-------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/lib/SLUB/LZA/TA/Command/permanent.pm b/lib/SLUB/LZA/TA/Command/permanent.pm
index e655d3e..0300d00 100644
--- a/lib/SLUB/LZA/TA/Command/permanent.pm
+++ b/lib/SLUB/LZA/TA/Command/permanent.pm
@@ -45,9 +45,23 @@ sub validate_args {
     return 1;
 }
 
+sub check_a_bag ($candidate) {
+    my $bag = Archive::BagIt->new($candidate);
+    # explicite SHA loading, because
+    # Archivematica only use SHA512, but have version 0.97
+    $bag->use_plugins('Archive::BagIt::Plugin::Algorithm::SHA512');
+    my $is_valid;
+    eval {
+        $is_valid = $bag->verify_bag({report_all_errors => 1});
+    };
+    my $line;
+    $line->{'AIP storage path'} = $candidate;
+    $line->{'bagit validation result'} = ($is_valid ? "valid" : "invalid");
+    return $line;
+}
+
 sub execute {
     my ($self, $opt, $args) = @_;
-
     my @candidates;
     my $wanted = sub {
         my ($dev, $ino, $mode, $nlink, $uid, $gid);
@@ -63,19 +77,7 @@ sub execute {
         @{ $SLUB::LZA::TA::config{permanent_volume} }
     );
     my @results = map {
-        my $candidate = $_;
-        my $bag = Archive::BagIt->new($candidate);
-        # explicite SHA loading, because
-        # Archivematica only use SHA512, but have version 0.97
-        $bag->use_plugins('Archive::BagIt::Plugin::Algorithm::SHA512');
-        my $is_valid;
-        eval {
-            $is_valid = $bag->verify_bag({report_all_errors => 1});
-        };
-        my $line;
-        $line->{'AIP storage path'} = $candidate;
-        $line->{'bagit validation result'} = ($is_valid ? "valid" : "invalid");
-        $line;
+        check_a_bag( $_ );
     } (sort @candidates);
     my @headers = sort keys %{$results[0]};
     my $misc_ref;
-- 
GitLab