summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2021-03-31 08:57:55 -0400
committerDave Henderson <dhenderson@gmail.com>2021-03-31 08:57:55 -0400
commit9b66eb2dc1cc219396b9e0e0a6771e343e7b80b5 (patch)
tree9f7e08c856a09cc6a66c63d49b667c1cc5cd0519 /internal
parent0a6e459c588d2505fc872e80c70ebbefd57d5247 (diff)
move NormalizeFileMode to iohelpers package
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal')
-rw-r--r--internal/config/configfile.go5
-rw-r--r--internal/config/configfile_test.go7
-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.md17
-rw-r--r--internal/iohelpers/template_process_flow.md51
-rw-r--r--internal/tests/integration/basic_test.go11
-rw-r--r--internal/tests/integration/inputdir_test.go12
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)