#!/usr/bin/env perl
#
# pkgtxt2db.pl
#
# copyright 2012 Frédéric Galusik <fredg~at~salixos~dot~org>
#
# License: BSD Revised
#
# Convert the Slackware/Salix PACKAGES.TXT file some various database
# formats : CSV, json,
#

use strict;
use warnings;

use Getopt::Long;
use Pkgtxt2db::Pkgtxt2db;
#use Pkgtxt2db;

my $VERSION = "0.1.6";

my $Pkgtxt2db = Pkgtxt2db->new();

#
# help - usage
#
sub usage {
    print "Usage: $0 [options]\n\n";
    print "Options:\n";
    print " -c | --csv\t\tconvert PACKAGES.TXT to a CSV DB\n";
    print " -j | --json\t\tconvert PACKAGES.TXT to a JSON DB\n";
    print " -x | --xml\t\tconvert PACKAGES.TXT to a XML DB\n";
    print " -t | --target\t\tuse with -c, -j or -x, choose slackware or salix\n";
    print " -r | --release\t\tuse with -t, choose the release\n";
    print " -h | --help\t\tprint this message\n";
    print " -v | --version\t\tprint pkgtxt2db version\n";
    print "\n";
    print "See the man page (man pkgtxt2db) for detailed informations.\n";
    print "\n";
    exit 0;
}

#
# CLI options
#
my $version;
my $help;
my $csv;
my $json;
my $xml;

GetOptions(
    'version'    =>  \$version,
    'help'       =>  \&usage,
    'release=s'  =>  \$Pkgtxt2db::release,
    'target=s'   =>  \$Pkgtxt2db::target,
    'csv'        =>  \$csv,
    'json'       =>  \$json,
    'xml'        =>  \$xml,
    );
if ($version) {
    print "Pkgtxt2db, version $VERSION\n";
    print "Copyright 2011-2012 Frédéric Galusik\n";
    print "http://www.salixos.org/wiki/index.php/Pkgtxt2db\n";
    exit 0;
    }
if ($csv) {
    Pkgtxt2db->checktarget();
    Pkgtxt2db->checkrelease();
    Pkgtxt2db->getpkgtxt();
    Pkgtxt2db->mkdadb();
    Pkgtxt2db->getdata();
    Pkgtxt2db->tocsv();
    exit 0;
    }
if ($json) {
    Pkgtxt2db->checktarget();
    Pkgtxt2db->checkrelease();
    Pkgtxt2db->getpkgtxt();
    Pkgtxt2db->mkdadb();
    Pkgtxt2db->getdata();
    Pkgtxt2db->tojson();
    exit 0;
    }
if ($xml) {
    Pkgtxt2db->checktarget();
    Pkgtxt2db->checkrelease();
    Pkgtxt2db->getpkgtxt();
    Pkgtxt2db->mkdadb();
    Pkgtxt2db->getdata();
    Pkgtxt2db->toxml();
    exit 0;
    } 
else {
    die "Wrong usage, run pkgtxt2db --help for information.\n";
}

