pub struct StateManager { /* private fields */ }Expand description
Manages persistent state for hook execution sessions
Implementations§
Source§impl StateManager
impl StateManager
Sourcepub fn new(state_dir: PathBuf) -> Self
pub fn new(state_dir: PathBuf) -> Self
Create a new state manager with the specified state directory
Sourcepub fn default_state_dir() -> Result<PathBuf>
pub fn default_state_dir() -> Result<PathBuf>
Get the default state directory.
Uses platform-appropriate paths:
- Linux:
~/.local/state/cuenv/state - macOS:
~/Library/Application Support/cuenv/state - Windows:
%APPDATA%\cuenv\state
Sourcepub fn with_default_dir() -> Result<Self>
pub fn with_default_dir() -> Result<Self>
Create a state manager using the default state directory
Sourcepub fn get_state_dir(&self) -> &Path
pub fn get_state_dir(&self) -> &Path
Get the state directory path
Sourcepub async fn ensure_state_dir(&self) -> Result<()>
pub async fn ensure_state_dir(&self) -> Result<()>
Ensure the state directory exists
Sourcepub fn get_state_file_path(&self, instance_hash: &str) -> PathBuf
pub fn get_state_file_path(&self, instance_hash: &str) -> PathBuf
Get the state file path for a given directory hash (public for PID files)
Sourcepub async fn save_state(&self, state: &HookExecutionState) -> Result<()>
pub async fn save_state(&self, state: &HookExecutionState) -> Result<()>
Save execution state to disk with atomic write and locking
Sourcepub async fn load_state(
&self,
instance_hash: &str,
) -> Result<Option<HookExecutionState>>
pub async fn load_state( &self, instance_hash: &str, ) -> Result<Option<HookExecutionState>>
Load execution state from disk with shared locking
Sourcepub async fn remove_state(&self, instance_hash: &str) -> Result<()>
pub async fn remove_state(&self, instance_hash: &str) -> Result<()>
Remove state file for a directory
Sourcepub async fn list_active_states(&self) -> Result<Vec<HookExecutionState>>
pub async fn list_active_states(&self) -> Result<Vec<HookExecutionState>>
List all active execution states
Sourcepub fn compute_directory_key(path: &Path) -> String
pub fn compute_directory_key(path: &Path) -> String
Compute a key for directory-only lookups (used for fast status checks). This hashes just the canonicalized directory path, without config hash.
Sourcepub async fn create_directory_marker(
&self,
directory_path: &Path,
instance_hash: &str,
) -> Result<()>
pub async fn create_directory_marker( &self, directory_path: &Path, instance_hash: &str, ) -> Result<()>
Create a marker file linking directory to instance hash. Called when hooks start to enable fast status lookups.
Sourcepub async fn remove_directory_marker(&self, directory_path: &Path) -> Result<()>
pub async fn remove_directory_marker(&self, directory_path: &Path) -> Result<()>
Remove marker file for a directory. Called when hooks complete/fail and display timeout expires.
Sourcepub fn has_active_marker(&self, directory_path: &Path) -> bool
pub fn has_active_marker(&self, directory_path: &Path) -> bool
Fast synchronous check: does a marker exist for this directory? This is the hot path for Starship - just a single stat() syscall.
Sourcepub async fn get_marker_instance_hash(
&self,
directory_path: &Path,
) -> Option<String>
pub async fn get_marker_instance_hash( &self, directory_path: &Path, ) -> Option<String>
Read the instance hash from a marker file (if it exists).
Sourcepub fn get_marker_instance_hash_sync(
&self,
directory_path: &Path,
) -> Option<String>
pub fn get_marker_instance_hash_sync( &self, directory_path: &Path, ) -> Option<String>
Read the instance hash from a marker file synchronously.
This is the sync equivalent of get_marker_instance_hash for the fast path.
Sourcepub fn load_state_sync(
&self,
instance_hash: &str,
) -> Result<Option<HookExecutionState>>
pub fn load_state_sync( &self, instance_hash: &str, ) -> Result<Option<HookExecutionState>>
Load execution state from disk synchronously with shared locking.
This is the sync equivalent of load_state for the fast path.
Sourcepub async fn cleanup_state_directory(&self) -> Result<usize>
pub async fn cleanup_state_directory(&self) -> Result<usize>
Clean up the entire state directory
Sourcepub async fn cleanup_orphaned_states(&self, max_age: Duration) -> Result<usize>
pub async fn cleanup_orphaned_states(&self, max_age: Duration) -> Result<usize>
Clean up orphaned state files (states without corresponding processes)
Trait Implementations§
Source§impl Clone for StateManager
impl Clone for StateManager
Source§fn clone(&self) -> StateManager
fn clone(&self) -> StateManager
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for StateManager
impl RefUnwindSafe for StateManager
impl Send for StateManager
impl Sync for StateManager
impl Unpin for StateManager
impl UnwindSafe for StateManager
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more