Rework directory structure
Co-authored-by: Héctor Hurtado <hector.hurtado@bbva.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/BBVA/kapow/internal/client"
|
||||
)
|
||||
|
||||
// GetCmd is the command line interface for get kapow data operation
|
||||
var GetCmd = &cobra.Command{
|
||||
Use: "get [flags] resource",
|
||||
Short: "Retrive a Kapow! resource",
|
||||
Long: "Retrive a Kapow! resource for the current request",
|
||||
Args: cobra.ExactArgs(1),
|
||||
PreRunE: handlerIDRequired,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
url, _ := cmd.Flags().GetString("url")
|
||||
handler, _ := cmd.Flags().GetString("handler")
|
||||
|
||||
err := client.GetData(url, handler, args[0], os.Stdout)
|
||||
if err != nil {
|
||||
os.Stderr.WriteString(fmt.Sprintf("%v\n", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
GetCmd.Flags().String("url", getEnv("KAPOW_URL", "http://localhost:8082"), "Kapow! data interface URL")
|
||||
GetCmd.Flags().String("handler", getEnv("KAPOW_HANDLER_ID", ""), "Kapow! handler id")
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
//RouteCmd is the command line interface for kapow route manipulation
|
||||
var RouteCmd = &cobra.Command{
|
||||
Use: "route [action]",
|
||||
}
|
||||
|
||||
func init() {
|
||||
var routeListCmd = &cobra.Command{
|
||||
Use: "list [flags]",
|
||||
Short: "List the current Kapow! routes",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
url, _ := cmd.Flags().GetString("url")
|
||||
fmt.Println("niano: ", url)
|
||||
},
|
||||
}
|
||||
routeListCmd.Flags().String("url", getEnv("KAPOW_URL", "http://localhost:8082"), "Kapow! data interface URL")
|
||||
|
||||
var routeAddCmd = &cobra.Command{
|
||||
Use: "add [flags] url_pattern [command_file]",
|
||||
Short: "Add a route",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
url, _ := cmd.Flags().GetString("url")
|
||||
fmt.Println("niano: ", url)
|
||||
},
|
||||
}
|
||||
routeAddCmd.Flags().String("url", getEnv("KAPOW_URL", "http://localhost:8082"), "Kapow! data interface URL")
|
||||
routeAddCmd.Flags().StringP("command", "c", "", "Command to pass to the shell")
|
||||
routeAddCmd.Flags().StringP("entrypoint", "e", "", "Command to execute")
|
||||
routeAddCmd.Flags().StringP("method", "X", "", "HTTP method to accept")
|
||||
|
||||
var routeRemoveCmd = &cobra.Command{
|
||||
Use: "remove [flags] route_id",
|
||||
Short: "Remove the given route",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
url, _ := cmd.Flags().GetString("url")
|
||||
fmt.Println("niano: ", url)
|
||||
},
|
||||
}
|
||||
routeRemoveCmd.Flags().String("url", getEnv("KAPOW_URL", "http://localhost:8082"), "Kapow! data interface URL")
|
||||
|
||||
RouteCmd.AddCommand(routeListCmd)
|
||||
RouteCmd.AddCommand(routeAddCmd)
|
||||
RouteCmd.AddCommand(routeRemoveCmd)
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
// ServerCmd is the command line interface for kapow server
|
||||
var ServerCmd = &cobra.Command{
|
||||
Use: "server [optional flags] [optional pow file(s)]",
|
||||
Short: "Start a kapow server",
|
||||
Long: `Start a Kapow server with, by default with client interface, data interface
|
||||
and admin interface`,
|
||||
PreRunE: validateServerCommandArguments,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
cert, _ := cmd.Flags().GetString("certfile")
|
||||
key, _ := cmd.Flags().GetString("keyfile")
|
||||
fmt.Println("waka server feliz :)", cert, key)
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
ServerCmd.Flags().String("certfile", "", "Cert file to serve thru https")
|
||||
ServerCmd.Flags().String("keyfile", "", "Key file to serve thru https")
|
||||
ServerCmd.Flags().String("bind", "", "IP address and port to listen to")
|
||||
ServerCmd.Flags().BoolP("interactive", "i", false, "Boot an empty kapow server with a shell")
|
||||
}
|
||||
|
||||
func validateServerCommandArguments(cmd *cobra.Command, args []string) error {
|
||||
cert, _ := cmd.Flags().GetString("certfile")
|
||||
key, _ := cmd.Flags().GetString("keyfile")
|
||||
if (cert == "") != (key == "") {
|
||||
return errors.New("expected both or neither (certfile and keyfile)")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
//SetCmd is the command line interface for set kapow data operation
|
||||
var SetCmd = &cobra.Command{
|
||||
Use: "set [flags] resource [value]",
|
||||
Short: "Set a Kapow! resource value",
|
||||
Long: "Set a Kapow! resource value for the current request",
|
||||
Args: cobra.RangeArgs(1, 2),
|
||||
PreRunE: handlerIDRequired,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
url, _ := cmd.Flags().GetString("url")
|
||||
handler, _ := cmd.Flags().GetString("handler")
|
||||
fmt.Println("niano: ", url, handler)
|
||||
},
|
||||
}
|
||||
|
||||
func init() {
|
||||
SetCmd.Flags().String("url", getEnv("KAPOW_URL", "http://localhost:8082"), "Kapow! data interface URL")
|
||||
SetCmd.Flags().String("handler", getEnv("KAPOW_HANDLER_ID", ""), "Kapow! handler id")
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func getEnv(key, fallback string) string {
|
||||
value, exists := os.LookupEnv(key)
|
||||
if !exists {
|
||||
return fallback
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
func handlerIDRequired(cmd *cobra.Command, args []string) error {
|
||||
handler, _ := cmd.Flags().GetString("handler")
|
||||
if handler == "" {
|
||||
return errors.New("--handler or KAPOW_HANDLER_ID is mandatory")
|
||||
}
|
||||
return nil
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user