#!/usr/bin/env perl6




use v6;
use TXN;




# -----------------------------------------------------------------------------
# main
# -----------------------------------------------------------------------------

# release
multi sub MAIN(
    Str:D $file where *.so,
    Str :N(:$pkgname),
    Str :V(:$pkgver),
    Int :R(:$pkgrel),
    Str :D(:$pkgdesc),
    Str :I(:$txn-dir),
    Int :L(:$date-local-offset),
    Str :T(:$template)
)
{
    my %opts;
    %opts<pkgname> = $pkgname if $pkgname;
    %opts<pkgver> = $pkgver if $pkgver;
    %opts<pkgrel> = $pkgrel if $pkgrel;
    %opts<pkgdesc> = $pkgdesc if $pkgdesc;
    %opts<txn-dir> = resolve-path($txn-dir) if $txn-dir;
    %opts<date-local-offset> = Int($date-local-offset) if $date-local-offset;
    %opts<template> = resolve-path($template) if $template;

    mktxn(:file(resolve-path($file)), :release, |%opts);
}

sub resolve-path(Str:D $path where *.so) returns Str:D
{
    ~$path.subst(/^'~/'/, $*HOME ~ '/').IO.resolve;
}




# -----------------------------------------------------------------------------
# usage
# -----------------------------------------------------------------------------

sub USAGE()
{
    constant $HELP = q:to/EOF/;
    Usage:
      mktxn [--pkgname=<name>]
            [--pkgver=<version>]
            [--pkgrel=<release>]
            [--pkgdesc=<description>]
            [--txn-dir=<dir>]
            [--date-local-offset=<offset>]
            [--template=<template>]
            <file>                            Package TXN from file

    Options:
      -h, --help
        print this help message
      -N, --pkgname=<name>
        the name of TXN package
      -V, --pkgver=<version>
        the version number of TXN package
      -R, --pkgrel=<release>
        the release number of TXN package
      -D, --pkgdesc=<description>
        the description of TXN package
      -I, --txn-dir=<dir>
        the include directory
      -L, --date-local-offset=<offset>
        the local offset for dates without one
      -T, --template=<template>
        the location of the config template for TXN package
    EOF
    say $HELP.trim;
}

# vim: set filetype=perl6 foldmethod=marker foldlevel=0:
