pub struct SessionDirSpec {
pub session_name: Option<String>,
pub session_path: Option<String>,
pub reuse: SessionReuse,
pub session_keep: usize,
pub session_shelflife: Duration,
pub force_new: bool,
}Expand description
Resolved session inputs from CLI / env. Built by
resolve_session_dir from one of:
- The umbrella
--session <kv-list>flag (a comma-separated list ofkey:valuepairs and bare shortcuts). - Per-key long-form flags (
--session-name,--session-path,--session-reuse,--session-keep,--session-shelflife). SESSION_DIRECTORYenv var (equivalent to--session-path).
When both forms are present the long-form flag wins; the umbrella flag is shorthand. Within the umbrella value the last-wins rule applies if a key is repeated.
Fields§
§session_name: Option<String>name — session id (basename of the session directory).
Used in metric labels and as the resolved value of the
SESSION token in path. When unset, defaults to the
auto-generated <scenario>_<timestamp> form.
session_path: Option<String>path — full directory path. Optional SESSION token
inside the path is replaced with session_name at write
time. When unset, the path is logs/<session_name>/.
reuse: SessionReusereuse — policy when the resolved directory already
contains prior session artifacts. Default Error.
session_keep: usizekeep — number of session directories retained under
the parent at startup. Default 10. 0 disables.
session_shelflife: Durationshelflife — max age of a session directory before
purge at startup. Default 4 weeks. 0 disables.
force_new: boolSRD-106 — the umbrella bare token new (--session new):
force a fresh auto-named session. Its only consumer is the
stick_session resolution rung, which it defeats; with no
stick in play a fresh session is already the default, so
the token is a harmless no-op there.
Implementations§
Source§impl SessionDirSpec
impl SessionDirSpec
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
true when no path/name flag is set — caller falls back
to the default logs/<auto_id>/ behavior. (reuse,
keep, shelflife are always present at their defaults
and don’t count toward “is this empty?”.)
Sourcepub fn resolve(&self, auto_id: &str) -> Option<(PathBuf, String)>
pub fn resolve(&self, auto_id: &str) -> Option<(PathBuf, String)>
Resolve to a concrete (output_dir, session_id).
auto_idis the fallback session name whensession_nameis unset.- The resolved id =
session_name.unwrap_or(auto_id). - The resolved path =
session_path(withSESSIONtoken replaced by the resolved id) if set, elselogs/<id>/.
Returns None only when the spec is empty and the
caller should use defaults; otherwise Some with the
resolved values.
Sourcepub fn needs_auto_id(&self) -> bool
pub fn needs_auto_id(&self) -> bool
true if the resolved path needs the auto-id (i.e.
neither session_name nor a fully-concrete
session_path is set). Used at startup to decide
whether logs/latest can be wired immediately or must
wait for session creation.
Trait Implementations§
Source§impl Clone for SessionDirSpec
impl Clone for SessionDirSpec
Source§impl Debug for SessionDirSpec
impl Debug for SessionDirSpec
Auto Trait Implementations§
impl Freeze for SessionDirSpec
impl RefUnwindSafe for SessionDirSpec
impl Send for SessionDirSpec
impl Sync for SessionDirSpec
impl Unpin for SessionDirSpec
impl UnsafeUnpin for SessionDirSpec
impl UnwindSafe for SessionDirSpec
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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