# File lib/drydock.rb, line 257
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:         # Out to sea
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 # empty line
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