コード例 #1
0
ファイル: control.go プロジェクト: echocat/caretakerd
func createSignalServiceCommand(commonClientFlags []cli.Flag, clientFactory *client.Factory) cli.Command {
	return cli.Command{
		Name:      "serviceSignal",
		Flags:     commonClientFlags,
		ArgsUsage: "<service name> <signal>",
		Aliases:   []string{"signal"},
		Usage:     "Send a signal to service.",
		Before:    ensureServiceNameAndSignalArgument,
		Action: actionWrapper(clientFactory, func(context *cli.Context, client *client.Client) error {
			args := context.Args()
			name := args[0]
			var sig values.Signal
			err := sig.Set(args[1])
			if err != nil {
				return UsageError{error: err.Error()}
			}
			return client.SignalService(name, sig)
		}),
		OnUsageError: onUsageErrorFor("serviceSignal"),
	}
}
コード例 #2
0
ファイル: control.go プロジェクト: echocat/caretakerd
func ensureServiceNameAndSignalArgument(context *cli.Context) error {
	err := baseControlEnsure(context)
	if err != nil {
		return err
	}
	args := context.Args()
	if (len(args) <= 0) || (len(strings.TrimSpace(args[0])) == 0) {
		return UsageError{error: "There is no service name provided."}
	}
	if (len(args) <= 1) || (len(strings.TrimSpace(args[1])) == 0) {
		return UsageError{error: "There is no signal provided."}
	}
	var sig values.Signal
	err = sig.Set(args[1])
	if err != nil {
		return UsageError{error: err.Error()}
	}
	if len(args) > 2 {
		return UsageError{error: "There are only two arguments allowed."}
	}
	return nil
}