#!/usr/bin/perl -w
###########################################
# smoke-me -- Smoke-test a distro tarball
#   in a number of Docker containers.
# Mike Schilli, 2014 (m@perlmeister.com)
###########################################
use strict;
use Sysadm::Install qw(:all);
use Log::Log4perl qw( :easy );
use File::Basename;
use Getopt::Std;
use File::Temp qw( tempdir );

getopts( "v", \my %opts );

my( $tarball_path ) = @ARGV;
die "usage: $0 tarball" if 
    !defined $tarball_path;

my $tempdir = tempdir( CLEANUP => 1 );
cp $tarball_path, $tempdir;
my $tarball = basename $tarball_path;

my $log_level = 
    ( $opts{ v } ? $DEBUG : $INFO );

Log::Log4perl->easy_init( $log_level );

for my $container_path ( <containers/*> ) {
  cd $container_path;
  my $container = basename $container_path;

  my @verbose = 
    ( $opts{ v } ? ("-v") : () );

  my $rc =
  sysrun "docker", "run", "-i", 
    "-v", "$tempdir:/mnt/tmp", 
    "$container-perltest", 
    "cpanm", @verbose, "/mnt/tmp/$tarball";

  INFO "Test in container '$container' ",
    ( $rc ? "failed" : "OK" );

  cdback;
}
