summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/cmd/config.go5
-rw-r--r--internal/cmd/main.go1
-rw-r--r--internal/config/configfile.go12
-rw-r--r--internal/tests/integration/gomplateignore_test.go31
4 files changed, 45 insertions, 4 deletions
diff --git a/internal/cmd/config.go b/internal/cmd/config.go
index 7dc53911..d0c7bff4 100644
--- a/internal/cmd/config.go
+++ b/internal/cmd/config.go
@@ -114,6 +114,11 @@ func cobraConfig(cmd *cobra.Command, args []string) (cfg *config.Config, err err
if err != nil {
return nil, err
}
+ cfg.ExcludeProcessingGlob, err = getStringSlice(cmd, "exclude-processing")
+ if err != nil {
+ return nil, err
+ }
+
includesFlag, err := getStringSlice(cmd, "include")
if err != nil {
return nil, err
diff --git a/internal/cmd/main.go b/internal/cmd/main.go
index 7a3dea98..0c5596d6 100644
--- a/internal/cmd/main.go
+++ b/internal/cmd/main.go
@@ -139,6 +139,7 @@ func InitFlags(command *cobra.Command) {
command.Flags().String("input-dir", "", "`directory` which is examined recursively for templates (alternative to --file and --in)")
command.Flags().StringSlice("exclude", []string{}, "glob of files to not parse")
+ command.Flags().StringSlice("exclude-processing", []string{}, "glob of files to be copied without parsing")
command.Flags().StringSlice("include", []string{}, "glob of files to parse")
command.Flags().StringSliceP("out", "o", []string{"-"}, "output `file` name. Omit to use standard output.")
diff --git a/internal/config/configfile.go b/internal/config/configfile.go
index 1fcccc20..76fc5306 100644
--- a/internal/config/configfile.go
+++ b/internal/config/configfile.go
@@ -49,10 +49,11 @@ type Config struct {
// internal use only, can't be injected in YAML
PostExecInput io.Reader `yaml:"-"`
- Input string `yaml:"in,omitempty"`
- InputDir string `yaml:"inputDir,omitempty"`
- InputFiles []string `yaml:"inputFiles,omitempty,flow"`
- ExcludeGlob []string `yaml:"excludes,omitempty"`
+ Input string `yaml:"in,omitempty"`
+ InputDir string `yaml:"inputDir,omitempty"`
+ InputFiles []string `yaml:"inputFiles,omitempty,flow"`
+ ExcludeGlob []string `yaml:"excludes,omitempty"`
+ ExcludeProcessingGlob []string `yaml:"excludeProcessing,omitempty"`
OutputDir string `yaml:"outputDir,omitempty"`
OutputMap string `yaml:"outputMap,omitempty"`
@@ -246,6 +247,9 @@ func (c *Config) MergeFrom(o *Config) *Config {
if !isZero(o.ExcludeGlob) {
c.ExcludeGlob = o.ExcludeGlob
}
+ if !isZero(o.ExcludeProcessingGlob) {
+ c.ExcludeProcessingGlob = o.ExcludeProcessingGlob
+ }
if !isZero(o.OutMode) {
c.OutMode = o.OutMode
}
diff --git a/internal/tests/integration/gomplateignore_test.go b/internal/tests/integration/gomplateignore_test.go
index c3220d97..a49d41ed 100644
--- a/internal/tests/integration/gomplateignore_test.go
+++ b/internal/tests/integration/gomplateignore_test.go
@@ -279,3 +279,34 @@ func TestGomplateignore_WithIncludes(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, fromSlashes("rules/index.csv"), files)
}
+
+func TestGomplateignore_WithExcludeProcessing(t *testing.T) {
+ files, err := executeOpts(t, `.gomplateignore
+*.log
+`, []string{
+ "--exclude-processing", "crash.bin",
+ "--exclude-processing", "log/*.zip",
+ "--exclude", "rules/*.txt",
+ "--exclude", "sprites/*.ini",
+ },
+ tfs.WithDir("logs",
+ tfs.WithFile("archive.zip", ""),
+ tfs.WithFile("engine.log", ""),
+ tfs.WithFile("skills.log", "")),
+ tfs.WithDir("rules",
+ tfs.WithFile("index.csv", ""),
+ tfs.WithFile("fire.txt", ""),
+ tfs.WithFile("earth.txt", "")),
+ tfs.WithDir("sprites",
+ tfs.WithFile("human.csv", ""),
+ tfs.WithFile("demon.xml", ""),
+ tfs.WithFile("alien.ini", "")),
+ tfs.WithFile("manifest.json", ""),
+ tfs.WithFile("crash.bin", ""),
+ )
+
+ require.NoError(t, err)
+ assert.Equal(t, fromSlashes(
+ "crash.bin", "logs/archive.zip", "manifest.json", "rules/index.csv",
+ "sprites/demon.xml", "sprites/human.csv"), files)
+}