From e027120266a82dcd7d37ec1d0d14873fa70742fe Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Sat, 23 Jan 2016 21:16:13 -0500 Subject: =?UTF-8?q?=F0=9F=92=84=20slight=20refactoring=20&=20adding=20some?= =?UTF-8?q?=20vague=20unit=20tests...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dave Henderson --- context.go | 20 ++++++++++++++++++++ context_test.go | 21 +++++++++++++++++++++ main.go | 28 +++++++++------------------- 3 files changed, 50 insertions(+), 19 deletions(-) create mode 100644 context.go create mode 100644 context_test.go diff --git a/context.go b/context.go new file mode 100644 index 00000000..939883ea --- /dev/null +++ b/context.go @@ -0,0 +1,20 @@ +package main + +import ( + "os" + "strings" +) + +// Context for templates +type Context struct { +} + +// Env - Map environment variables for use in a template +func (c *Context) Env() map[string]string { + env := make(map[string]string) + for _, i := range os.Environ() { + sep := strings.Index(i, "=") + env[i[0:sep]] = i[sep+1:] + } + return env +} diff --git a/context_test.go b/context_test.go new file mode 100644 index 00000000..4e339533 --- /dev/null +++ b/context_test.go @@ -0,0 +1,21 @@ +package main + +import ( + "os" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEnvMapifiesEnvironment(t *testing.T) { + c := &Context{} + env := c.Env() + assert.Equal(t, env["USER"], os.Getenv("USER")) +} + +func TestEnvGetsUpdatedEnvironment(t *testing.T) { + c := &Context{} + assert.Empty(t, c.Env()["FOO"]) + os.Setenv("FOO", "foo") + assert.Equal(t, c.Env()["FOO"], "foo") +} diff --git a/main.go b/main.go index 32dcbf36..b59d3513 100644 --- a/main.go +++ b/main.go @@ -4,9 +4,9 @@ import ( "bufio" "flag" "fmt" + "io" "log" "os" - "strings" "text/template" ) @@ -23,31 +23,21 @@ func init() { } } -// Context for templates -type Context struct { -} - -// Env - Map environment variables for use in a template -func (c *Context) Env() map[string]string { - env := make(map[string]string) - for _, i := range os.Environ() { - sep := strings.Index(i, "=") - env[i[0:sep]] = i[sep+1:] - } - return env -} - -func main() { - s := bufio.NewScanner(os.Stdin) +func RunTemplate(in io.Reader, out io.Writer) { + s := bufio.NewScanner(in) for s.Scan() { tmpl, err := template.New("template").Option("missingkey=error").Parse(s.Text()) if err != nil { log.Fatalf("Line %q: %v\n", s.Text(), err) } - if err := tmpl.Execute(os.Stdout, &Context{}); err != nil { + if err := tmpl.Execute(out, &Context{}); err != nil { panic(err) } - os.Stdout.Write([]byte("\n")) + out.Write([]byte("\n")) } } + +func main() { + RunTemplate(os.Stdin, os.Stdout) +} -- cgit v1.2.3