diff share/lua/5.2/luarocks/help.lua @ 1132:d137f631bad5

<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
author HackBot
date Fri, 14 Dec 2012 22:24:27 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/lua/5.2/luarocks/help.lua	Fri Dec 14 22:24:27 2012 +0000
@@ -0,0 +1,101 @@
+
+--- Module implementing the LuaRocks "help" command.
+-- This is a generic help display module, which
+-- uses a global table called "commands" to find commands
+-- to show help for; each command should be represented by a
+-- table containing "help" and "help_summary" fields.
+module("luarocks.help", package.seeall)
+
+local util = require("luarocks.util")
+local cfg = require("luarocks.cfg")
+
+help_summary = "Help on commands. Type '"..program_name.." help <command>' for more."
+
+help_arguments = "[<command>]"
+help = [[
+<command> is the command to show help for.
+]]
+
+local function print_banner()
+   util.printout("\nLuaRocks "..cfg.program_version..", a module deployment system for Lua")
+end
+
+local function print_section(section)
+   util.printout("\n"..section)
+end
+
+local function get_status(status)
+   if status then
+      return "ok"
+   elseif status == false then
+      return "not found"
+   else
+      return "failed"
+   end
+end
+
+--- Driver function for the "help" command.
+-- @param command string or nil: command to show help for; if not
+-- given, help summaries for all commands are shown.
+-- @return boolean or (nil, string): true if there were no errors
+-- or nil and an error message if an invalid command was requested.
+function run(...)
+   local flags, command = util.parse_flags(...)
+
+   if not command then
+      local sys_file, sys_ok, home_file, home_ok = cfg.which_config()
+      print_banner()
+      print_section("NAME")
+      util.printout("\t"..program_name..[[ - ]]..program_description)
+      print_section("SYNOPSIS")
+      util.printout("\t"..program_name..[[ [--from=<server> | --only-from=<server>] [--to=<tree>] [VAR=VALUE]... <command> [<argument>] ]])
+      print_section("GENERAL OPTIONS")
+      util.printout([[
+	These apply to all commands, as appropriate:
+
+	--server=<server>      Fetch rocks/rockspecs from this server
+	                       (takes priority over config file)
+	--only-server=<server> Fetch rocks/rockspecs from this server only
+	                       (overrides any entries in the config file)
+	--only-sources=<url>   Restrict downloads to paths matching the
+	                       given URL.
+	--tree=<tree>          Which tree to operate on.
+	--local                Use the tree in the user's home directory.]])
+      print_section("VARIABLES")
+      util.printout([[
+	Variables from the "variables" table of the configuration file
+	can be overriden with VAR=VALUE assignments.]])
+      print_section("COMMANDS")
+      local names = {}
+      for name, command in pairs(commands) do
+         table.insert(names, name)
+      end
+      table.sort(names)
+      for _, name in ipairs(names) do
+         local command = commands[name]
+         util.printout("", name)
+         util.printout("\t", command.help_summary)
+      end
+      print_section("CONFIGURATION")
+      util.printout([[
+	System configuration file: ]]..sys_file .. " (" .. get_status(sys_ok) ..[[)
+	User configuration file: ]]..home_file .. " (" .. get_status(home_ok) ..")\n")
+   else
+      command = command:gsub("-", "_")
+      if commands[command] then
+         local arguments = commands[command].help_arguments or "<argument>"
+         print_banner()
+         print_section("NAME")
+         util.printout("\t"..program_name.." "..command.." - "..commands[command].help_summary)
+         print_section("SYNOPSIS")
+         util.printout("\t"..program_name.." "..command.." "..arguments)
+         print_section("DESCRIPTION")
+         util.printout("",(commands[command].help:gsub("\n","\n\t"):gsub("\n\t$","")))
+         print_section("SEE ALSO")
+         util.printout("","'luarocks help' for general options and configuration.\n")
+      else
+         return nil, "Unknown command '"..command.."'"
+      end
+   end
+   return true
+end