#%Module

proc ModulesHelp {} {
    puts stderr {    module-info - returns all the various modulefile information}
    puts stderr {    values in whatever mode you use (except in `whatis' mode).}
    puts stderr {}
}

module-whatis {returns all various module-info values}

proc InfoOut {} {
    puts stderr {+++ global vars +++++++++++++++++++++++++++++++}
    foreach name {ModulesCurrentModulefile ModuleTool ModuleToolVersion} {
        puts stderr [format {%-24s = %s} $name [set ::$name]]
    }
    puts stderr {}

    puts stderr {+++ module-info +++++++++++++++++++++++++++++++}
    foreach name {command mode name shell shelltype specified tags type usergroups username} {
        puts stderr [format {%-24s = %s} $name [module-info $name]]
    }
    foreach name {symbols version} {
        puts stderr [format {%-24s = %s} $name [module-info $name [module-info name]]]
    }
    puts stderr {}

    puts stderr {+++ info ++++++++++++++++++++++++++++++++++++++}
    foreach name {hostname level library nameofexecutable sharedlibextension tclversion\
        patchlevel} {
        puts stderr [format {%-24s = %s} $name [info $name]]
    }
    puts stderr {}

    puts stderr {+++ test ++++++++++++++++++++++++++++++++++++++}
    foreach cmd {{is-loaded null} {is-avail dot} {is-used .} {is-saved default}} {
        puts stderr [format {%-24s = %s} $cmd [{*}$cmd]]
    }
    puts stderr {}

    puts stderr {+++ uname +++++++++++++++++++++++++++++++++++++}
    foreach name {sysname nodename domain release version machine} {
        puts stderr [format {%-24s = %s} $name [uname $name]]
    }
    puts stderr {}

    puts stderr {+++ lsb-release +++++++++++++++++++++++++++++++}
    foreach name {id release codename} {
        puts stderr [format {%-24s = %s} $name [lsb-release $name]]
    }
    puts stderr {}
}

if {[module-info mode] ni {scan whatis}} {
    InfoOut
}
