From 632c7143f114a09b7b4053fbd49b7206092cef9f Mon Sep 17 00:00:00 2001 From: Dan Jones Date: Mon, 11 Mar 2024 21:18:52 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20null=20formatter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/drop.go | 5 ++++- formatters/new.go | 1 + formatters/new_test.go | 2 +- formatters/null.go | 32 +++++++++++++++++++++++++++++ formatters/null_test.go | 45 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 formatters/null.go create mode 100644 formatters/null_test.go diff --git a/cmd/drop.go b/cmd/drop.go index 45491e9..d74917e 100644 --- a/cmd/drop.go +++ b/cmd/drop.go @@ -67,7 +67,10 @@ var dropCmd = &cobra.Command{ if err != nil { return err } - fmt.Fprintf(cmd.OutOrStdout(), "%s\n", out) + if len(out) > 0 && out[len(out)-1] != 10 { + out = append(out, 10) + } + fmt.Fprintf(cmd.OutOrStdout(), "%s", out) return nil }, diff --git a/formatters/new.go b/formatters/new.go index 3cfdb3c..bade49b 100644 --- a/formatters/new.go +++ b/formatters/new.go @@ -11,6 +11,7 @@ type formatMaker func(config.Formatters) (Formatter, error) var formatterMap = map[string]formatMaker{ "plain": newPlain, "json": newJson, + "zero": newNull, } func Preferred() (f Formatter, err error) { diff --git a/formatters/new_test.go b/formatters/new_test.go index c6d5e56..ed56be3 100644 --- a/formatters/new_test.go +++ b/formatters/new_test.go @@ -10,7 +10,7 @@ import ( ) func TestKinds(t *testing.T) { - assert.ElementsMatch(t, []string{"plain", "json"}, Kinds()) + assert.ElementsMatch(t, []string{"plain", "json", "zero"}, Kinds()) } func TestNewUnsupported(t *testing.T) { diff --git a/formatters/null.go b/formatters/null.go new file mode 100644 index 0000000..4dd1775 --- /dev/null +++ b/formatters/null.go @@ -0,0 +1,32 @@ +package formatters + +import ( + "codeberg.org/danjones000/my-log/config" + "codeberg.org/danjones000/my-log/models" +) + +func newNull(ff config.Formatters) (Formatter, error) { + return &Null{}, nil +} + +type Null struct{} + +func (n *Null) Name() string { + return "zero" +} + +func (n *Null) Meta(m models.Meta) (o []byte, err error) { + return +} + +func (n *Null) Entry(e models.Entry) (o []byte, err error) { + return +} + +func (n *Null) Log(l models.Log) (o []byte, err error) { + return +} + +func (n *Null) Logs(logs []models.Log) (out []byte, err error) { + return +} diff --git a/formatters/null_test.go b/formatters/null_test.go new file mode 100644 index 0000000..f7c26c1 --- /dev/null +++ b/formatters/null_test.go @@ -0,0 +1,45 @@ +package formatters + +import ( + "testing" + "time" + + "codeberg.org/danjones000/my-log/models" + "github.com/stretchr/testify/assert" +) + +var empty []byte + +func TestNullName(t *testing.T) { + f, err := New("zero") + assert.NoError(t, err) + assert.Equal(t, "zero", f.Name()) +} + +func TestNullMeta(t *testing.T) { + f, _ := New("zero") + o, err := f.Meta(models.Meta{"foo", 42}) + assert.NoError(t, err) + assert.Equal(t, empty, o) +} + +func TestNullEntry(t *testing.T) { + f, _ := New("zero") + o, err := f.Entry(models.Entry{"title", time.Now(), models.Metas{}}) + assert.NoError(t, err) + assert.Equal(t, empty, o) +} + +func TestNullLog(t *testing.T) { + f, _ := New("zero") + o, err := f.Log(models.Log{"jim", []models.Entry{{"title", time.Now(), models.Metas{}}}}) + assert.NoError(t, err) + assert.Equal(t, empty, o) +} + +func TestNullLogs(t *testing.T) { + f, _ := New("zero") + o, err := f.Logs([]models.Log{{"jim", []models.Entry{{"title", time.Now(), models.Metas{}}}}}) + assert.NoError(t, err) + assert.Equal(t, empty, o) +}