23 lines
926 B
Go
23 lines
926 B
Go
// Package buildstep is what both build modules share: the runner of a long step that answers a tool call at once
|
|
// and ends on its key in the module's `steps` state (novox/hq ADR 0469 §2; issue 1471), the toolchain guard
|
|
// (issue 1473), the fetch of one commit over SSH (issue 1474), and the failure contract of a test level with the parsers
|
|
// of go test -json and node --test's TAP that fill it (failure.go, issue 1901; its conformance kit is package conformance).
|
|
package buildstep
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
var now = time.Now
|
|
|
|
// NewID is a step id: the time in milliseconds in base 36 and six random hex digits, lower-case letters and
|
|
// digits only, so it is one key token and differs between two steps of one node even in one millisecond.
|
|
func NewID() string {
|
|
var b [3]byte
|
|
_, _ = rand.Read(b[:])
|
|
return strconv.FormatInt(now().UnixMilli(), 36) + hex.EncodeToString(b[:])
|
|
}
|