code: func helpFunc(commands map[string]cli.CommandFactory) string {
  	// Determine the maximum key length, and classify based on type
  	porcelain := make(map[string]cli.CommandFactory)
  	plumbing := make(map[string]cli.CommandFactory)
  	maxKeyLen := 0
  	for key, f := range commands {
  		if len(key) > maxKeyLen {
  			maxKeyLen = len(key)
  		}
  
  		if _, ok := PlumbingCommands[key]; ok {
  			plumbing[key] = f
  		} else {
  			porcelain[key] = f
  		}
  	}
  
  	// The output produced by this is included in the docs at
  	// website/source/docs/commands/index.html.markdown; if you
  	// change this then consider updating that to match.
  	helpText := fmt.Sprintf(`
  Usage: terraform [-version] [-help] <command> [args]
  
  The available commands for execution are listed below.
  The most common, useful commands are shown first, followed by
  less common or more advanced commands. If you're just getting
  started with Terraform, stick with the common commands. For the
  other commands, please read the help and docs before usage.
  
  Common commands:
  %s
  All other commands:
  %s
  `, listCommands(porcelain, maxKeyLen), listCommands(plumbing, maxKeyLen))
  
  	return strings.TrimSpace(helpText)
  }
docs: // helpFunc is a cli.HelpFunc that can is used to output the help for Terraform.