From c8fc9a36594a62d0ea335d6785914925c8d9c00c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 3 May 2017 13:05:43 +0200 Subject: Checklist --- chksum/chksum.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'chksum') diff --git a/chksum/chksum.go b/chksum/chksum.go index 0931567..8a5f9d3 100644 --- a/chksum/chksum.go +++ b/chksum/chksum.go @@ -28,6 +28,8 @@ type Checksum struct { Hash hash.Hash } +type Checklist []Checksum + var hashes = map[string]func() hash.Hash{ "SHA512": sha512.New, "SHA256": sha256.New, @@ -35,18 +37,17 @@ var hashes = map[string]func() hash.Hash{ "MD5": md5.New, } -func ParseFile(fname string) ([]Checksum, error) { +func ParseFile(fname string) (Checklist, error) { fd, err := os.Open(fname) if err != nil { return nil, err } defer fd.Close() - var checklist []Checksum + var checklist Checklist re := regexp.MustCompile(`(\w+) \(([^)]+)\) = (\w+)`) scanner := bufio.NewScanner(fd) for scanner.Scan() { - //var cs Checksum r := re.FindStringSubmatch(scanner.Text()) if len(r) != 4 { return nil, errors.New("invalid content") @@ -82,3 +83,12 @@ func (c Checksum) Check() error { } return nil } + +func (c Checklist) Check() error { + for _, cs := range c { + if err := cs.Check(); err != nil { + return err + } + } + return nil +} -- cgit v1.2.3