-
Guillaume ROUSSE authoredGuillaume ROUSSE authored
update-metadata 4.16 KiB
#!/usr/bin/perl
use strict;
use warnings;
use Mojo::File qw(curfile);
use lib curfile()->dirname()->sibling('lib')->to_string;
use Config::Tiny;
use English qw(-no_match_vars);
use File::Temp;
use Getopt::Long qw(:config auto_help);
use List::MoreUtils qw(uniq);
use Mojo::UserAgent;
use Pod::Usage;
use Syntax::Keyword::Try;
use AccessCheck::Data::DB;
use AccessCheck::Data::Entity;
use AccessCheck::Metadata;
my %options;
GetOptions(
\%options,
'configuration=s',
'verbose',
) or pod2usage(
-message => "unknown option, aborting\n",
-verbose => 0
);
my $configuration_file = $ENV{ACCESS_CHECK_CONFIG} || 'conf/manager.conf';
my $configuration = Config::Tiny->read($configuration_file);
if (!$configuration) {
die Config::Tiny->errstr() . "\n";
}
die "no database defined in configuration, aborting\n"
if !$configuration->{database};
die "no federation defined in configuration, aborting\n"
if !$configuration->{federations};
AccessCheck::Data::DB->register_db(
driver => $configuration->{database}->{type},
database => $configuration->{database}->{name},
host => $configuration->{database}->{host},
password => $configuration->{database}->{password},
username => $configuration->{database}->{username},
options => [
$configuration->{database}->{options} ?
split(/, */, $configuration->{database}->{options}) :
()
]
);
my $db = AccessCheck::Data::DB->new();
my $ua = Mojo::UserAgent->new(
max_redirect => 3
);
$db->begin_work();
AccessCheck::Data::Entity->delete_entities(all => 1);
$db->dbh()->do('ALTER TABLE entities AUTO_INCREMENT = 1');
my %seen;
foreach my $id (keys %{$configuration->{federations}}) {