From cec42371c8d7500a8f73c6b603c5d10b92edaf7e Mon Sep 17 00:00:00 2001
From: Guillaume Rousse <guillaume.rousse@renater.fr>
Date: Tue, 1 Feb 2022 10:11:52 +0100
Subject: [PATCH] use relative location and environment variable to find other
 components at runtime, avoiding substitution at install time

---
 bin/Makefile.am                               | 31 ++----------------
 bin/access-check-manager.cgi.in               | 32 -------------------
 ...-manager.pl.in => access-check-manager.pl} |  8 ++---
 bin/app                                       | 14 ++++++++
 bin/{update-metadata.in => update-metadata}   |  7 ++--
 t/01compile.t                                 |  2 +-
 6 files changed, 26 insertions(+), 68 deletions(-)
 delete mode 100755 bin/access-check-manager.cgi.in
 rename bin/{access-check-manager.pl.in => access-check-manager.pl} (98%)
 create mode 100755 bin/app
 rename bin/{update-metadata.in => update-metadata} (96%)

diff --git a/bin/Makefile.am b/bin/Makefile.am
index a415dda..8058726 100644
--- a/bin/Makefile.am
+++ b/bin/Makefile.am
@@ -1,30 +1,5 @@
-bin_SCRIPTS = access-check-manager.pl update-metadata
+appbindir = $(pkgdatadir)/bin
 
-www_SCRIPTS = access-check-manager.cgi
+appbin_SCRIPTS = app access-check-manager.pl update-metadata
 
-CLEANFILES = $(bin_SCRIPTS) $(www_SCRIPTS)
-
-EXTRA_DIST = access-check-manager.pl.in \
-	     access-check-manager.cgi.in \
-	     update-metadata.in
-
-access-check-manager.pl: Makefile access-check-manager.pl.in
-	sed \
-		-e 's|[@]modulesdir[@]|$(modulesdir)|' \
-		-e 's|[@]confdir[@]|$(confdir)|' \
-		< $(srcdir)/$@.in > $@
-	chmod +x $@
-
-update-metadata: Makefile update-metadata.in
-	sed \
-		-e 's|[@]modulesdir[@]|$(modulesdir)|' \
-		-e 's|[@]confdir[@]|$(confdir)|' \
-		< $(srcdir)/$@.in > $@
-	chmod +x $@
-
-access-check-manager.cgi: Makefile access-check-manager.cgi.in
-	sed \
-		-e 's|[@]modulesdir[@]|$(modulesdir)|' \
-		-e 's|[@]confdir[@]|$(confdir)|' \
-		< $(srcdir)/$@.in > $@
-	chmod +x $@
+EXTRA_DIST = $(appbin_SCRIPTS)
diff --git a/bin/access-check-manager.cgi.in b/bin/access-check-manager.cgi.in
deleted file mode 100755
index bac9ef5..0000000
--- a/bin/access-check-manager.cgi.in
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/perl -T
-
-use strict;
-use warnings;
-use utf8;
-use lib qw(@modulesdir@);
-
-use Config::Tiny;
-use File::Basename;
-
-use AccountManager::App;
-
-my $configuration_file =
-    $ENV{ACCOUNTMANAGER_CONFIG} || '@confdir@/manager.conf';
-my $configuration = Config::Tiny->read($configuration_file, 'utf8');
-if (!$configuration) {
-    die Config::Tiny->errstr() . "\n";
-}
-
-my $configuration_directory = dirname($configuration_file);
-
-my $app = AccountManager::App->new(
-    configuration => $configuration,
-    custom_l10n   => sprintf("%s/l10n", $configuration_directory)
-);
-$app->run();
-
-__END__
-
-=head1 NAME
-
-account-manager-web.pl - Web interface for the Test IdP Account Manager
diff --git a/bin/access-check-manager.pl.in b/bin/access-check-manager.pl
similarity index 98%
rename from bin/access-check-manager.pl.in
rename to bin/access-check-manager.pl
index 35948ee..90c5158 100755
--- a/bin/access-check-manager.pl.in
+++ b/bin/access-check-manager.pl
@@ -3,14 +3,15 @@
 use strict;
 use warnings;
 use utf8;
-use lib qw(@modulesdir@);
+
+use Mojo::File qw(curfile);
+use lib curfile()->dirname()->sibling('lib')->to_string;
 
 use Config::Tiny;
 use Data::Dumper;
 use DateTime;
 use English qw(-no_match_vars);
 use Getopt::Long qw(:config auto_help);
-use Log::Any::Adapter;
 use Pod::Usage;
 
 use AccountManager::Account;
@@ -43,8 +44,7 @@ pod2usage(
     -verbose => 0
 ) unless $action;
 
-my $configuration_file =
-    $options{configuration} || '@confdir@/manager.conf';
+my $configuration_file = $ENV{MOJO_CONFIG} || 'conf/manager.conf';
 my $configuration = Config::Tiny->read($configuration_file);
 if (!$configuration) {
     die Config::Tiny->errstr() . "\n";
diff --git a/bin/app b/bin/app
new file mode 100755
index 0000000..2e5da3f
--- /dev/null
+++ b/bin/app
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Mojo::File qw(curfile);
+use lib curfile()->dirname()->sibling('lib')->to_string;
+
+use AccountManager::App;
+
+my $app = AccountManager::App->new(
+    moniker => 'AccessCheck',
+);
+$app->start();
diff --git a/bin/update-metadata.in b/bin/update-metadata
similarity index 96%
rename from bin/update-metadata.in
rename to bin/update-metadata
index 38a9747..0a78257 100755
--- a/bin/update-metadata.in
+++ b/bin/update-metadata
@@ -2,7 +2,9 @@
 
 use strict;
 use warnings;
-use lib qw(@modulesdir@);
+
+use Mojo::File qw(curfile);
+use lib curfile()->dirname()->sibling('lib')->to_string;
 
 use Config::Tiny;
 use English qw(-no_match_vars);
@@ -26,8 +28,7 @@ GetOptions(
     -verbose => 0
 );
 
-my $configuration_file =
-    $options{configuration} || '@confdir@/manager.conf';
+my $configuration_file = $ENV{MOJO_CONFIG} || 'conf/manager.conf';
 my $configuration = Config::Tiny->read($configuration_file);
 if (!$configuration) {
     die Config::Tiny->errstr() . "\n";
diff --git a/t/01compile.t b/t/01compile.t
index f3c8196..cefa863 100755
--- a/t/01compile.t
+++ b/t/01compile.t
@@ -14,7 +14,7 @@ my $test = Test::Compile->new();
 ok(
     $test->pl_file_compiles($_),
     $_
-) foreach qw(bin/access-check-manager.cgi bin/access-check-manager.pl);
+) foreach qw(bin/app bin/update-metadata bin/access-check-manager.pl);
 ok(
     $test->pm_file_compiles($_),
     $_
-- 
GitLab