diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2021-03-31 08:57:55 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2021-03-31 08:57:55 -0400 |
| commit | 9b66eb2dc1cc219396b9e0e0a6771e343e7b80b5 (patch) | |
| tree | 9f7e08c856a09cc6a66c63d49b667c1cc5cd0519 /internal | |
| parent | 0a6e459c588d2505fc872e80c70ebbefd57d5247 (diff) | |
move NormalizeFileMode to iohelpers package
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/config/configfile.go | 5 | ||||
| -rw-r--r-- | internal/config/configfile_test.go | 7 | ||||
| -rw-r--r-- | internal/iohelpers/filemode.go (renamed from internal/config/filemode.go) | 2 | ||||
| -rw-r--r-- | internal/iohelpers/filemode_test.go (renamed from internal/config/filemode_test.go) | 2 | ||||
| -rw-r--r-- | internal/iohelpers/skipsame_flow.md | 17 | ||||
| -rw-r--r-- | internal/iohelpers/template_process_flow.md | 51 | ||||
| -rw-r--r-- | internal/tests/integration/basic_test.go | 11 | ||||
| -rw-r--r-- | internal/tests/integration/inputdir_test.go | 12 |
8 files changed, 88 insertions, 19 deletions
diff --git a/internal/config/configfile.go b/internal/config/configfile.go index 351dec7b..ac6b61b9 100644 --- a/internal/config/configfile.go +++ b/internal/config/configfile.go @@ -14,6 +14,7 @@ import ( "strings" "time" + "github.com/hairyhenderson/gomplate/v3/internal/iohelpers" "github.com/pkg/errors" "gopkg.in/yaml.v3" ) @@ -477,9 +478,9 @@ func (c *Config) GetMode() (os.FileMode, bool, error) { if err != nil { return 0, false, err } - mode := NormalizeFileMode(os.FileMode(m)) + mode := iohelpers.NormalizeFileMode(os.FileMode(m)) if mode == 0 && c.Input != "" { - mode = NormalizeFileMode(0644) + mode = iohelpers.NormalizeFileMode(0644) } return mode, modeOverride, nil } diff --git a/internal/config/configfile_test.go b/internal/config/configfile_test.go index 4b7b95d2..2c65467a 100644 --- a/internal/config/configfile_test.go +++ b/internal/config/configfile_test.go @@ -12,6 +12,7 @@ import ( "testing" "time" + "github.com/hairyhenderson/gomplate/v3/internal/iohelpers" "github.com/stretchr/testify/assert" ) @@ -541,19 +542,19 @@ func TestGetMode(t *testing.T) { c := &Config{} m, o, err := c.GetMode() assert.NoError(t, err) - assert.Equal(t, NormalizeFileMode(0), m) + assert.Equal(t, iohelpers.NormalizeFileMode(0), m) assert.False(t, o) c = &Config{OutMode: "755"} m, o, err = c.GetMode() assert.NoError(t, err) - assert.Equal(t, NormalizeFileMode(0o755), m) + assert.Equal(t, iohelpers.NormalizeFileMode(0o755), m) assert.True(t, o) c = &Config{OutMode: "0755"} m, o, err = c.GetMode() assert.NoError(t, err) - assert.Equal(t, NormalizeFileMode(0o755), m) + assert.Equal(t, iohelpers.NormalizeFileMode(0o755), m) assert.True(t, o) c = &Config{OutMode: "foo"} diff --git a/internal/config/filemode.go b/internal/iohelpers/filemode.go index aa6887b7..35a3c142 100644 --- a/internal/config/filemode.go +++ b/internal/iohelpers/filemode.go @@ -1,4 +1,4 @@ -package config +package iohelpers import ( "os" diff --git a/internal/config/filemode_test.go b/internal/iohelpers/filemode_test.go index 01378ce8..2ebb0ed7 100644 --- a/internal/config/filemode_test.go +++ b/internal/iohelpers/filemode_test.go @@ -1,4 +1,4 @@ -package config +package iohelpers import ( "fmt" diff --git a/internal/iohelpers/skipsame_flow.md b/internal/iohelpers/skipsame_flow.md new file mode 100644 index 00000000..53a1fdf9 --- /dev/null +++ b/internal/iohelpers/skipsame_flow.md @@ -0,0 +1,17 @@ +```mermaid +graph TD + A[write] --> B{diff ==} + B -->|true| C{File open yet?} + B -->|false| BB + DF[Write to file] + + C -->|true| DF + C -->|false| E[Open File] + E --> F[Flush buffer to file] + F --> DF + + BB[Read Output] --> BC{bytes differ?} + BC -->|true| BD[diff = true] + BD -->|false| DB[Write to Buffer] + BD --> C +``` diff --git a/internal/iohelpers/template_process_flow.md b/internal/iohelpers/template_process_flow.md new file mode 100644 index 00000000..51c567c1 --- /dev/null +++ b/internal/iohelpers/template_process_flow.md @@ -0,0 +1,51 @@ + +1. "gather templates" - gather and prepare inputs and outputs for rendering + - + + + +```mermaid +flowchart TB + S([Begin]) --> A + A[[gather templates]] --> B + B{input type?} -->|dir| BA + B -->|files| BB + B -->|string| BC + + D([End]) + + C[[process templates]] --> CA + CA([start iterating templates]) --> CAA + + CAA{next template?} -->|yes| CAB + CAA -->|no| CAD + + CAD([done iterating templates]) --> D + + CAB[[load template contents]] --> CABA + CABA[open/read input] --> CAC + + CAC[[add target]] --> CACA + CACA[create/open output file] --> CAA + + BA[[walk dir]] --> BAA + BAA[find all matching files in dir] --> BAB + BAB([start iterating files]) --> BABA + BABA{next file?} -->|yes| BABAA + BABA -->|no| BAC + BAC([done iterating files]) --> C + + BABAA[name file] --> BABAB + BABAB[determine mode] --> BABAC + BABAC[ensure parent dirs exist] --> BABAD + BABAD[create template] --> BABA + + BB([start iterating files]) --> BBA + BBA{next file?} -->|yes| BBAA + BBA -->|no| BBD + BBD([done iterating files]) --> C + + BBAA[create template from file] --> BBA + + BC[create template] --> C +``` diff --git a/internal/tests/integration/basic_test.go b/internal/tests/integration/basic_test.go index d1d4becb..e7cb7364 100644 --- a/internal/tests/integration/basic_test.go +++ b/internal/tests/integration/basic_test.go @@ -5,8 +5,7 @@ import ( "os" "testing" - "github.com/hairyhenderson/gomplate/v3/internal/config" - + "github.com/hairyhenderson/gomplate/v3/internal/iohelpers" "gotest.tools/v3/assert" "gotest.tools/v3/assert/cmp" "gotest.tools/v3/fs" @@ -83,7 +82,7 @@ func TestBasic_RoutesInputsToProperOutputs(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - m := config.NormalizeFileMode(v.mode) + m := iohelpers.NormalizeFileMode(v.mode) assert.Equal(t, m, info.Mode(), v.path) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) @@ -204,7 +203,7 @@ func TestBasic_RoutesInputsToProperOutputsWithChmod(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - assert.Equal(t, config.NormalizeFileMode(v.mode), info.Mode()) + assert.Equal(t, iohelpers.NormalizeFileMode(v.mode), info.Mode()) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) assert.Equal(t, v.content, string(content)) @@ -232,7 +231,7 @@ func TestBasic_OverridesOutputModeWithChmod(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - assert.Equal(t, config.NormalizeFileMode(v.mode), info.Mode()) + assert.Equal(t, iohelpers.NormalizeFileMode(v.mode), info.Mode()) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) assert.Equal(t, v.content, string(content)) @@ -252,7 +251,7 @@ func TestBasic_AppliesChmodBeforeWrite(t *testing.T) { info, err := os.Stat(out) assert.NilError(t, err) - assert.Equal(t, config.NormalizeFileMode(0644), info.Mode()) + assert.Equal(t, iohelpers.NormalizeFileMode(0644), info.Mode()) content, err := ioutil.ReadFile(out) assert.NilError(t, err) assert.Equal(t, "hi\n", string(content)) diff --git a/internal/tests/integration/inputdir_test.go b/internal/tests/integration/inputdir_test.go index 894c2b5d..dc0e7975 100644 --- a/internal/tests/integration/inputdir_test.go +++ b/internal/tests/integration/inputdir_test.go @@ -5,7 +5,7 @@ import ( "os" "testing" - "github.com/hairyhenderson/gomplate/v3/internal/config" + "github.com/hairyhenderson/gomplate/v3/internal/iohelpers" tassert "github.com/stretchr/testify/assert" "gotest.tools/v3/assert" "gotest.tools/v3/fs" @@ -68,7 +68,7 @@ func TestInputDir_InputDir(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - m := config.NormalizeFileMode(v.mode) + m := iohelpers.NormalizeFileMode(v.mode) assert.Equal(t, m, info.Mode(), v.path) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) @@ -107,7 +107,7 @@ func TestInputDir_InputDirWithModeOverride(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - m := config.NormalizeFileMode(v.mode) + m := iohelpers.NormalizeFileMode(v.mode) assert.Equal(t, m, info.Mode(), v.path) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) @@ -145,7 +145,7 @@ func TestInputDir_OutputMapInline(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - m := config.NormalizeFileMode(v.mode) + m := iohelpers.NormalizeFileMode(v.mode) assert.Equal(t, m, info.Mode(), v.path) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) @@ -185,7 +185,7 @@ func TestInputDir_OutputMapExternal(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - m := config.NormalizeFileMode(v.mode) + m := iohelpers.NormalizeFileMode(v.mode) assert.Equal(t, m, info.Mode(), v.path) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) @@ -259,7 +259,7 @@ func TestInputDir_InputDirCwd(t *testing.T) { for _, v := range testdata { info, err := os.Stat(v.path) assert.NilError(t, err) - m := config.NormalizeFileMode(v.mode) + m := iohelpers.NormalizeFileMode(v.mode) assert.Equal(t, m, info.Mode(), v.path) content, err := ioutil.ReadFile(v.path) assert.NilError(t, err) |
