github.com/dahs81/otto@v0.2.1-0.20160126165905-6400716cf085/plugin/server_mux.go (about)

     1  package plugin
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  )
     7  
     8  // ServeMuxMap is the type that is used to configure ServeMux
     9  type ServeMuxMap map[string]*ServeOpts
    10  
    11  // ServeMux is like Serve, but serves multiple types of plugins determined
    12  // by the argument given on the command-line.
    13  //
    14  // This command doesn't return until the plugin is done being executed. Any
    15  // errors are logged or output to stderr.
    16  func ServeMux(m ServeMuxMap) {
    17  	if len(os.Args) != 2 {
    18  		fmt.Fprintf(os.Stderr,
    19  			"Invoked improperly. This is an internal command that shouldn't\n"+
    20  				"be manually invoked.\n")
    21  		os.Exit(1)
    22  	}
    23  
    24  	opts, ok := m[os.Args[1]]
    25  	if !ok {
    26  		fmt.Fprintf(os.Stderr, "Unknown plugin: %s\n", os.Args[1])
    27  		os.Exit(1)
    28  	}
    29  
    30  	Serve(opts)
    31  }