diff --git a/cmd/ctrlc/root/api/get/deployments/deployments.go b/cmd/ctrlc/root/api/get/deployments/deployments.go new file mode 100644 index 0000000..9a4b07c --- /dev/null +++ b/cmd/ctrlc/root/api/get/deployments/deployments.go @@ -0,0 +1,55 @@ +package deployments + +import ( + "fmt" + + "github.com/ctrlplanedev/cli/internal/api" + "github.com/ctrlplanedev/cli/internal/cliutil" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +func NewDeploymentsCmd() *cobra.Command { + var limit int + var offset int + + cmd := &cobra.Command{ + Use: "deployments", + Short: "List deployments", + Long: `Commands for getting deployments.`, + RunE: func(cmd *cobra.Command, args []string) error { + apiURL := viper.GetString("url") + apiKey := viper.GetString("api-key") + workspace := viper.GetString("workspace") + + client, err := api.NewAPIKeyClientWithResponses(apiURL, apiKey) + if err != nil { + return fmt.Errorf("failed to create API client: %w", err) + } + + workspaceID := client.GetWorkspaceID(cmd.Context(), workspace) + + params := &api.ListDeploymentsParams{} + if limit > 0 { + params.Limit = &limit + } + if offset > 0 { + params.Offset = &offset + } + resp, err := client.ListDeployments(cmd.Context(), workspaceID.String(), params) + if err != nil { + + return fmt.Errorf("failed to get deployments: %w", err) + } + + return cliutil.HandleResponseOutput(cmd, resp) + }, + } + + cmd.Flags().IntVarP(&limit, "limit", "l", 50, "Limit the number of results") + cmd.Flags().IntVarP(&offset, "offset", "o", 0, "Offset the results") + + cmd.MarkFlagRequired("workspace") + + return cmd +} diff --git a/cmd/ctrlc/root/api/get/environments/environments.go b/cmd/ctrlc/root/api/get/environments/environments.go new file mode 100644 index 0000000..5276f07 --- /dev/null +++ b/cmd/ctrlc/root/api/get/environments/environments.go @@ -0,0 +1,55 @@ +package environments + +import ( + "fmt" + + "github.com/ctrlplanedev/cli/internal/api" + "github.com/ctrlplanedev/cli/internal/cliutil" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +func NewEnvironmentsCmd() *cobra.Command { + var limit int + var offset int + + cmd := &cobra.Command{ + Use: "environments", + Short: "List environments", + Long: `Commands for getting environments.`, + RunE: func(cmd *cobra.Command, args []string) error { + apiURL := viper.GetString("url") + apiKey := viper.GetString("api-key") + workspace := viper.GetString("workspace") + + client, err := api.NewAPIKeyClientWithResponses(apiURL, apiKey) + if err != nil { + return fmt.Errorf("failed to create API client: %w", err) + } + + workspaceID := client.GetWorkspaceID(cmd.Context(), workspace) + + params := &api.ListEnvironmentsParams{} + if limit > 0 { + params.Limit = &limit + } + if offset > 0 { + params.Offset = &offset + } + resp, err := client.ListEnvironments(cmd.Context(), workspaceID.String(), params) + if err != nil { + + return fmt.Errorf("failed to get environments: %w", err) + } + + return cliutil.HandleResponseOutput(cmd, resp) + }, + } + + cmd.Flags().IntVarP(&limit, "limit", "l", 50, "Limit the number of results") + cmd.Flags().IntVarP(&offset, "offset", "o", 0, "Offset the results") + + cmd.MarkFlagRequired("workspace") + + return cmd +} diff --git a/cmd/ctrlc/root/api/get/get.go b/cmd/ctrlc/root/api/get/get.go index d22be74..9d0044c 100644 --- a/cmd/ctrlc/root/api/get/get.go +++ b/cmd/ctrlc/root/api/get/get.go @@ -1,7 +1,10 @@ package get import ( + "github.com/ctrlplanedev/cli/cmd/ctrlc/root/api/get/deployments" + "github.com/ctrlplanedev/cli/cmd/ctrlc/root/api/get/environments" "github.com/ctrlplanedev/cli/cmd/ctrlc/root/api/get/resources" + "github.com/ctrlplanedev/cli/cmd/ctrlc/root/api/get/systems" "github.com/spf13/cobra" ) @@ -16,6 +19,9 @@ func NewGetCmd() *cobra.Command { } cmd.AddCommand(resources.NewResourcesCmd()) + cmd.AddCommand(deployments.NewDeploymentsCmd()) + cmd.AddCommand(systems.NewSystemsCmd()) + cmd.AddCommand(environments.NewEnvironmentsCmd()) return cmd } diff --git a/cmd/ctrlc/root/api/get/systems/systems.go b/cmd/ctrlc/root/api/get/systems/systems.go new file mode 100644 index 0000000..8bb923d --- /dev/null +++ b/cmd/ctrlc/root/api/get/systems/systems.go @@ -0,0 +1,55 @@ +package systems + +import ( + "fmt" + + "github.com/ctrlplanedev/cli/internal/api" + "github.com/ctrlplanedev/cli/internal/cliutil" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +func NewSystemsCmd() *cobra.Command { + var limit int + var offset int + + cmd := &cobra.Command{ + Use: "systems", + Short: "List systems", + Long: `Commands for getting systems.`, + RunE: func(cmd *cobra.Command, args []string) error { + apiURL := viper.GetString("url") + apiKey := viper.GetString("api-key") + workspace := viper.GetString("workspace") + + client, err := api.NewAPIKeyClientWithResponses(apiURL, apiKey) + if err != nil { + return fmt.Errorf("failed to create API client: %w", err) + } + + workspaceID := client.GetWorkspaceID(cmd.Context(), workspace) + + params := &api.ListSystemsParams{} + if limit > 0 { + params.Limit = &limit + } + if offset > 0 { + params.Offset = &offset + } + resp, err := client.ListSystems(cmd.Context(), workspaceID.String(), params) + if err != nil { + + return fmt.Errorf("failed to get systems: %w", err) + } + + return cliutil.HandleResponseOutput(cmd, resp) + }, + } + + cmd.Flags().IntVarP(&limit, "limit", "l", 50, "Limit the number of results") + cmd.Flags().IntVarP(&offset, "offset", "o", 0, "Offset the results") + + cmd.MarkFlagRequired("workspace") + + return cmd +}