view share/lua/5.2/luarocks/help.lua @ 7946:8ecffca9813d

<moon__> mkx bin/hfs//erro \'You have discovered an eerie cavern. The air aboe the dark stone floor is alive ith vortices of purple light and dark, boiling clouds. Seemingly bottemless pits mark the surface. "$1" stand below\'
author HackBot
date Sat, 07 May 2016 18:36:18 +0000
parents d137f631bad5
children
line wrap: on
line source


--- 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