Skip to content
This repository
tree: c605e5130d
Fetching contributors…

Cannot retrieve contributors at this time

executable file 85 lines (64 sloc) 2.124 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
#!/usr/bin/env perl

use strict;
use warnings;

my $root;

BEGIN { # add the local perllibs too

    # Can't use Path::Class here as we'd load the old debian one.
    $root = __FILE__ =~ m{^(.*)/(web|bin)/\.\..*$} ? $1 : `pwd`;
    chomp($root);
}

# Set the environment for the FixMyStreet project

# Add the lib/perl5 in perl-external so that we can load local::lib from there
use lib "$root/local/lib/perl5";

# Add the perl-external dirs properly using local::lib
use local::lib "$root/local";

use lib "$root/commonlib/perllib";
use lib "$root/perllib";
for ( "$root/commonlib/perllib", "$root/perllib" ) {
    $ENV{PERL5LIB} = "$_:$ENV{PERL5LIB}";
}

# need to make sure we fetch this after our libs are in INC as some
# vendor provided versions are old an incompatible with Moose
use List::MoreUtils 'uniq';

# also set the path to our scripts etc
$ENV{PATH} = join ':', uniq "$root/bin", split( m/:/, $ENV{PATH} );

# we might want to require this file to configure something like a CGI script
if ( $0 eq __FILE__ ) {

    my @keys = sort 'PATH', grep { m{^PERL} } keys %ENV;

    print "export $_='$ENV{$_}'\n" for @keys;
    print 'export PS1="(fms) $PS1"' . "\n";

    print << "STOP";

# $0 - set up the environment for FixMyStreet.
#
# This script can be used one of two ways:
#
# With arguments executes the arguments with the environment correctly set -
# intended for things like the cron jobs:
#
# $0 env
#
# Or if no arguments prints out the bash shell commands needed to set up the
# environment - which is useful when developing. Use this to set your current
# shell:
#
# eval `$0`
STOP

}
else {

    # we were just required - unload some modules to prevent old code
    # getting in the way of loading newer code from the newly set directories.

    # use an eval to prevent needing Class::Unload before perl-external properly
    # setup
    eval "use Class::Unload";
    die $@ if $@;

    my @modules =
      sort
      grep { m/File::/ }
      map { s{\.pm$}{}; s{/}{::}g; $_ }
      grep { m{\.pm$} }
      keys %INC;

    for (@modules) {
        Class::Unload->unload($_);
    }
}

1;
Something went wrong with that request. Please try again.