pub struct Args {
pub format: Format,
pub output: Option<PathBuf>,
pub mem_name: Option<String>,
pub root: Option<String>,
pub via: Vec<String>,
pub direction: ChainDirection,
pub depth: Option<usize>,
pub self_contained: bool,
pub base_url: Option<String>,
pub include: Vec<String>,
}Expand description
Export the write mem as markdown (in place), as a portable .mem
archive, or as a structured JSON document on stdout.
--format markdown is supported only on folder-backed mems; use
--format mem for archive export on git-branch backends. Targeting
a mem on an incompatible backend returns
MARKDOWN_EXPORT_UNSUPPORTED_BACKEND; workspace-wide markdown export
in a mixed-backend workspace completes the folder mounts and lists
the declined mounts under skipped_mounts.
--format json is the bulk read: one engine boot emits the complete
entity set — per entity the same structured envelope memstead entity --json produces — grouped per mem, backend-uniform, observably
read-only. External projections and check scripts consume this
instead of per-entity CLI calls (which pay the engine boot per
entity) or raw git against the mem-repo.
Fields§
§format: FormatOutput format. markdown regenerates the mem directory in place
(folder-backed mems only); mem writes a portable .mem zip
suitable for sharing (every backend); json prints every
non-stub entity of the selected mem(s) as one structured JSON
document on stdout (every backend, read-only); html writes one
self-contained page; llms-txt prints the whole mem as one
agent-readable Markdown document (every backend, read-only) —
the same shape a Memstead deployment serves at /llms-full.txt,
rendered by the same engine code so the two cannot drift. A mem
archive’s authoring provenance (.memstead/provenance.json) has
every private-pattern span redacted to [redacted:<class>] —
the leak scan’s classes, one vocabulary — never stripped; the
report counts redactions per class. Entity bodies are not
rewritten.
output: Option<PathBuf>Output path for --format mem (default ./<name>-<version>.mem)
and --format html (default ./<mem>.html). Optional for
--format llms-txt, which prints to stdout when omitted.
Ignored for --format markdown; refused for --format json
(that document goes to stdout).
mem_name: Option<String>Which mem to export (by name). For --format markdown, omitting
this argument runs a workspace-wide export and reports any
declined mounts under skipped_mounts. For --format mem,
required when more than one write mem is loaded; defaults to
the first writable mem otherwise. For --format json, omitting
it exports every writable mem; naming a read-only mount exports
that mount (read-mems are excluded from the workspace-wide
default — they are someone else’s published content).
root: Option<String>Export only the chain reachable from this entity (mem--slug)
instead of the whole mem — for --format json, html and
llms-txt. Requires --via. The root itself is always included;
each rendered entity keeps its metadata, sections, relationships
and (json) its anchors with live state; stubs in the chain are
marked; references to entities outside the chain render as
unresolved markers, never as broken links. Without --root the
export is the whole mem, byte-identical to before.
via: Vec<String>Rel-types the chain follows, comma-separated or repeatable
(--via SUPPORTS,DERIVES_FROM). Validated against the mem’s
schema vocabulary: an unknown name refuses INVALID_REL_TYPE
naming the declared rel-types. Only with --root.
direction: ChainDirectionDirection applied at EVERY hop of the chain: out follows edges
pointing away from the root (what the root rests on), in
follows edges pointing at it (what rests on the root), both
the undirected walk. A pure transitive closure in the chosen
direction, the same contract memstead search uses.
depth: Option<usize>Maximum hops from the root (default: unbounded). --depth 1 is
the root and its direct neighbours along --via.
self_contained: boolFor --format mem: make the archive self-contained by dropping
every ## Relationships row whose target lives in another mem,
then re-pack and strictly validate it (the same pass install
runs). Without it, a mem that references its sibling mems exports
with DANGLING_CROSS_MEM_EDGE_IN_EXPORT warnings and install
refuses the archive; with it, every dropped edge is reported as
CROSS_MEM_EDGE_DROPPED instead. Section text, body wiki-links
included, is never touched: an alias row synthesised from a body
link loses nothing the body does not still say.
base_url: Option<String>Absolute base URL for entity links in --format llms-txt (e.g.
https://example.com). With it, references render as absolute
links exactly as the served document does; without it they target
the document-relative entity/<id>. There is no third form.
Ignored by every other format.
include: Vec<String>Opt extra per-entity content into the --format json document
(comma-separated). Keys: anchors — each entity envelope gains
an anchors array with its stored provenance anchors, so the
file-to-entity map a carving or sync pass starts from is one
export instead of one memstead anchors <id> per entity. An
unknown key refuses naming the allowed set; refused for every
other format.
Trait Implementations§
Source§impl Args for Args
impl Args for Args
Source§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
Source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§impl CommandFactory for Args
impl CommandFactory for Args
Source§impl FromArgMatches for Args
impl FromArgMatches for Args
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§impl Parser for Args
impl Parser for Args
Source§fn parse_from<I, T>(itr: I) -> Self
fn parse_from<I, T>(itr: I) -> Self
Source§fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
Source§fn update_from<I, T>(&mut self, itr: I)
fn update_from<I, T>(&mut self, itr: I)
Auto Trait Implementations§
impl Freeze for Args
impl RefUnwindSafe for Args
impl Send for Args
impl Sync for Args
impl Unpin for Args
impl UnsafeUnpin for Args
impl UnwindSafe for Args
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 Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
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