code: func outputList() {
  	fmt.Println()
  	for _, fn := range root.Project.Functions {
  		awsFn, err := fn.GetConfigCurrent()
  
  		if awserr, ok := err.(awserr.Error); ok && awserr.Code() == "ResourceNotFoundException" {
  			fmt.Printf("  \033[%dm%s\033[0m (not deployed) \n", colors.Blue, fn.Name)
  		} else {
  			fmt.Printf("  \033[%dm%s\033[0m\n", colors.Blue, fn.Name)
  		}
  
  		if fn.Description != "" {
  			fmt.Printf("    description: %v\n", fn.Description)
  		}
  		fmt.Printf("    runtime: %v\n", fn.Runtime)
  		fmt.Printf("    memory: %vmb\n", fn.Memory)
  		fmt.Printf("    timeout: %vs\n", fn.Timeout)
  		fmt.Printf("    role: %v\n", fn.Role)
  		fmt.Printf("    handler: %v\n", fn.Handler)
  		if awsFn != nil && awsFn.Configuration != nil && awsFn.Configuration.FunctionArn != nil {
  			fmt.Printf("    arn: %v\n", *awsFn.Configuration.FunctionArn)
  		}
  
  		if err != nil {
  			fmt.Println()
  			continue // ignore
  		}
  
  		aliaslist, err := fn.GetAliases()
  		if err != nil {
  			continue
  		}
  
  		var aliases string
  		for index, alias := range aliaslist.Aliases {
  			if index > 0 {
  				aliases += ", "
  			}
  			aliases += fmt.Sprintf("%s@v%s", *alias.Name, *alias.FunctionVersion)
  		}
  		if aliases == "" {
  			aliases = "<none>"
  		}
  		fmt.Printf("    aliases: %s\n", aliases)
  		fmt.Println()
  	}
  }
docs: // outputList format.