commit: feb500c197990874101ae84aa51a6b718e96ae79 Author: Jorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto <AT> gentoo <DOT> org> AuthorDate: Sun Jun 19 12:05:35 2016 +0000 Commit: Jorge Manuel B. S. Vicetto <jmbsvicetto <AT> gentoo <DOT> org> CommitDate: Sun Jun 19 12:05:35 2016 +0000 URL: https://gitweb.gentoo.org/proj/elections.git/commit/?id=feb500c1
Allow running votify outside of /etc/elections and the repository dir. Signed-off-by: Jorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto <AT> gentoo.org> Votify.pm | 12 ++++++------ votify | 8 +++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Votify.pm b/Votify.pm index 48e5938..ed5b519 100644 --- a/Votify.pm +++ b/Votify.pm @@ -10,13 +10,13 @@ package Votify; use POSIX; use Cwd qw(abs_path); +use File::Basename; use File::Spec::Functions; use List::Util; use strict; our $datefmt = '%Y-%m-%d %H:%M:%S UTC'; - -our ($basedir) = List::Util::first { -d $_ } ('/etc/elections', '.'); +our ($basedir) = List::Util::first { -d $_ } ('/etc/elections', dirname(__FILE__)); (our $zero = $0) =~ s,.*/,,; our $version = '1.6'; @@ -41,16 +41,16 @@ sub validate_election_dir { my $election_dir = $_; my $election_name = $election_dir; $election_name =~ /.*\//; - return 0 unless -d $election_dir; + return 0 unless -d "$basedir/$election_dir"; return 0 if substr($election_name,0,1) eq "."; my $valid = List::Util::reduce { $a or $b ? 1 : 0; } map { my $file_valid = 0; # Legacy naming: - $file_valid = 1 if -f sprintf("%s/%s-%s", $election_name, $_, $election_name); + $file_valid = 1 if -f sprintf("%s/%s-%s", "$basedir/$election_name", $_, $election_name); # New naming: - $file_valid = 1 if -f sprintf("%s/%s", $election_name, $_); + $file_valid = 1 if -f sprintf("%s/%s", "$basedir/$election_name", $_); #printf "File %s valid=%d\n", $_, $file_valid; $file_valid; } @REQUIRED_FILES; @@ -88,7 +88,7 @@ sub get_single_election_hashref { my %election; foreach my $fn (@REQUIRED_FILES){ #print "Scan $fn\n"; - my @filenames = (sprintf("%s/%s", $election_name, $fn), sprintf("%s/%s-%s", $election_name, $fn, $election_name)); + my @filenames = (sprintf("%s/%s", "$basedir/$election_name", $fn), sprintf("%s/%s-%s", "$basedir/$election_name", $fn, $election_name)); #print Dumper(@filenames); my $filename = abs_path(List::Util::first { -f $_ } @filenames); $election{"${fn}file"} = $filename; diff --git a/votify b/votify index e52881d..4fb688d 100755 --- a/votify +++ b/votify @@ -7,13 +7,15 @@ # votify: generate, verify and submit voting ballots for trustee elections # -#BEGIN { push @INC, (getpwnam 'fox2mike')[7].'/elections' } BEGIN { + my $dirname; if(-f '/etc/elections/Votify.pm') { - push @INC, '/etc/elections'; + $dirname = '/etc/elections'; } else { - push @INC, '.' if -f 'Votify.pm'; + use File::Basename; + $dirname = dirname(__FILE__); } + push @INC, $dirname; } use POSIX;