pub struct WaitForWorkspaceDepsConfig {
pub enabled: Option<bool>,
pub poll_interval: Option<HumanDuration>,
pub max_wait: Option<HumanDuration>,
}Expand description
Pre-publish polling gate for cargo publish. When enabled, the cargo
publisher reads its crate’s manifest, identifies every dep that points
at another crate in the same anodize workspace, and polls
https://index.crates.io/<prefix>/<name> until each (name, version)
pair is queryable. Only then does cargo publish run.
Default: disabled. Anodize’s own workspaces publish lockstep with one tag; this feature only kicks in for multi-tag-multi-crate workspaces like cfgd where downstream crates can otherwise race the sparse-index propagation of their upstream deps.
Complementary to cargo.index_timeout: this gate runs BEFORE publish
(waits for upstream deps to land), while index_timeout runs AFTER
publish (waits for the just-published crate to land before the next
dependent in the same run starts).
publish:
cargo:
wait_for_workspace_deps:
enabled: true
poll_interval: 5s
max_wait: 5mFields§
§enabled: Option<bool>Master switch. Default false preserves today’s behavior for
single-crate workspaces and lockstep monorepos.
poll_interval: Option<HumanDuration>Time between successive index probes. Humantime-style string
(e.g. "5s", "500ms", "1m"). Default: "5s".
max_wait: Option<HumanDuration>Hard ceiling on the total wait. The publisher bails with a clear
error once max_wait elapses without every dep appearing.
Humantime-style string (e.g. "5m", "30s"). Default: "5m".
Implementations§
Source§impl WaitForWorkspaceDepsConfig
impl WaitForWorkspaceDepsConfig
Sourcepub const DEFAULT_POLL_INTERVAL: Duration
pub const DEFAULT_POLL_INTERVAL: Duration
Default poll interval — short enough to feel snappy when the upstream’s publish lands quickly, long enough that a 5-minute wait window costs at most 60 HTTP probes.
Sourcepub const DEFAULT_MAX_WAIT: Duration
pub const DEFAULT_MAX_WAIT: Duration
Default ceiling — five minutes matches the historical
index_timeout default and covers the worst-case sparse-index
CDN propagation window observed in practice.
Sourcepub fn resolved_enabled(&self) -> bool
pub fn resolved_enabled(&self) -> bool
Resolve enabled, defaulting to false (master switch off).
Sourcepub fn resolved_poll_interval(&self) -> Duration
pub fn resolved_poll_interval(&self) -> Duration
Resolve poll_interval, falling back to
Self::DEFAULT_POLL_INTERVAL.
Sourcepub fn resolved_max_wait(&self) -> Duration
pub fn resolved_max_wait(&self) -> Duration
Resolve max_wait, falling back to Self::DEFAULT_MAX_WAIT.
Trait Implementations§
Source§impl Clone for WaitForWorkspaceDepsConfig
impl Clone for WaitForWorkspaceDepsConfig
Source§fn clone(&self) -> WaitForWorkspaceDepsConfig
fn clone(&self) -> WaitForWorkspaceDepsConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WaitForWorkspaceDepsConfig
impl Debug for WaitForWorkspaceDepsConfig
Source§impl Default for WaitForWorkspaceDepsConfig
impl Default for WaitForWorkspaceDepsConfig
Source§fn default() -> WaitForWorkspaceDepsConfig
fn default() -> WaitForWorkspaceDepsConfig
Source§impl<'de> Deserialize<'de> for WaitForWorkspaceDepsConfigwhere
WaitForWorkspaceDepsConfig: Default,
impl<'de> Deserialize<'de> for WaitForWorkspaceDepsConfigwhere
WaitForWorkspaceDepsConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for WaitForWorkspaceDepsConfig
impl JsonSchema for WaitForWorkspaceDepsConfig
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more