diff options
Diffstat (limited to 'vendor/github.com/hashicorp/go-plugin/server_mux.go')
-rw-r--r-- | vendor/github.com/hashicorp/go-plugin/server_mux.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/go-plugin/server_mux.go b/vendor/github.com/hashicorp/go-plugin/server_mux.go new file mode 100644 index 0000000..033079e --- /dev/null +++ b/vendor/github.com/hashicorp/go-plugin/server_mux.go | |||
@@ -0,0 +1,31 @@ | |||
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 | } | ||