@@ -35,11 +35,11 @@ type Target struct {
3535 buildFunc func (logger * logging.Logger , target * Target ) error
3636 cleanFunc func (logger * logging.Logger , target * Target ) error
3737 // Hash function for virtual targets.
38- hashFunc * internal.MemoisedFunction [hasher ]
38+ hashFunc * internal.MemoisedFunction [Hasher ]
3939 // Hash stored in the DB.
40- storedHash hasher
40+ storedHash Hasher
4141 // Hash computed from the filesystem.
42- realHash hasher
42+ realHash Hasher
4343 chdir * parser.Ref
4444 synthetic bool
4545}
@@ -165,7 +165,7 @@ func (e *Engine) analyse(bitfile *parser.Bitfile) error {
165165
166166 case "hash" :
167167 target .hashPos = directive .Value .Pos
168- target .hashFunc = internal .Memoise (func () (hasher , error ) {
168+ target .hashFunc = internal .Memoise (func () (Hasher , error ) {
169169 command , err := e .evaluateString (directive .Value .Pos , directive .Value .Body , target , map [string ]bool {})
170170 if err != nil {
171171 return 0 , participle .Errorf (directive .Value .Pos , "hash command is invalid" )
@@ -176,8 +176,8 @@ func (e *Engine) analyse(bitfile *parser.Bitfile) error {
176176 if err != nil {
177177 return 0 , participle .Errorf (directive .Value .Pos , "failed to run hash command: %s" , err )
178178 }
179- hfh := newHasher ()
180- hfh .bytes (output )
179+ hfh := NewHasher ()
180+ hfh .Bytes (output )
181181 return hfh , nil
182182 })
183183
@@ -481,10 +481,10 @@ func (e *Engine) defaultBuildFunc(log *logging.Logger, target *Target) error {
481481}
482482
483483// A function used to compute a hash of an output.
484- type outputRefHasher func (target * Target , ref * parser.Ref ) (hasher , error )
484+ type outputRefHasher func (target * Target , ref * parser.Ref ) (Hasher , error )
485485
486- func (e * Engine ) recursivelyComputeHash (target * Target , refHasher outputRefHasher , seen map [string ]bool , forEach func (* Target , hasher )) (hasher , error ) {
487- h := newHasher ()
486+ func (e * Engine ) recursivelyComputeHash (target * Target , refHasher outputRefHasher , seen map [string ]bool , forEach func (* Target , Hasher )) (Hasher , error ) {
487+ h := NewHasher ()
488488 for _ , input := range target .inputs .Refs {
489489 if _ , ok := seen [input .Text ]; ok {
490490 continue
@@ -498,40 +498,40 @@ func (e *Engine) recursivelyComputeHash(target *Target, refHasher outputRefHashe
498498 if err != nil {
499499 return 0 , err
500500 }
501- h .update (subh )
501+ h .Update (subh )
502502 }
503503 for _ , output := range target .outputs .Refs {
504504 rh , err := refHasher (target , output )
505505 if err != nil {
506506 return 0 , participle .Wrapf (output .Pos , err , "hash failed" )
507507 }
508- h .update (rh )
508+ h .Update (rh )
509509 }
510510 forEach (target , h )
511511 return h , nil
512512}
513513
514514// Compute hash of target - inputs and outputs.
515- func (e * Engine ) computeHash (target * Target , refHasher outputRefHasher ) (hasher , error ) {
516- h := newHasher ()
515+ func (e * Engine ) computeHash (target * Target , refHasher outputRefHasher ) (Hasher , error ) {
516+ h := NewHasher ()
517517 for _ , input := range target .inputs .Refs {
518518 inputTarget , err := e .getTarget (input .Text )
519519 if err != nil {
520520 return 0 , err
521521 }
522- h .int (uint64 (inputTarget .storedHash ))
522+ h .Int (uint64 (inputTarget .storedHash ))
523523 }
524524 for _ , output := range target .outputs .Refs {
525525 rh , err := refHasher (target , output )
526526 if err != nil {
527527 return 0 , participle .Wrapf (output .Pos , err , "hash failed" )
528528 }
529- h .update (rh )
529+ h .Update (rh )
530530 }
531531 return h , nil
532532}
533533
534- func (e * Engine ) dbRefHasher (target * Target , ref * parser.Ref ) (hasher , error ) { //nolint:revive
534+ func (e * Engine ) dbRefHasher (target * Target , ref * parser.Ref ) (Hasher , error ) { //nolint:revive
535535 h , ok := e .db .Get (ref .Text )
536536 if ! ok {
537537 return 0 , nil
@@ -540,8 +540,8 @@ func (e *Engine) dbRefHasher(target *Target, ref *parser.Ref) (hasher, error) {
540540}
541541
542542// Hash real files.
543- func (e * Engine ) realRefHasher (target * Target , ref * parser.Ref ) (hasher , error ) {
544- h := newHasher ()
543+ func (e * Engine ) realRefHasher (target * Target , ref * parser.Ref ) (Hasher , error ) {
544+ h := NewHasher ()
545545 h .string (ref .Text )
546546
547547 // If we have a hash function, use that for every reference.
@@ -550,7 +550,7 @@ func (e *Engine) realRefHasher(target *Target, ref *parser.Ref) (hasher, error)
550550 if err != nil {
551551 return 0 , participle .Errorf (target .hashPos , "failed to compute hash: %s" , err )
552552 }
553- h .update (hf )
553+ h .Update (hf )
554554 return h , nil
555555 }
556556
@@ -559,10 +559,10 @@ func (e *Engine) realRefHasher(target *Target, ref *parser.Ref) (hasher, error)
559559 return 0 , err
560560 }
561561
562- h .int (uint64 (info .Mode ()))
562+ h .Int (uint64 (info .Mode ()))
563563 if ! info .IsDir () {
564- h .int (uint64 (info .Size ()))
565- h .int (uint64 (info .ModTime ().UnixNano ()))
564+ h .Int (uint64 (info .Size ()))
565+ h .Int (uint64 (info .ModTime ().UnixNano ()))
566566 }
567567 return h , nil
568568}
@@ -660,13 +660,13 @@ func (e *Engine) evaluate() error {
660660 // Second pass - restore hashes from the DB.
661661 for _ , target := range e .targets {
662662 logger := e .targetLogger (target )
663- _ , err := e .recursivelyComputeHash (target , e .dbRefHasher , map [string ]bool {}, func (target * Target , h hasher ) {
663+ _ , err := e .recursivelyComputeHash (target , e .dbRefHasher , map [string ]bool {}, func (target * Target , h Hasher ) {
664664 target .storedHash = h
665665 })
666666 if err != nil && ! errors .Is (err , os .ErrNotExist ) {
667667 return err
668668 }
669- _ , err = e .recursivelyComputeHash (target , e .realRefHasher , map [string ]bool {}, func (target * Target , h hasher ) {
669+ _ , err = e .recursivelyComputeHash (target , e .realRefHasher , map [string ]bool {}, func (target * Target , h Hasher ) {
670670 target .realHash = h
671671 })
672672 if err != nil && ! errors .Is (err , os .ErrNotExist ) {
0 commit comments