pub struct Embedder {Show 18 fields
pub name: &'static str,
pub display_name: &'static str,
pub vendor: Option<&'static str>,
pub version: &'static str,
pub user_agent: &'static str,
pub self_names: &'static [&'static str],
pub compatible_names: &'static [&'static str],
pub lockfile_basename: &'static str,
pub workspace_yaml: Option<&'static str>,
pub manifest_namespace: &'static str,
pub env_prefix: Option<&'static str>,
pub config_env_prefix: Option<&'static str>,
pub cache_namespace: &'static str,
pub data_namespace: &'static str,
pub canonical_lockfile_always_wins: bool,
pub runtime_switching: bool,
pub self_engines_check: bool,
pub self_update_enabled: bool,
}Expand description
The binary’s embedder profile — branding plus embedder-fixed behavior.
Branding fields are pure naming constants. The behavior toggles
(canonical_lockfile_always_wins, runtime_switching,
self_engines_check, self_update_enabled) are embedder-fixed, not
user-tunable: a host that mirrors the project’s incumbent package manager,
owns Node provisioning, lives outside aube’s version namespace, or owns its
own self-update flips them. Genuinely user-tunable knobs stay settings.
Fields§
§name: &'static strTool name, lowercase (e.g. "aube"). The proper noun users type and
see in output, and the clap command name driving help/usage/errors.
Must be filesystem- and command-safe (no spaces, slashes, or shell
metacharacters); it is used verbatim in on-disk sidecar paths (e.g.
.<name>_patch_state.json, .<name>-deploy-injected/) and in command
invocations, so the embedder is responsible for supplying a safe slug.
display_name: &'static strHigh-visibility display name shown in the progress banner (e.g.
"aube"). Usually equal to name; split out so an
embedder can brand the banner independently of the command name.
vendor: Option<&'static str>Vendor attribution rendered after the version in the progress banner,
e.g. Some("by jdx.dev"). None suppresses the attribution entirely
(an embedder that doesn’t want a third-party vendor tag).
version: &'static strVersion string — env!("CARGO_PKG_VERSION") for standalone aube.
user_agent: &'static strHTTP User-Agent product token, e.g. "aube/1.19.0". Sent to the
registry and exported as the lifecycle npm_config_user_agent
product.
self_names: &'static [&'static str]Names this tool recognizes as itself in a packageManager field or
a lockfile-kind detection. Standalone aube: ["aube"].
compatible_names: &'static [&'static str]Names accepted as compatible drop-in targets in the packageManager
guardrail. Standalone aube: ["pnpm"].
lockfile_basename: &'static strCanonical lockfile filename, e.g. "aube-lock.yaml".
Invariant (checked in set_embedder): must contain a . (so the
stem/extension split the lockfile-candidate machinery relies on holds)
and must not collide with a foreign package manager’s lockfile name
(pnpm-lock.yaml, package-lock.json, bun.lock, yarn.lock,
npm-shrinkwrap.json). Aliasing a foreign name would make aube’s own
lockfile indistinguishable from the incumbent’s in the
lockfile-candidate set (io.rs / clean.rs / pack.rs).
workspace_yaml: Option<&'static str>The branded workspace-config YAML this tool reads and writes, e.g.
"aube-workspace.yaml". None disables the tool’s own branded YAML
entirely (the shared pnpm-workspace.yaml compatibility surface is
handled separately and is not configured here).
manifest_namespace: &'static strThe package.json object key this tool reads its own config under,
e.g. "aube". "" means this tool has no own branded manifest
namespace: config reads fold only the
compatible_names namespaces plus any
top-level (manifest-root) entry, and setting writes go to the
manifest root as top-level package.json keys — never under a
foreign brand’s namespace, and never as a literal "" key.
env_prefix: Option<&'static str>Env-var prefix for the tool’s internal debug / diagnostic / perf-bisect
toggles, read through embedder_env, e.g.
Some("AUBE") → AUBE_DISABLE_CLONEDIR, AUBE_DIAG_PRINT, … None
means the tool exposes no branded debug-toggle family — every such
toggle is simply unreadable, so an embedding host’s brand never sprouts a
dozen <HOST>_DISABLE_* perf switches. This gates the non-settings,
non-user-facing toggle family only; the few user-facing config knobs go
through config_env_prefix, and the settings
table’s branded aliases go through
branded_env_alias_enabled.
config_env_prefix: Option<&'static str>Env-var prefix for the tool’s small set of first-class config knobs —
the cache dir and the fetch concurrency — read through
config_env, e.g. Some("AUBE") →
AUBE_CACHE_DIR / AUBE_CONCURRENCY, Some("NUB") → NUB_CACHE_DIR /
NUB_CONCURRENCY. Distinct from env_prefix: these
few knobs ARE legitimate config the host wants under its own brand,
whereas the debug toggles vanish under an embedder that hides them.
None reads no first-class config env.
cache_namespace: &'static strLeaf directory name under the OS cache root, e.g. "aube" →
<XDG_CACHE_HOME>/aube.
data_namespace: &'static strLeaf directory name under the OS data/state root, e.g. "aube".
canonical_lockfile_always_wins: boolWhen true (aube’s default), this tool’s canonical lockfile
(lockfile_basename) outranks any foreign lockfile present in
lockfile-kind detection. An embedder that mirrors the project’s
incumbent package manager sets this false so the incumbent’s
lockfile wins instead. Embedder-fixed: it’s the host’s call, not the
user’s.
runtime_switching: boolWhen true (aube’s default), this tool resolves and switches the Node
runtime from version files / devEngines and prepends it to PATH. An
embedder that owns Node provisioning itself sets this false, leaving
the runtime resolver inert. Embedder-fixed.
self_engines_check: boolWhen true (aube’s default), this tool validates a manifest’s
engines.<self> constraint against its own version. An embedder whose
version isn’t in aube’s version namespace sets this false to avoid
spurious engines.aube mismatches. The engines.node check is
unaffected. Embedder-fixed.
self_update_enabled: boolWhen true (aube’s default), this tool owns its own self-update:
the update notifier (and its aube.jdx.dev endpoints) runs. An
embedder that owns its own upgrade path sets this false so those
code paths never run. Embedder-fixed.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Embedder
impl RefUnwindSafe for Embedder
impl Send for Embedder
impl Sync for Embedder
impl Unpin for Embedder
impl UnsafeUnpin for Embedder
impl UnwindSafe for Embedder
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 more