You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ts...@apache.org on 2022/08/30 07:46:07 UTC
[camel-k] 01/02: feat(cli): Force arguments for the rebuild command
This is an automated email from the ASF dual-hosted git repository.
tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 1100a8e72e05e2f4069763e99cf15b3e7f950d40
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Fri Aug 19 11:43:03 2022 +0200
feat(cli): Force arguments for the rebuild command
---
pkg/cmd/rebuild.go | 31 ++++++++++++++++++++---
pkg/cmd/rebuild_test.go | 66 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 93 insertions(+), 4 deletions(-)
diff --git a/pkg/cmd/rebuild.go b/pkg/cmd/rebuild.go
index 7ea427923..bcdd3c96e 100644
--- a/pkg/cmd/rebuild.go
+++ b/pkg/cmd/rebuild.go
@@ -34,18 +34,41 @@ func newCmdRebuild(rootCmdOptions *RootCmdOptions) (*cobra.Command, *rebuildCmdO
RootCmdOptions: rootCmdOptions,
}
cmd := cobra.Command{
- Use: "rebuild [integration]",
+ Use: "rebuild [integration1] [integration2] ...",
Short: "Clear the state of integrations to rebuild them",
Long: `Clear the state of one or more integrations causing a rebuild.`,
PreRunE: decode(&options),
- RunE: options.rebuild,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ if err := options.validate(args); err != nil {
+ return err
+ }
+ if err := options.rebuild(cmd, args); err != nil {
+ fmt.Fprintln(cmd.ErrOrStderr(), err.Error())
+ }
+
+ return nil
+ },
}
+ cmd.Flags().Bool("all", false, "Rebuild all integrations")
+
return &cmd, &options
}
type rebuildCmdOptions struct {
*RootCmdOptions
+ RebuildAll bool `mapstructure:"all"`
+}
+
+func (o *rebuildCmdOptions) validate(args []string) error {
+ if o.RebuildAll && len(args) > 0 {
+ return errors.New("invalid combination: both all flag and named integrations are set")
+ }
+ if !o.RebuildAll && len(args) == 0 {
+ return errors.New("invalid combination: neither all flag nor named integrations are set")
+ }
+
+ return nil
}
func (o *rebuildCmdOptions) rebuild(cmd *cobra.Command, args []string) error {
@@ -55,11 +78,11 @@ func (o *rebuildCmdOptions) rebuild(cmd *cobra.Command, args []string) error {
}
var integrations []v1.Integration
- if len(args) == 0 {
+ if o.RebuildAll {
if integrations, err = o.listAllIntegrations(c); err != nil {
return err
}
- } else {
+ } else if len(args) > 0 {
if integrations, err = o.getIntegrations(c, args); err != nil {
return err
}
diff --git a/pkg/cmd/rebuild_test.go b/pkg/cmd/rebuild_test.go
new file mode 100644
index 000000000..e6e0c95a4
--- /dev/null
+++ b/pkg/cmd/rebuild_test.go
@@ -0,0 +1,66 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cmd
+
+import (
+ "testing"
+
+ "github.com/apache/camel-k/pkg/util/test"
+ "github.com/spf13/cobra"
+ "github.com/stretchr/testify/assert"
+)
+
+const cmdRebuild = "rebuild"
+
+// nolint: unparam
+func initializeRebuildCmdOptions(t *testing.T) (*rebuildCmdOptions, *cobra.Command, RootCmdOptions) {
+ t.Helper()
+
+ options, rootCmd := kamelTestPreAddCommandInit()
+ rebuildCmdOptions := addTestRebuildCmd(*options, rootCmd)
+ kamelTestPostAddCommandInit(t, rootCmd)
+
+ return rebuildCmdOptions, rootCmd, *options
+}
+
+func addTestRebuildCmd(options RootCmdOptions, rootCmd *cobra.Command) *rebuildCmdOptions {
+ // add a testing version of rebuild Command
+ rebuildCmd, rebuildOptions := newCmdRebuild(&options)
+ rebuildCmd.RunE = func(c *cobra.Command, args []string) error {
+ return nil
+ }
+ rebuildCmd.PostRunE = func(c *cobra.Command, args []string) error {
+ return nil
+ }
+ rebuildCmd.Args = test.ArbitraryArgs
+ rootCmd.AddCommand(rebuildCmd)
+ return rebuildOptions
+}
+
+func TestRebuildNonExistingFlag(t *testing.T) {
+ _, rootCmd, _ := initializeRebuildCmdOptions(t)
+ _, err := test.ExecuteCommand(rootCmd, cmdRebuild, "--nonExistingFlag")
+ assert.NotNil(t, err)
+}
+
+func TestRebuildAllFlag(t *testing.T) {
+ rebuildCmdOptions, rootCmd, _ := initializeRebuildCmdOptions(t)
+ _, err := test.ExecuteCommand(rootCmd, cmdRebuild, "--all")
+ assert.Nil(t, err)
+ assert.Equal(t, true, rebuildCmdOptions.RebuildAll)
+}