Skip to content

Commit

Permalink
Define + use template func 'DATE' instead of =DATE=
Browse files Browse the repository at this point in the history
  • Loading branch information
hknutzen committed Jan 25, 2024
1 parent 5c0eb1f commit bfb6347
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 67 deletions.
29 changes: 8 additions & 21 deletions go/test/tstdata/testdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import (
"bytes"
"errors"
"fmt"
"gopkg.in/yaml.v3"
"log"
"os"
"path"
"regexp"
"strconv"
"strings"
"text/template"
"time"

"gopkg.in/yaml.v3"
)

type Descr struct {
Expand Down Expand Up @@ -131,10 +131,6 @@ func (s *state) parse() ([]*Descr, error) {
if err := s.templDef(); err != nil {
return nil, err
}
case "DATE":
if err := s.dateDef(d); err != nil {
return nil, err
}

default:
if d == nil {
Expand Down Expand Up @@ -249,22 +245,13 @@ func (s *state) templDef() error {
return err
}
text = strings.TrimSuffix(text, "\n")
s.templates[name], err =
template.New(name).Option("missingkey=zero").Parse(text)
return err
}

func (s *state) dateDef(d *Descr) error {
line := s.getLine()
s.rest = s.rest[len(line):]
line = strings.TrimSpace(line)
days, err := strconv.Atoi(line)
if err != nil {
return err
fMap := template.FuncMap{
"DATE": func(offset int) string {
return time.Now().AddDate(0, 0, offset).Format("2006-01-02")
},
}
date := time.Now().AddDate(0, 0, days)
s.templates["DATE"], err =
template.New("DATE").Parse(date.Format("2006-01-02"))
s.templates[name], err =
template.New(name).Option("missingkey=zero").Funcs(fMap).Parse(text)
return err
}

Expand Down
63 changes: 17 additions & 46 deletions go/testdata/disabled.t
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@

############################################################
=TITLE=Service timed out for 365 days
=TEMPL=topo
network:n1 = { ip = 10.1.1.0/24; }
router:r1 = {
Expand All @@ -10,59 +7,48 @@ router:r1 = {
interface:n2 = { ip = 10.1.2.1; hardware = n2; }
}
network:n2 = { ip = 10.1.2.0/24; }
=END=
=TEMPL=disabled_service
service:s = {
disable_at = {{DATE .}};
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
=TEMPL=output
--r1
! n1_in
access-list n1_in extended deny ip any4 any4
access-group n1_in in interface n1
=DATE=-365
=END=
############################################################
=TITLE=Service timed out for 365 days
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service -365]]
=OUTPUT=
[[output]]
=END=
=TITLE=Service timed out for 30 days
=DATE=-30
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service -30]]
=OUTPUT=
[[output]]
=END=
=TITLE=Service timed out for 1 day
=DATE=-1
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service -1]]
=OUTPUT=
[[output]]
=END=
=TITLE=Service timed out today
=DATE=-0
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service -0]]
=OUTPUT=
[[output]]
=END=
Expand All @@ -75,40 +61,25 @@ service:s = {
access-list n1_in extended permit tcp 10.1.1.0 255.255.255.0 10.1.2.0 255.255.255.0 eq 80
access-list n1_in extended deny ip any4 any4
access-group n1_in in interface n1
=DATE=1
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service 1]]
=OUTPUT=
[[output]]
=END=
=TITLE=Service times out in 10 days
=DATE=10
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service 10]]
=OUTPUT=
[[output]]
=END=
=TITLE=Service times out in 1000 days
=DATE=1000
=INPUT=
[[topo]]
service:s = {
disable_at = [[DATE]];
user = network:n1;
permit src = user; dst = network:n2; prt = tcp 80;
}
[[disabled_service 1000]]
=OUTPUT=
[[output]]
=END=
Expand Down

0 comments on commit bfb6347

Please sign in to comment.