This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 165fa3aa86075bcb59d44878dbe66d1ca25c8b91
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Tue Jun 1 16:23:26 2021 +0200

    feat(cmd/run): modeline resource support
    
    Ref #2003
---
 docs/modules/ROOT/pages/cli/modeline.adoc          |  4 +-
 ....groovy => modeline-config-secret-route.groovy} |  2 +-
 ....groovy => modeline-resource-file-route.groovy} | 13 ++--
 pkg/cmd/modeline.go                                |  2 +-
 pkg/cmd/modeline_test.go                           | 73 ++++++++++++++++++++++
 pkg/cmd/run.go                                     |  4 +-
 6 files changed, 83 insertions(+), 15 deletions(-)

diff --git a/docs/modules/ROOT/pages/cli/modeline.adoc 
b/docs/modules/ROOT/pages/cli/modeline.adoc
index f4dd436..01437c2 100644
--- a/docs/modules/ROOT/pages/cli/modeline.adoc
+++ b/docs/modules/ROOT/pages/cli/modeline.adoc
@@ -70,7 +70,7 @@ The following is a partial list of useful options:
 |Add a build time property or properties file (syntax: 
_[my-key=my-value\|file:/path/to/my-conf.properties]_
 
 |config
-|Add runtime configuration from a Configmap, a Secret or a file (syntax: 
_[configmap\|secret\|file]:name)_
+|Add a runtime configuration from a Configmap, a Secret or a file (syntax: 
_[configmap\|secret\|file]:name)_
 
 |dependency
 |An external library that should be included, e.g. for Maven dependencies 
`dependency=mvn:org.my:app:1.0`
@@ -94,7 +94,7 @@ The following is a partial list of useful options:
 |Add a runtime property or properties file (syntax: 
_[my-key=my-value\|file:/path/to/my-conf.properties]_)
 
 |resource
-|Add a resource
+|Add a runtime resource from a Configmap, a Secret or a file (syntax: 
_[configmap\|secret\|file]:name)_
 
 |trait
 |Configure a trait, e.g. `trait=service.enabled=false`
diff --git a/examples/modeline/modeline-secret-route.groovy 
b/examples/modeline/modeline-config-secret-route.groovy
similarity index 95%
copy from examples/modeline/modeline-secret-route.groovy
copy to examples/modeline/modeline-config-secret-route.groovy
index 0107b28..e6b9dab 100644
--- a/examples/modeline/modeline-secret-route.groovy
+++ b/examples/modeline/modeline-config-secret-route.groovy
@@ -20,7 +20,7 @@
 // To run this integrations use:
 //
 // kubectl create secret generic my-sec --from-literal=my-secret-key="very top 
secret"
-// kamel run secret-route.groovy --dev
+// kamel run modeline-config-secret-route.groovy --dev
 //
 
 // camel-k: config=secret:my-sec
diff --git a/examples/modeline/modeline-secret-route.groovy 
b/examples/modeline/modeline-resource-file-route.groovy
similarity index 73%
rename from examples/modeline/modeline-secret-route.groovy
rename to examples/modeline/modeline-resource-file-route.groovy
index 0107b28..e02777a 100644
--- a/examples/modeline/modeline-secret-route.groovy
+++ b/examples/modeline/modeline-resource-file-route.groovy
@@ -18,15 +18,10 @@
 
 //
 // To run this integrations use:
-//
-// kubectl create secret generic my-sec --from-literal=my-secret-key="very top 
secret"
-// kamel run secret-route.groovy --dev
+// kamel run modeline-resource-file-route.groovy --dev
 //
 
-// camel-k: config=secret:my-sec
+// camel-k: resource=file:resources-data.txt
 
-from('timer:secret')
-    .routeId('secret')
-    .setBody()
-        .simple("resource:classpath:my-secret-key")
-    .log('secret content is: ${body}')
+from('file:/etc/camel/data/resources/?fileName=resources-data.txt&noop=true&idempotent=false')
+    .log('resource file content is: ${body}')
diff --git a/pkg/cmd/modeline.go b/pkg/cmd/modeline.go
index 0f540f8..cae66f6 100644
--- a/pkg/cmd/modeline.go
+++ b/pkg/cmd/modeline.go
@@ -52,7 +52,6 @@ var (
 
        // file options must be considered relative to the source files they 
belong to
        fileOptions = map[string]bool{
-               "resource":      true,
                "kube-config":   true,
                "open-api":      true,
                "property-file": true,
@@ -60,6 +59,7 @@ var (
 
        // file format options are those options that admit multiple values, 
not only files (ie, key=value|configmap|secret|file syntax)
        fileFormatOptions = map[string]bool{
+               "resource":       true,
                "config":         true,
                "property":       true,
                "build-property": true,
diff --git a/pkg/cmd/modeline_test.go b/pkg/cmd/modeline_test.go
index 6592939..8b82d49 100644
--- a/pkg/cmd/modeline_test.go
+++ b/pkg/cmd/modeline_test.go
@@ -277,6 +277,79 @@ func TestModelineRunConfigFile(t *testing.T) {
        assert.Equal(t, []string{"run", fileName, 
fmt.Sprintf("--config=file:%s", propFileName)}, flags)
 }
 
+func TestModelineRunResourceConfigmap(t *testing.T) {
+       dir, err := ioutil.TempDir("", "camel-k-test-")
+       assert.NoError(t, err)
+       defer os.RemoveAll(dir)
+
+       subDir := path.Join(dir, "sub")
+       err = os.Mkdir(subDir, 0777)
+       assert.NoError(t, err)
+
+       file := `
+               // camel-k: resource=configmap:my-cm
+       `
+       fileName := path.Join(subDir, "simple.groovy")
+       err = ioutil.WriteFile(fileName, []byte(file), 0777)
+       assert.NoError(t, err)
+
+       cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), 
[]string{"kamel", "run", fileName})
+       assert.NoError(t, err)
+       assert.NotNil(t, cmd)
+       assert.Equal(t, []string{"run", fileName, 
"--resource=configmap:my-cm"}, flags)
+}
+
+func TestModelineRunResourceSecret(t *testing.T) {
+       dir, err := ioutil.TempDir("", "camel-k-test-")
+       assert.NoError(t, err)
+       defer os.RemoveAll(dir)
+
+       subDir := path.Join(dir, "sub")
+       err = os.Mkdir(subDir, 0777)
+       assert.NoError(t, err)
+
+       file := `
+               // camel-k: resource=secret:my-secret
+       `
+       fileName := path.Join(subDir, "simple.groovy")
+       err = ioutil.WriteFile(fileName, []byte(file), 0777)
+       assert.NoError(t, err)
+
+       cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), 
[]string{"kamel", "run", fileName})
+       assert.NoError(t, err)
+       assert.NotNil(t, cmd)
+       assert.Equal(t, []string{"run", fileName, 
"--resource=secret:my-secret"}, flags)
+}
+
+func TestModelineRunResourceFile(t *testing.T) {
+       dir, err := ioutil.TempDir("", "camel-k-test-")
+       assert.NoError(t, err)
+       defer os.RemoveAll(dir)
+
+       subDir := path.Join(dir, "sub")
+       err = os.Mkdir(subDir, 0777)
+       assert.NoError(t, err)
+
+       file := `
+               // camel-k: resource=file:application.properties
+       `
+       fileName := path.Join(subDir, "simple.groovy")
+       err = ioutil.WriteFile(fileName, []byte(file), 0777)
+       assert.NoError(t, err)
+
+       propFile := `
+               a=b
+       `
+       propFileName := path.Join(subDir, "application.properties")
+       err = ioutil.WriteFile(propFileName, []byte(propFile), 0777)
+       assert.NoError(t, err)
+
+       cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), 
[]string{"kamel", "run", fileName})
+       assert.NoError(t, err)
+       assert.NotNil(t, cmd)
+       assert.Equal(t, []string{"run", fileName, 
fmt.Sprintf("--resource=file:%s", propFileName)}, flags)
+}
+
 func TestModelineInspectSimple(t *testing.T) {
        dir, err := ioutil.TempDir("", "camel-k-test-")
        assert.NoError(t, err)
diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index 9d8a0fe..ad0485d 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -81,8 +81,8 @@ func newCmdRun(rootCmdOptions *RootCmdOptions) 
(*cobra.Command, *runCmdOptions)
        cmd.Flags().StringP("kit", "k", "", "The kit used to run the 
integration")
        cmd.Flags().StringArrayP("property", "p", nil, "Add a runtime property 
or properties file (syntax: 
[my-key=my-value|file:/path/to/my-conf.properties])")
        cmd.Flags().StringArray("build-property", nil, "Add a build time 
property or properties file (syntax: 
[my-key=my-value|file:/path/to/my-conf.properties])")
-       cmd.Flags().StringArray("config", nil, "Add runtime configuration from 
a Configmap, a Secret or a file (syntax: [configmap|secret|file]:name)")
-       cmd.Flags().StringArray("resource", nil, "Add runtime resource from a 
Configmap, a Secret or a file (syntax: [configmap|secret|file]:name)")
+       cmd.Flags().StringArray("config", nil, "Add a runtime configuration 
from a Configmap, a Secret or a file (syntax: [configmap|secret|file]:name)")
+       cmd.Flags().StringArray("resource", nil, "Add a runtime resource from a 
Configmap, a Secret or a file (syntax: [configmap|secret|file]:name)")
        cmd.Flags().StringArray("configmap", nil, "[Deprecated] Add a 
ConfigMap")
        cmd.Flags().StringArray("secret", nil, "[Deprecated] Add a Secret")
        cmd.Flags().StringArray("maven-repository", nil, "Add a maven 
repository")

Reply via email to