diff options
| author | Song Li <45057405+lliissoonngg@users.noreply.github.com> | 2024-02-05 20:36:18 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-06 01:36:18 +0000 |
| commit | 4d24b9d1eb9b9020107c083a55ffa2de97740d22 (patch) | |
| tree | 323423d05216a8facccee3b245b8eba7fc5cb0a3 /internal | |
| parent | 24879386331ca4e58efcfa47736b850404c36f7a (diff) | |
Add --exclude-processing option (#1963)
* add --exclude-processing option
* update documentation
* add tests and address some PR comments
* fix linting errors
* TODO comment
---------
Co-authored-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/cmd/config.go | 5 | ||||
| -rw-r--r-- | internal/cmd/main.go | 1 | ||||
| -rw-r--r-- | internal/config/configfile.go | 12 | ||||
| -rw-r--r-- | internal/tests/integration/gomplateignore_test.go | 31 |
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) +} |
