pub struct PluginManager { /* private fields */ }Expand description
One packaged plugin, and the codex binary that manages it.
Implementations§
Source§impl PluginManager
impl PluginManager
Sourcepub fn new(
codex_program: impl Into<PathBuf>,
marketplace_root: impl Into<PathBuf>,
marketplace_name: impl Into<String>,
plugin_name: impl Into<String>,
) -> Self
pub fn new( codex_program: impl Into<PathBuf>, marketplace_root: impl Into<PathBuf>, marketplace_name: impl Into<String>, plugin_name: impl Into<String>, ) -> Self
Manage plugin_name, offered by the marketplace at marketplace_root
under marketplace_name, through the codex binary at
codex_program.
codex_program is a parameter rather than the literal codex so a
test can inject a shim; production callers pass the bare name and let
PATH resolve it. Child processes inherit the caller’s environment, so
$CODEX_HOME resolves the same for the CLI as for the caller — pinning
it here would only risk desynchronising from a future CLI change.
Sourcepub fn marketplace_root(&self) -> &Path
pub fn marketplace_root(&self) -> &Path
The directory codex plugin marketplace add is pointed at.
Sourcepub fn plugin_spec(&self) -> String
pub fn plugin_spec(&self) -> String
The <plugin>@<marketplace> spec this manager installs.
Sourcepub fn manual_commands(&self) -> [String; 2]
pub fn manual_commands(&self) -> [String; 2]
The two commands, in order, that Self::register runs — the exact
text to print when there is no CLI to run them with, or when a step
failed and the user must retry by hand.
Every argument is shell-quoted, because this text exists to be pasted
into a shell: a marketplace root under a home directory with a space in
it would otherwise register a different — probably nonexistent —
directory, without saying so.
Sourcepub fn install_command(&self) -> String
pub fn install_command(&self) -> String
Just the install command — what a consumer prints to recover from
InstallOutcome::RemovedNotReinstalled. Shell-quoted for the reason
Self::manual_commands gives.
Sourcepub fn register(&self, goal: InstallGoal, plugin_disabled: bool) -> ManagerRun
pub fn register(&self, goal: InstallGoal, plugin_disabled: bool) -> ManagerRun
Register the marketplace and install (or refresh) the plugin.
plugin_disabled is the caller’s answer from
plugin_disabled_in_config, passed in rather than read here because
locating config.toml is deployment. It gates the whole run: a
disabled plugin means no codex command is issued, not merely that the
install step is skipped. Registering the marketplace is not a read —
against a same-named source pointing elsewhere it removes that
registration and redirects the name here, which is not something to do
on behalf of an install that will not happen.
Trait Implementations§
Source§impl Clone for PluginManager
impl Clone for PluginManager
Source§fn clone(&self) -> PluginManager
fn clone(&self) -> PluginManager
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 PluginManager
impl Debug for PluginManager
impl Eq for PluginManager
Source§impl PartialEq for PluginManager
impl PartialEq for PluginManager
impl StructuralPartialEq for PluginManager
Auto Trait Implementations§
impl Freeze for PluginManager
impl RefUnwindSafe for PluginManager
impl Send for PluginManager
impl Sync for PluginManager
impl Unpin for PluginManager
impl UnsafeUnpin for PluginManager
impl UnwindSafe for PluginManager
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.