#!/usr/local/bin/tclsh
# -*- tcl -*-
# generate source distribution for a module.

package require Pool_Base
package require Makedist

# for testing
#lappend auto_path [file join [::pool::file::here] lib]
#lappend auto_path [file join [::pool::file::here] support]


namespace eval ::makedist {
    namespace export *
}

proc ::makedist::usage {} {
    global argv0

    set rl [::makedist::retrievers]
    set pl [::makedist::packers]
    set tl [::makedist::transports]

    regsub -all { } $rl {|} rl
    regsub -all { } $pl {|} pl
    regsub -all { } $tl {|} tl

    puts stdout ""
    puts stdout "usage: $argv0 ?-retriever $rl? ?-packer 'list of $pl'? ?-transport $tl? ?-version version? module"
    puts stdout ""

    exit -1
}


if {$argc < 1} {
    ::makedist::usage
}

::pool::array::def        oDef
::pool::getopt::defOption oDef version
::pool::getopt::defOption oDef builddir  -d [file join $env(HOME) .mkd[pid]]
::pool::getopt::defOption oDef retriever -d cvs -t ::makedist::isRetriever
::pool::getopt::defOption oDef packer    -d tgz -t ::makedist::isPackerList
::pool::getopt::defOption oDef transport -d pwd -t ::makedist::isTransport

foreach opt {
    retriever packer transport
} {
    proc $opt {v} "global oDef; ::pool::getopt::changeDefault oDef $opt \$v"
}

# user dependent configuration
catch {source [file join $env(HOME) .makedistrc]}

# caller configuration
::pool::array::def                             opt
set argv   [::pool::getopt::process oDef $argv opt]
set module [lindex $argv 0]

if {[string length $module] == 0} {
    ::makedist::usage
}


proc log_do {level message} {
    puts stdout "$level\t$message"
}

::pool::syslog::def log_do

::makedist::do \
	-retriever $opt(-retriever) \
	-packer    $opt(-packer)    \
	-transport $opt(-transport) \
	-version   $opt(-version)   \
	-builddir  $opt(-builddir)  \
	$module

exit 0
