github.com/cloudfoundry/cli@v7.1.0+incompatible/plugin/plugin_examples/interactive.go (about)

     1  /**
     2  * This is an example of an interactive plugin. The plugin is invoked with
     3  * `cf interactive` after which the user is prompted to enter a word. This word is
     4  * then echoed back to the user.
     5   */
     6  
     7  package main
     8  
     9  import (
    10  	"fmt"
    11  
    12  	"code.cloudfoundry.org/cli/plugin"
    13  )
    14  
    15  type Interactive struct{}
    16  
    17  func (c *Interactive) Run(cliConnection plugin.CliConnection, args []string) {
    18  	if args[0] == "interactive" {
    19  		var Echo string
    20  		fmt.Printf("Enter word: ")
    21  
    22  		// Simple scan to wait for interactive from stdin
    23  		fmt.Scanf("%s", &Echo)
    24  
    25  		fmt.Println("Your word was:", Echo)
    26  	}
    27  }
    28  
    29  func (c *Interactive) GetMetadata() plugin.PluginMetadata {
    30  	return plugin.PluginMetadata{
    31  		Name: "Interactive",
    32  		Version: plugin.VersionType{
    33  			Major: 2,
    34  			Minor: 1,
    35  			Build: 0,
    36  		},
    37  		Commands: []plugin.Command{
    38  			{
    39  				Name:     "interactive",
    40  				HelpText: "help text for interactive",
    41  				UsageDetails: plugin.Usage{
    42  					Usage: "interactive - prompt for input and echo to screen\n   cf interactive",
    43  				},
    44  			},
    45  		},
    46  	}
    47  }
    48  
    49  func main() {
    50  	plugin.Start(new(Interactive))
    51  }