pub enum CliError {
Show 62 variants
ReadConfig {
path: PathBuf,
source: Error,
},
UnknownExtension {
path: PathBuf,
},
ParseConfig {
path: PathBuf,
message: String,
},
MissingEnvVar {
var: String,
location: String,
},
ReadInterpolatedFile {
path: PathBuf,
source: Error,
},
InterpolatedFileTooLarge {
path: PathBuf,
max_bytes: u64,
},
UnknownInterpolationId {
id: String,
token: String,
},
MissingRecordField {
id: String,
path: String,
},
UnknownConnector {
kind: &'static str,
name: String,
available: String,
},
UnknownStateStore {
name: String,
available: String,
},
UnknownTransform {
name: String,
available: String,
},
InvalidTransform {
name: String,
message: String,
},
InvalidConnectorConfig {
kind: &'static str,
name: String,
message: String,
},
ScaffoldExists {
path: PathBuf,
},
MissingEnvSelector {
var: String,
},
EnvFileNotFound {
path: PathBuf,
},
NoConfigOrFromEnv,
EnvConflict {
field: String,
scalar_var: String,
json_var: String,
},
InvalidEnvJson {
var: String,
message: String,
},
TransformIndexGap {
missing: u32,
},
ReservedRowId {
id: String,
},
DuplicateRowId {
id: String,
},
UnknownParent {
id: String,
parent: String,
},
ParentCycle {
ids: Vec<String>,
},
UnknownDependency {
id: String,
depends_on: String,
},
DependencyCycle {
ids: Vec<String>,
},
DuplicateStateKey {
id: String,
state_key: String,
},
InvalidStateKey {
id: String,
state_key: String,
reason: String,
},
PipelineHadFailures {
count: usize,
},
UnknownDlqSinkKind {
kind: String,
context: String,
},
InvalidDlqBudget {
field: &'static str,
},
UnknownTemplate {
kind: &'static str,
name: String,
row_id: String,
known: Vec<String>,
},
MissingTemplate {
kind: &'static str,
row_id: String,
},
DuplicateTemplate {
kind: &'static str,
name: String,
},
TransformsOnSink {
name: String,
},
InheritTransformsOnSink {
name: String,
},
InterpolationCycle {
chain: Vec<String>,
},
CompositionCycle {
chain: Vec<String>,
},
IncludeNotFound {
path: PathBuf,
referenced_by: PathBuf,
},
CompositionDepthExceeded {
max: usize,
},
BadInclude {
path: PathBuf,
reason: String,
},
UnknownProfile {
name: String,
known: Vec<String>,
},
UnknownVarsRef {
name: String,
token: String,
},
UnknownTemplateRef {
token: String,
reason: String,
},
UnknownAuthProvider {
name: String,
known: Vec<String>,
},
AuthProviderBuild {
name: String,
message: String,
},
Config(String),
Faucet(FaucetError),
Io(Error),
Observability(String),
Internal(String),
SecretBackendDisabled {
scheme: String,
},
SecretNotFound {
scheme: String,
reference: String,
},
SecretFetchFailed {
scheme: String,
reference: String,
source: Box<dyn Error + Send + Sync>,
},
SecretAuthFailed {
scheme: String,
hint: String,
},
SecretNotJson {
scheme: String,
reference: String,
},
SecretFieldMissing {
scheme: String,
reference: String,
field: String,
available: Vec<String>,
},
SecretsRequireAsyncLoad,
DoctorFailed {
failed: usize,
},
TestsFailed {
failed: usize,
},
Serve(String),
ScheduleOverlapForbidden,
}Expand description
Top-level error variants for the faucet binary.
Variants§
ReadConfig
Failed to read a config file from disk.
UnknownExtension
The config file extension is neither .yaml/.yml nor .json.
ParseConfig
Failed to parse the raw config text after interpolation.
MissingEnvVar
An ${env:VAR} reference could not be resolved.
ReadInterpolatedFile
A ${file:PATH} reference could not be read.
InterpolatedFileTooLarge
UnknownInterpolationId
A ${row_id.path} token referenced an unknown matrix row id at
expand-time (or a typo’d load-time prefix that survived to record-time).
MissingRecordField
A ${row_id.path} resolved at record-time, but the dotted path doesn’t
match any field in the parent record.
UnknownConnector
The named connector is unknown (or its feature flag is disabled in this build).
UnknownStateStore
The state-store type referenced in the config is unknown or not compiled in.
UnknownTransform
A transform type referenced in the config is not recognised.
InvalidTransform
The transform config block could not be deserialized into the expected shape.
InvalidConnectorConfig
A connector config object failed to deserialize.
ScaffoldExists
A scaffold target already exists.
MissingEnvSelector
The CLI was invoked with --from-env but the required selector env var
(FAUCET_SOURCE or FAUCET_SINK) is unset.
EnvFileNotFound
An explicit --env-file path does not exist on disk.
NoConfigOrFromEnv
faucet run invoked with neither a config path nor --from-env, and
auto-discovery found no faucet.{yaml,yml,json} in cwd.
EnvConflict
Both a scalar env var and its _JSON counterpart were set for the same field.
InvalidEnvJson
A *_JSON env var did not parse as JSON.
TransformIndexGap
FAUCET_TRANSFORM_<N> indices are not contiguous starting at 1.
ReservedRowId
A matrix row id collides with a load-time interpolation prefix.
DuplicateRowId
Two matrix rows declared the same id.
UnknownParent
A row’s parent: field names a row that doesn’t exist.
ParentCycle
The parent chain contains a cycle.
UnknownDependency
A row’s depends_on: list names a row that doesn’t exist.
DependencyCycle
The combined parent: + depends_on: graph contains a cycle.
DuplicateStateKey
Two parent records of the same matrix row resolved to the same
parent_key value, producing a colliding state-key suffix.
InvalidStateKey
The state key derived from the pipeline name + row id (+ resolved parent-key value) is not a valid state-store key. Caught up front at unit construction rather than mid-run.
PipelineHadFailures
One or more matrix invocations failed under on_error: continue.
UnknownDlqSinkKind
DLQ sink kind is not registered (not compiled in or feature disabled).
InvalidDlqBudget
DLQ budget field is set to zero (which is invalid; omit to mean ‘unlimited’).
UnknownTemplate
A matrix row referenced a named template that doesn’t exist in
pipeline.sources / pipeline.sinks (or the legacy default).
MissingTemplate
A matrix row supplied no ref: and the legacy default template
doesn’t exist either.
DuplicateTemplate
Both the legacy pipeline.source and pipeline.sources.default were
declared (same for sinks). The default slot can only be defined once.
TransformsOnSink
A sink template carries a transforms: field, which only sources support.
InheritTransformsOnSink
A sink template carries inherit_transforms:, which only sources support.
InterpolationCycle
A cycle was detected resolving ${vars.X} / ${sources.X.PATH} /
${sinks.X.PATH} references at load time.
CompositionCycle
A config-composition include/extends chain contains a cycle.
IncludeNotFound
An extends/!include target file does not exist.
CompositionDepthExceeded
Composition nesting exceeded the safety cap (extends/!include loop guard).
BadInclude
An !include tag had a non-string payload, an unsupported tag, or its
target failed structural checks.
UnknownProfile
--profile NAME (or FAUCET_PROFILE) named a profile not declared under profiles:.
UnknownVarsRef
A ${vars.X} token referenced an undefined var.
UnknownTemplateRef
A ${sources.X.PATH} or ${sinks.X.PATH} token referenced an
undefined template, or a dotted path that doesn’t resolve inside it.
UnknownAuthProvider
A connector’s auth: { ref } named a provider not declared in the
top-level auth: catalog.
AuthProviderBuild
A top-level auth: provider spec failed to build.
Config(String)
A config-level validation failure that isn’t covered by a more specific
variant (e.g. an invalid quality: block, or a quality check that
requires a DLQ when none is configured).
Faucet(FaucetError)
Pass-through for failures bubbling up from faucet-core or a connector.
Io(Error)
Pass-through I/O error.
Observability(String)
Observability stack (Prometheus / tracing) failed to install.
Internal(String)
An internal invariant was violated (a bug). Surfaced instead of silently producing a partial result.
SecretBackendDisabled
A secret-manager directive used a scheme whose backend feature was not compiled into this binary.
SecretNotFound
The secrets manager has no secret at the given reference.
SecretFetchFailed
The secret fetch failed (network / API error).
SecretAuthFailed
No ambient credentials were available for the backend.
SecretNotJson
A #field selector was used on a secret that is not JSON.
SecretFieldMissing
A #field selector named a key absent from the secret JSON.
SecretsRequireAsyncLoad
A secret directive was found while loading via the synchronous path.
DoctorFailed
One or more faucet doctor preflight probes failed. The checklist is
printed by the command; main maps this to an exit code equal to the
failed-probe count (clamped to 255).
TestsFailed
One or more faucet test cases failed. The report is printed by the
command; main maps this to an exit code equal to the failed-case
count (clamped to 255).
Serve(String)
A faucet serve startup or runtime failure (bind, auth gate, etc.).
ScheduleOverlapForbidden
overlap_policy: forbid saw a tick fire while a run was still in flight.
Trait Implementations§
Source§impl Error for CliError
impl Error for CliError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<FaucetError> for CliError
impl From<FaucetError> for CliError
Source§fn from(source: FaucetError) -> Self
fn from(source: FaucetError) -> Self
Source§impl From<InstallError> for CliError
impl From<InstallError> for CliError
Source§fn from(e: InstallError) -> Self
fn from(e: InstallError) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for CliError
impl !UnwindSafe for CliError
impl Freeze for CliError
impl Send for CliError
impl Sync for CliError
impl Unpin for CliError
impl UnsafeUnpin for CliError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for T
impl<T> Downcast for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
trace only.Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
trace only.Source§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
follow-redirect only.Source§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
request-id only.Source§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
request-id only.x-request-id as the header name. Read moreSource§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
request-id only.Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
request-id only.x-request-id as the header name. Read moreSource§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
limit only.413 Payload Too Large responses. Read moreSource§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.