mirror of
https://github.com/RoganDawes/P4wnP1_aloa.git
synced 2025-03-28 18:41:46 +01:00
98 lines
2.5 KiB
Go
98 lines
2.5 KiB
Go
package cli_client
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/pflag"
|
|
"os"
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
templateFlagTriggerGroupName = "group-name"
|
|
templateFlagTriggerGroupValue = "group-value"
|
|
)
|
|
|
|
var (
|
|
// deploy
|
|
tmpTriggerGroupName = ""
|
|
tmpTriggerGroupValue = int32(0)
|
|
)
|
|
|
|
func TriggerCheckFlags(cmd *cobra.Command) {
|
|
valDefined,nameDefined := false,false
|
|
cmd.Flags().Visit(func(flag *pflag.Flag) {
|
|
if flag.Name == templateFlagTriggerGroupName {
|
|
nameDefined = true
|
|
}
|
|
if flag.Name == templateFlagTriggerGroupValue {
|
|
valDefined = true
|
|
}
|
|
})
|
|
|
|
check := true
|
|
if !nameDefined {
|
|
fmt.Printf("The '%s' flag has to be set\n", templateFlagTriggerGroupName)
|
|
check = false
|
|
}
|
|
if !valDefined {
|
|
fmt.Printf("The '%s' flag has to be set\n", templateFlagTriggerGroupValue)
|
|
check = false
|
|
}
|
|
|
|
if !check {
|
|
os.Exit(-1)
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
cmdTrigger := &cobra.Command{
|
|
Use: "trigger",
|
|
Short: "Fire a group send action or wait for a group receive trigger",
|
|
}
|
|
|
|
cmdTriggerSend := &cobra.Command{
|
|
Use: "send",
|
|
Short: "Fire a group send action",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
TriggerCheckFlags(cmd)
|
|
fmt.Printf("Sending value %d to group '%s'...", tmpTriggerGroupValue, tmpTriggerGroupName)
|
|
err := ClientTriggerGroupSend(StrRemoteHost,StrRemotePort,tmpTriggerGroupName,tmpTriggerGroupValue)
|
|
if err != nil {
|
|
fmt.Println("error: ", err)
|
|
os.Exit(-1)
|
|
}
|
|
fmt.Println("success")
|
|
},
|
|
|
|
}
|
|
|
|
cmdTriggerWait := &cobra.Command{
|
|
Use: "wait",
|
|
Short: "wait for a group receive trigger",
|
|
Long: ``,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
TriggerCheckFlags(cmd)
|
|
fmt.Printf("Waiting for value %d on group '%s'...", tmpTriggerGroupValue, tmpTriggerGroupName)
|
|
err := ClientTriggerGroupWait(StrRemoteHost,StrRemotePort,tmpTriggerGroupName,tmpTriggerGroupValue)
|
|
if err != nil {
|
|
fmt.Println("error: ", err)
|
|
os.Exit(-1)
|
|
}
|
|
fmt.Println("received")
|
|
},
|
|
}
|
|
|
|
|
|
|
|
rootCmd.AddCommand(cmdTrigger)
|
|
cmdTrigger.AddCommand(cmdTriggerSend, cmdTriggerWait)
|
|
|
|
cmdTriggerSend.Flags().StringVarP(&tmpTriggerGroupName, templateFlagTriggerGroupName, "n", "","Name of the group to send to")
|
|
cmdTriggerSend.Flags().Int32VarP(&tmpTriggerGroupValue, templateFlagTriggerGroupValue, "v", 0,"The value to send")
|
|
|
|
cmdTriggerWait.Flags().StringVarP(&tmpTriggerGroupName, templateFlagTriggerGroupName, "n", "","Name of the group to listen")
|
|
cmdTriggerWait.Flags().Int32VarP(&tmpTriggerGroupValue, templateFlagTriggerGroupValue, "v", 0,"The value to wait for")
|
|
}
|