Skip to content

Commit

Permalink
chore(cli): create 'kong' subcommand for network commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Tieske committed Oct 16, 2023
1 parent 1b8317a commit 477aa82
Show file tree
Hide file tree
Showing 14 changed files with 679 additions and 481 deletions.
179 changes: 0 additions & 179 deletions cmd/dump.go

This file was deleted.

10 changes: 5 additions & 5 deletions cmd/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import (
"github.com/spf13/cobra"
)

func newAddFileCmd() *cobra.Command {
addFileCmd := &cobra.Command{
func newFileSubCmd() *cobra.Command {
fileCmd := &cobra.Command{
Use: "file [sub-command]...",
Short: "Subcommand to host the decK file manipulation operations",
Long: `Subcommand to host the decK file manipulation operations.`,
Short: "Subcommand to host the decK file operations",
Long: `Subcommand to host the decK file operations.`,
}

return addFileCmd
return fileCmd
}
18 changes: 15 additions & 3 deletions cmd/file_convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,21 @@ func executeConvert(_ *cobra.Command, _ []string) error {
}

// newConvertCmd represents the convert command
func newConvertCmd() *cobra.Command {
func newConvertCmd(deprecated bool) *cobra.Command {
short := "Convert files from one format into another format"
execute := executeConvert
fileInDefault := "-"
fileOutDefault := "-"
if deprecated {
short = "[deprecated] use 'file convert' instead"
execute = func(cmd *cobra.Command, args []string) error {
cprint.UpdatePrintf("Warning: 'deck convert' is DEPRECATED and will be removed in a future version. " +
"Use 'deck file convert' instead.\n")
return executeConvert(cmd, args)
}
fileInDefault = ""
fileOutDefault = "kong.yaml"
}

convertCmd := &cobra.Command{
Use: "convert",
Expand All @@ -101,9 +113,9 @@ can be converted into a 'kong-gateway-3.x' configuration file.`,
fmt.Sprintf("format of the source file, allowed formats: %v", sourceFormats))
convertCmd.Flags().StringVar(&convertCmdDestinationFormat, "to", "",
fmt.Sprintf("desired format of the output, allowed formats: %v", destinationFormats))
convertCmd.Flags().StringVar(&convertCmdInputFile, "input-file", "",
convertCmd.Flags().StringVar(&convertCmdInputFile, "input-file", fileInDefault,
"configuration file to be converted. Use `-` to read from stdin.")
convertCmd.Flags().StringVar(&convertCmdOutputFile, "output-file", "kong.yaml",
convertCmd.Flags().StringVarP(&convertCmdOutputFile, "output-file", "o", fileOutDefault,
"file to write configuration to after conversion. Use `-` to write to stdout.")
convertCmd.Flags().BoolVar(&convertCmdAssumeYes, "yes",
false, "assume `yes` to prompts and run non-interactively.")
Expand Down
15 changes: 15 additions & 0 deletions cmd/gateway.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package cmd

import (
"github.com/spf13/cobra"
)

func newKongSubCmd() *cobra.Command {
kongSubCmd := &cobra.Command{
Use: "gateway [sub-command]...",
Short: "Subcommand to host the decK network operations",
Long: `Subcommand to host the decK network operations.`,
}

return kongSubCmd
}
69 changes: 49 additions & 20 deletions cmd/diff.go → cmd/gateway_diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"fmt"

"github.com/kong/deck/cprint"
"github.com/spf13/cobra"
)

Expand All @@ -14,35 +15,63 @@ var (
diffJSONOutput bool
)

func executeDiff(cmd *cobra.Command, _ []string) error {
return syncMain(cmd.Context(), diffCmdKongStateFile, true,
diffCmdParallelism, 0, diffWorkspace, diffJSONOutput)
}

// newDiffCmd represents the diff command
func newDiffCmd() *cobra.Command {
diffCmd := &cobra.Command{
Use: "diff",
Short: "Diff the current entities in Kong with the one on disks",
Long: `The diff command is similar to a dry run of the 'decK sync' command.
func newDiffCmd(deprecated bool) *cobra.Command {
use := "diff [flags] [kong-state-files...]"
short := "Diff the current entities in Kong with the one on disks"
execute := executeDiff
argsValidator := cobra.MinimumNArgs(0)
preRun := func(cmd *cobra.Command, args []string) error {
diffCmdKongStateFile = args
if len(diffCmdKongStateFile) == 0 {
diffCmdKongStateFile = []string{"-"}
}
return preRunSilenceEventsFlag()
}

It loads entities from Kong and performs a diff with
the entities in local files. This allows you to see the entities
that will be created, updated, or deleted.
`,
Args: validateNoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
return syncMain(cmd.Context(), diffCmdKongStateFile, true,
diffCmdParallelism, 0, diffWorkspace, diffJSONOutput)
},
PreRunE: func(cmd *cobra.Command, args []string) error {
if deprecated {
use = "diff"
short = "[deprecated] use 'gateway diff' instead"
execute = func(cmd *cobra.Command, args []string) error {
cprint.UpdatePrintf("Warning: 'deck diff' is DEPRECATED and will be removed in a future version. " +
"Use 'deck gateway diff' instead.\n")
return executeDiff(cmd, args)
}
argsValidator = validateNoArgs
preRun = func(cmd *cobra.Command, args []string) error {
if len(diffCmdKongStateFile) == 0 {
return fmt.Errorf("a state file with Kong's configuration " +
"must be specified using `-s`/`--state` flag")
}
return preRunSilenceEventsFlag()
},
}
}

diffCmd.Flags().StringSliceVarP(&diffCmdKongStateFile,
"state", "s", []string{"kong.yaml"}, "file(s) containing Kong's configuration.\n"+
"This flag can be specified multiple times for multiple files.\n"+
"Use `-` to read from stdin.")
diffCmd := &cobra.Command{
Use: use,
Short: short,
Long: `The diff command is similar to a dry run of the 'decK kong sync' command.
It loads entities from Kong and performs a diff with
the entities in local files. This allows you to see the entities
that will be created, updated, or deleted.
`,
Args: argsValidator,
RunE: execute,
PreRunE: preRun,
}

if deprecated {
diffCmd.Flags().StringSliceVarP(&diffCmdKongStateFile,
"state", "s", []string{"kong.yaml"}, "file(s) containing Kong's configuration.\n"+
"This flag can be specified multiple times for multiple files.\n"+
"Use `-` to read from stdin.")
}
diffCmd.Flags().StringVarP(&diffWorkspace, "workspace", "w",
"", "Diff configuration with a specific workspace "+
"(Kong Enterprise only).\n"+
Expand Down
Loading

0 comments on commit 477aa82

Please sign in to comment.