The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

BEGIN {
  if ($ENV{_} and $ENV{_} =~ m/netdisco-web-fg$/) {
      die "You probably want: '~/bin/localenv starman $0 --workers=1 --disable-keepalive'\n";
  }
}

use FindBin;
FindBin::again();
use Path::Class 'dir';

BEGIN {
  # stuff useful locations into @INC
  unshift @INC,
    dir($FindBin::RealBin)->parent->subdir('lib')->stringify,
    dir($FindBin::RealBin, 'lib')->stringify;

  unshift @INC,
    split m/:/, ($ENV{NETDISCO_INC} || '');
}

use App::Netdisco;
use Dancer;
warning sprintf "App::Netdisco %s web", ($App::Netdisco::VERSION || 'HEAD');

my $home = ($ENV{NETDISCO_HOME} || $ENV{HOME});
set(session_dir => dir($home, 'netdisco-web-sessions')->stringify);

set plack_middlewares => [
  ['Plack::Middleware::ReverseProxy'],
  [ Expires => (
      content_type => [qr{^application/javascript}, qr{^text/css}, qr{image}, qr{font}],
      expires => 'access plus 1 day',
  )],
  [ Static => (
      path => qr{^/(?:javascripts|css|font|images)/},
      root => $ENV{DANCER_PUBLIC},
      pass_through => 1,
  )],
  # install Dancer::Debug for this...
  (
    $ENV{DANCER_DEBUG} ?
      [ Debug => (
          panels => [qw/Dancer::Settings Parameters Dancer::Version DBITrace/],
      )]
    : ()
  )
];

use App::Netdisco::Web;
use Plack::Builder;

my $path = (setting('path') || '/');
builder { mount $path => dance };

=head1 NAME

netdisco-web-fg - Web Application for Netdisco

=head1 SEE ALSO

=over 4

=item *

L<App::Netdisco>

=back

=cut