package ConclaveNLPTools;
use Dancer ':syntax';

use Conclave::Utils::OTK;
use Cwd;
use Data::Dumper;

our $VERSION = '0.1';

our $HOME = '/home/smash/conclave-website-root';
our $OWLROOT = "$HOME/owl";

hook before_template => sub {
    my $tokens = shift;
    my $path = request->base->path;
    $tokens->{uri_base} = $path eq '/' ? $path : $path.'/';
};

get '/' => sub {
  my @packages = __package_list($OWLROOT);

  template 'index' => { packages =>[@packages] };
};

get '/package/:pkgid' => sub {
  my $pkgid = param 'pkgid';
  my @packages = __package_list($OWLROOT);
  my @available = __package_available_list($OWLROOT,$pkgid);

  template 'package' => { pkgid => $pkgid, packages => [@packages], available => [@available] };
};

sub __package_list {
  my $root = shift;

  my @packages;
  opendir(my $dh, $root) or die "can't opendir $root: $!";
  while(readdir $dh) {
    next if $_ =~ m/^\.{1,2}$/;
    next unless -d "$root/$_";

    push @packages, $_;
  }
  closedir $dh;

  return @packages;
}

sub __package_available_list {
  my ($root, $pkgid) = @_;

  my %available;
  opendir(my $dh, "$root/$pkgid") or die "can't opendir $root/$pkgid: $!";
  while(readdir $dh) {
    next if $_ =~ m/^\.{1,2}$/;

    $_ =~ s/\..*?$//;
    $available{$_}++;
  }
  closedir $dh;

  return keys %available;
}

true;
