#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.010000;
use autodie;
use FindBin;
use lib "$FindBin::Bin/../lib";
use Twiggy::Server;
use Plack::Builder;
use Ukigumo::Agent::Manager;
use Ukigumo::Agent;
use Getopt::Long;
use Pod::Usage;
use List::Util qw(first);
use File::Spec;
use Plack::App::File;
$|++;
my $port = 1984;
my $host = '127.0.0.1';
GetOptions(
'work_dir=s' => \my $work_dir,
'server_url=s' => \my $server_url,
'h|host=s' => \$host,
'p|port=i' => \$port,
'timeout=i' => \my $timeout,
);
$work_dir or pod2usage();
$server_url or pod2usage();
my $manager = Ukigumo::Agent::Manager->new(
work_dir => $work_dir,
server_url => $server_url,
timeout => $timeout || 0,
);
Ukigumo::Agent->register_manager($manager);
my $app = builder {
enable 'AccessLog';
mount '/static/' => Plack::App::File->new(
{root => File::Spec->catdir(Ukigumo::Agent->share_dir, 'static')}
)->to_app;
mount '/' => Ukigumo::Agent->to_app();
};
my $twiggy = Twiggy::Server->new(
host => $host,
port => $port,
);
$twiggy->register_service($app);
print "http://${host}:${port}/\n";
AE::cv->recv;
__END__
=head1 NAME
ukigumo-agent.pl - CI agent server
=head1 SYNOPSIS
% ukigumo-agent.pl --server_url=http://example.com/
--server_url=http://example.com ukigumo-server URL
--work_dir=/tmp/ working directory
--host=127.0.0.1 Bind host
--port=80 Bind port (Default: 1984)
--timeout=123 Timeout seconds (Default: Not timeout)
=head1 DESCRIPTION
ukigumo-agent.pl is CI agent server, runs test cases.