]>
Commit | Line | Data |
---|---|---|
bae9f6d2 JC |
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]*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. | |
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 | } |