1package plugin 2 3import ( 4 "fmt" 5 "os" 6) 7 8// ServeMuxMap is the type that is used to configure ServeMux 9type ServeMuxMap map[string]*ServeConfig 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. 16func 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} 32