feat(tvix/derivation): add validate_output_paths flag for validate
This allows calling validate() on a derivation that doesn't have its output paths already calculated yet. It allows offloading some of the error checking in builtins.derivation* to be offloaded to that function. Change-Id: Ib4aeadc0eb6583ef8cd765f33e9a9ec32be62729 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7848 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
b1e8fe7212
commit
083e24bbb1
3 changed files with 12 additions and 6 deletions
|
|
@ -4,7 +4,11 @@ use tvix_store::store_path::StorePath;
|
|||
impl Derivation {
|
||||
/// validate ensures a Derivation struct is properly populated,
|
||||
/// and returns a [ValidateDerivationError] if not.
|
||||
pub fn validate(&self) -> Result<(), DerivationError> {
|
||||
/// if `validate_output_paths` is set to false, the output paths are
|
||||
/// excluded from validation.
|
||||
/// This is helpful to validate struct population before invoking
|
||||
/// [Derivation::calculate_output_paths].
|
||||
pub fn validate(&self, validate_output_paths: bool) -> Result<(), DerivationError> {
|
||||
// Ensure the number of outputs is > 1
|
||||
if self.outputs.is_empty() {
|
||||
return Err(DerivationError::NoOutputs());
|
||||
|
|
@ -41,7 +45,7 @@ impl Derivation {
|
|||
break;
|
||||
}
|
||||
|
||||
if let Err(e) = output.validate() {
|
||||
if let Err(e) = output.validate(validate_output_paths) {
|
||||
return Err(DerivationError::InvalidOutput(output_name.to_string(), e));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue