257: def show_commands
258: project = " for #{Drydock.project}" if Drydock.project?
259: cmds = {}
260: Drydock.commands.keys.each do |cmd|
261: next if cmd == :show_commands
262: pretty = Drydock.decanonize(cmd)
263:
264: cmds[Drydock.commands[cmd].cmd] ||= {}
265: unless cmd === Drydock.commands[cmd].cmd
266: (cmds[Drydock.commands[cmd].cmd][:aliases] ||= []) << pretty
267: next
268: end
269: cmds[cmd][:desc] = Drydock.commands[cmd].desc
270: cmds[cmd][:desc] = nil if cmds[cmd][:desc] && cmds[cmd][:desc].empty?
271: cmds[cmd][:pretty] = pretty
272: end
273:
274: cmd_names_sorted = cmds.keys.sort{ |a,b| a.to_s <=> b.to_s }
275:
276: if @global.quiet
277: puts "Commands: "
278: line = []
279: cmd_names_sorted.each_with_index do |cmd,i|
280: line << cmd
281: if (line.size % 4 == 0) || i == (cmd_names_sorted.size - 1)
282: puts " %s" % line.join(', ')
283: line.clear
284: end
285: end
286: return
287: end
288:
289: puts "%5s: %s" % ["Usage", "#{@executable} [global options] COMMAND [command options]"]
290: puts "%5s: %s" % ["Try", "#{@executable} -h"]
291: puts "%5s %s" % ["", "#{@executable} COMMAND -h"]
292: puts
293:
294: puts "Commands: "
295: if @global.verbose > 0
296: puts
297: cmd_names_sorted.each do |cmd|
298: puts "$ %s" % [@executable] if Drydock.default?(cmd)
299: puts "$ %s %s" % [@executable, cmds[cmd][:pretty]]
300: puts "%10s: %s" % ["About", cmds[cmd][:desc]] if cmds[cmd][:desc]
301: if cmds[cmd][:aliases]
302: cmds[cmd][:aliases].sort!{ |a,b| a.size <=> b.size }
303: puts "%10s: %s" % ["Aliases", cmds[cmd][:aliases].join(', ')]
304: end
305: puts
306: end
307:
308: else
309: cmd_names_sorted.each do |cmd|
310: aliases = cmds[cmd][:aliases] || []
311: aliases.sort!{ |a,b| a.size <=> b.size }
312: aliases = aliases.empty? ? '' : "(aliases: #{aliases.join(', ')})"
313: pattern = Drydock.default?(cmd) ? "* %-16s %s" : " %-16s %s"
314: puts pattern % [cmds[cmd][:pretty], aliases]
315: end
316: end
317: end