Rework directory structure

Co-authored-by: Héctor Hurtado <hector.hurtado@bbva.com>
This commit is contained in:
pancho horrillo
2019-10-03 12:05:53 +02:00
parent 8b7d1d69e7
commit 23128026c7
12 changed files with 12 additions and 12 deletions
+34
View File
@@ -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")
}
+52
View File
@@ -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)
}
+38
View File
@@ -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
}
+26
View File
@@ -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")
}
+25
View File
@@ -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
}