depot/go/nix/nixbuild/state.go

67 lines
2 KiB
Go

// SPDX-FileCopyrightText: 2023 Luke Granger-Brown <depot@lukegb.com>
//
// SPDX-License-Identifier: Apache-2.0
package nixbuild
type State int
const (
// Does this path (or path(s)) exist on the target already?
StateCheckingOnTarget State = iota
StateDoneAlreadyExisted
StateResolvingOnTarget
StateDoneResolvedOnTarget
// Does this path exist in any configured resolvers?
StateCheckingResolvers
StateFetchingReferencesFromResolvers
StateFetchingFromResolver
StateDoneFromResolver
// If we don't have the derivation for this path, fetch it.
// This state only matters if we only have the path and not the derivation.
StateLookingUpDerivation
StateChoosingBuilder
StateResolvingReferencesOnBuilder
StateCopyingReferencesToBuilder
StateBuildingDerivation
StateCopying
StateDoneBuilt
StateFailed
)
func (s State) String() string {
return map[State]string{
StateCheckingOnTarget: "checking if already on target",
StateDoneAlreadyExisted: "done (already on target)",
StateResolvingOnTarget: "resolving on target",
StateDoneResolvedOnTarget: "done (resolved on target)",
StateCheckingResolvers: "checking if present on any resolvers",
StateFetchingReferencesFromResolvers: "copying references from resolvers",
StateFetchingFromResolver: "copying from resolver",
StateDoneFromResolver: "done (copied from resolver)",
StateLookingUpDerivation: "looking up derivation",
StateChoosingBuilder: "picking a builder",
StateResolvingReferencesOnBuilder: "resolving build-time references on builder",
StateCopyingReferencesToBuilder: "copying build-time references to builder",
StateBuildingDerivation: "building",
StateCopying: "copying from builder",
StateDoneBuilt: "done (built)",
StateFailed: "failed :(",
}[s]
}
func (s State) Terminal() bool {
switch s {
case StateDoneAlreadyExisted, StateDoneResolvedOnTarget, StateDoneFromResolver, StateDoneBuilt, StateFailed:
return true
}
return false
}