From e2fc498483b6fa15a3507d71d5203ff73486fdae Mon Sep 17 00:00:00 2001
From: Jens Steidl <Jens.Steidl@slub-dresden.de>
Date: Thu, 24 Feb 2022 16:47:32 +0100
Subject: [PATCH] - fixed:
 https://git.slub-dresden.de/digital-preservation/checkit_tiff_plugin4rosetta/-/issues/5
 - refactor: added proper argument handling and new arguments (like plugin
 name) as well

---
 .../add_dnx_mappings/README.txt               |  6 +-
 .../add_dnx_mappings/add_dnx_mappings.pl      | 65 ++++++++++++++-----
 2 files changed, 50 insertions(+), 21 deletions(-)

diff --git a/deploy_checkit_tiff/add_dnx_mappings/README.txt b/deploy_checkit_tiff/add_dnx_mappings/README.txt
index d584195..66b6d9e 100644
--- a/deploy_checkit_tiff/add_dnx_mappings/README.txt
+++ b/deploy_checkit_tiff/add_dnx_mappings/README.txt
@@ -26,8 +26,8 @@ How to automatically add Mappings between extracted Technical Metadata and DNX S
 == How to run
 
 * general invocation
-** $# perl -I path/to/perl/modules .add_dnx_mappings.pl "Rosetta-Host.Domain.tld" "Rosetta-User" "Rosetta-Password" "Institution-Name" "Portnumber"
- 
+** $# perl -I path/to/perl/modules ./add_dnx_mappings.pl --rosetta_host="Rosetta-Host.Domain.tld" --protocol="https" --ui_port="Port-Number" --user="Rosetta-User" --password="Rosetta-Password" --institution="Institution-Name" --plugin_name="Plugin-Name" --classification_group="Classification-Group"
+
 * example invocation:
-** $# perl -I ~/perl5/lib/perl5 ./add_dnx_mappings.pl "sdvrosetta-test.slub-dresden.de" "su-user" "Sw0rdF!$h" "SLUB" "8443"
+** $# perl -I path/to/perl/modules ./add_dnx_mappings.pl --rosetta_host="sdvrosetta-test.slub-dresden.de" --protocol="https" --ui_port="8443" --user="su-user" --password="Sw0rdF!$h" --institution="SLUB" --plugin_name="SLUBTechnicalMetadataExtractorCheckItTiffPlugin" --classification_group="Image (Mix)"
 
diff --git a/deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl b/deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl
index 75036de..09537b1 100644
--- a/deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl
+++ b/deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl
@@ -19,14 +19,38 @@ no warnings qw(experimental::signatures);
 use Selenium::Remote::Driver;
 use Selenium::Chrome;
 use Term::ANSIColor; # colored print
+use Getopt::Long;
 
 
-my $host = shift;
-my $user = shift;
-my $passwd = shift;
-my $institution = shift;
-my $ui_port = shift;
+my $host;
 my $protocol = 'https';
+my $ui_port = "8443";
+my $user;
+my $passwd;
+my $institution;
+my $plugin_name = 'SLUBTechnicalMetadataExtractorCheckItTiffPlugin';
+my $classification_group = 'Image (Mix)';
+my $driver;
+
+GetOptions(
+    "rosetta_host=s{1}"         => \$host,
+    "protocol:s{1}"             => \$protocol,
+    "ui_port:s{1}"              => \$ui_port,
+    "user=s{1}"                 => \$user,
+    "password=s{1}"             => \$passwd,
+    "institution=s{1}"          => \$institution,
+    "plugin_name:s{1}"          => \$plugin_name,
+    "classification_group:s{1}" => \$classification_group
+) or die("Error in command line arguments\n");
+die("invalid/missing argument: --rosetta_host")         unless $host;
+die("invalid/missing argument: --protocol")             unless $protocol;
+die("invalid/missing argument: --ui_port")              unless $ui_port;
+die("invalid/missing argument: --user")                 unless $user;
+die("invalid/missing argument: --password")             unless $passwd;
+die("invalid/missing argument: --institution")          unless $institution;
+die("invalid/missing argument: --plugin_name")          unless $plugin_name;
+die("invalid/missing argument: --classification_group") unless $classification_group;
+
 my %exiftool2dnx = (
     "ICC-header:ColorSpaceData"       => "icc.colorspacedata",
     "ICC-header:DeviceModel"          => "icc.devicemodel",
@@ -62,18 +86,6 @@ my %exiftool2dnx = (
     "IFD0:XResolution"                => "image.xresolution",              # TIFF-Tag 282 XResolution
     "IFD0:YResolution"                => "image.yresolution",              # TIFF-Tag 283 YResolution
 );
-my $plugin_name = "SLUBTechnicalMetadataExtractorCheckItTiffPlugin";
-my $classification_group = "Image (Mix)";
-my $driver = Selenium::Chrome->new();
-$driver->debug_on;
-$driver->set_implicit_wait_timeout(1000);
-$driver->set_timeout('script', 1000);
-
-print "Try to mechanize adding DNX, using: 
-  host=$host
-  user=$user
-  institution=$institution
-  \n";
 
 sub login {
     $driver->get("$protocol://$host:${ui_port}/mng?auth=local");
@@ -185,7 +197,22 @@ sub extractors_add_mapping ($dnx_property, $exiftool_property) {
     $driver->pause();
 }
 
-# login
+# startup info
+printf colored("Trying to mechanize adding DNX mappings using:
+  rosetta host         = '$host'
+  ui port              = '$ui_port'
+  user                 = '$user'
+  institution          = '$institution'
+  plugin name          = '$plugin_name'
+  classification group = '$classification_group'\n\n", 'bold white');
+
+# startup driver
+$driver = Selenium::Chrome->new();
+$driver->debug_on;
+$driver->set_implicit_wait_timeout(1000);
+$driver->set_timeout('script', 1000);
+
+# Rosetta login
 printf colored("Step 1 of 7: login \n", 'bold green');
 login();
 
@@ -222,7 +249,9 @@ change_to_local_format_library();
 printf colored("Step 7 of 7: logout \n", 'bold green');
 logout();
 
+# stop driver
 $driver->quit();
 $driver->shutdown_binary();
 
+# stop info
 printf colored("Finished! \n", 'bold green');
-- 
GitLab