#!/usr/bin/perl -w -I ./lib

use 5.018;

use strict;

use Carp;

use IO::Async::Process;
use IO::Async::Loop;

use Narwhal;

use Data::Dumper;

sub main() {
    my $narwhal = Narwhal->new();
    if($narwhal) {
        $narwhal->begin();
        if($narwhal->parse()) {
            if($narwhal->proc()) {
                my @cmds = $narwhal->gencmd();
                my $loop = IO::Async::Loop->new();
                
                for my $cmd (@cmds) {
                    my $process = IO::Async::Process->new(
                        command => [$cmd],
                        on_finish => sub {
                            $loop->stop();                            
                        },
                    );
                    
                    $loop->add($process);
                }
                
                $loop->run();
                
            } else {
                say "narwhal->proc() failed.";
            }
        } else {
            say "narwhal->parse() failed.";
        }
    }
}

main();