#!/usr/bin/perl

use strict;
use warnings;
use v5.10;
use Clustericious::Config;
use YAML::XS qw( Dump );

$ENV{MOJO_TEMPLATE_DEBUG} = 1;
$ENV{CLUSTERICIOUS_CONFIG_SAVE_RENDERED} = 1;

my $app_name = shift @ARGV;

unless(defined $app_name)
{
  say "usage: $0 AppName";
  exit 1;
}

my $callback1 = sub
{
  my($class, $src) = @_;
  my $data;
  if(ref $src)
  {
    say "[SCALAR :: template]";
    $data = $$src;
  }
  else
  {
    say "[$src :: template]";
    open my $fh, '<', $src;
    local $/;
    $data = <$fh>;
    close $fh;
  }
  chomp $data;
  say $data;
};

my $callback2 = sub
{
  my($class, $file, $content) = @_;
  say "[$file :: interpreted]";
  chomp $content;
  say $content;
};

# place the hooks in Clustericious::Config which usually
# doesn't do this debugging stuff.
do { no warnings; *Clustericious::Config::pre_rendered = $callback1; };
do { no warnings; *Clustericious::Config::rendered     = $callback2; };

my $config = Clustericious::Config->new($app_name);

say "[merged]";
print Dump({ %$config });
