--- /dev/null
+#!/usr/bin/env lua
+-------------------------------------------------------------------------------
+-- LuaDoc launcher.
+-- @release $Id: luadoc.lua.in,v 1.1 2008/02/17 06:42:51 jasonsantos Exp $
+-------------------------------------------------------------------------------
+
+require "luadoc"
+
+-------------------------------------------------------------------------------
+-- Print version number.
+
+local function print_version ()
+ print (string.format("%s\n%s\n%s",
+ luadoc._VERSION,
+ luadoc._DESCRIPTION,
+ luadoc._COPYRIGHT))
+end
+
+-------------------------------------------------------------------------------
+-- Print usage message.
+
+local function print_help ()
+ print ("Usage: "..arg[0]..[[ [options|files]
+Generate documentation from files. Available options are:
+ -d path output directory path
+ -t path template directory path
+ -h, --help print this help and exit
+ --noindexpage do not generate global index page
+ --nofiles do not generate documentation for files
+ --nomodules do not generate documentation for modules
+ --doclet doclet_module doclet module to generate output
+ --taglet taglet_module taglet module to parse input code
+ -q, --quiet suppress all normal output
+ -v, --version print version information]])
+end
+
+local function off_messages (arg, i, options)
+ options.verbose = nil
+end
+
+-------------------------------------------------------------------------------
+-- Process options. TODO: use getopts.
+-- @class table
+-- @name OPTIONS
+
+local OPTIONS = {
+ d = function (arg, i, options)
+ local dir = arg[i+1]
+ if string.sub (dir, -2) ~= "/" then
+ dir = dir..'/'
+ end
+ options.output_dir = dir
+ return 1
+ end,
+ t = function (arg, i, options)
+ local dir = arg[i+1]
+ if string.sub (dir, -2) ~= "/" then
+ dir = dir..'/'
+ end
+ options.template_dir = dir
+ return 1
+ end,
+ h = print_help,
+ help = print_help,
+ q = off_messages,
+ quiet = off_messages,
+ v = print_version,
+ version = print_version,
+ doclet = function (arg, i, options)
+ options.doclet = arg[i+1]
+ return 1
+ end,
+ taglet = function (arg, i, options)
+ options.taglet = arg[i+1]
+ return 1
+ end,
+}
+
+-------------------------------------------------------------------------------
+
+local function process_options (arg)
+ local files = {}
+ local options = require "luadoc.config"
+ local i = 1
+ while i <= #arg do
+ local argi = arg[i]
+ if string.sub (argi, 1, 1) ~= '-' then
+ table.insert (files, argi)
+ else
+ local opt = string.sub (argi, 2)
+ if string.sub (opt, 1, 1) == '-' then
+ opt = string.gsub (opt, "%-", "")
+ end
+ if OPTIONS[opt] then
+ if OPTIONS[opt] (arg, i, options) then
+ i = i + 1
+ end
+ else
+ options[opt] = 1
+ end
+ end
+ i = i+1
+ end
+ return files, options
+end
+
+-------------------------------------------------------------------------------
+-- Main function. Process command-line parameters and call luadoc processor.
+
+function main (arg)
+ -- Process options
+ local argc = #arg
+ if argc < 1 then
+ print_help ()
+ return
+ end
+ local files, options = process_options (arg)
+ return luadoc.main(files, options)
+end
+
+main(arg)