feat: added tab completions to --update-bundle flag
This commit is contained in:
5 files changed
+30
-19
No files matched your search
@@ -105,6 +105,15 @@ pub(super) fn macro_completer(current: &OsStr) -> Vec<CompletionCandidate> {
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub(super) fn bundle_completer(current: &OsStr) -> Vec<CompletionCandidate> {
|
||||
let cur = current.to_string_lossy();
|
||||
crate::config::installed_bundle_names()
|
||||
.into_iter()
|
||||
.filter(|b| b.starts_with(&*cur))
|
||||
.map(CompletionCandidate::new)
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn extract_agent_from_args() -> Option<String> {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
let mut i = 0;
|
||||
|
||||
+3
-2
@@ -1,8 +1,8 @@
|
||||
mod completer;
|
||||
|
||||
use crate::cli::completer::{
|
||||
ShellCompletion, agent_completer, macro_completer, mcp_server_completer, model_completer,
|
||||
rag_completer, role_completer, secrets_completer, session_completer,
|
||||
ShellCompletion, agent_completer, bundle_completer, macro_completer, mcp_server_completer,
|
||||
model_completer, rag_completer, role_completer, secrets_completer, session_completer,
|
||||
};
|
||||
use crate::config::{AssetCategory, InstallFilter, MemoryScope};
|
||||
use anyhow::{Context, Result};
|
||||
@@ -230,6 +230,7 @@ pub struct Cli {
|
||||
value_name = "NAME",
|
||||
group = "yes_scope",
|
||||
conflicts_with_all = ["uninstall"],
|
||||
add = ArgValueCompleter::new(bundle_completer),
|
||||
help_heading = "Installation & Updates"
|
||||
)]
|
||||
pub update_bundle: Option<String>,
|
||||
|
||||
@@ -9,6 +9,7 @@ use crate::utils::IS_STDOUT_TERMINAL;
|
||||
use anyhow::{Context, Result, bail};
|
||||
use chrono::{SecondsFormat, Utc};
|
||||
use inquire::Confirm;
|
||||
use log::warn;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sha2::{Digest, Sha256};
|
||||
use std::collections::BTreeMap;
|
||||
@@ -637,6 +638,20 @@ pub(crate) fn bundle_list_rows(store: &BundleStore, config_dir: &Path) -> Vec<Bu
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub(crate) fn installed_bundle_names() -> Vec<String> {
|
||||
match BundleStore::load() {
|
||||
Ok(store) => store
|
||||
.bundle_names()
|
||||
.into_iter()
|
||||
.map(str::to_string)
|
||||
.collect(),
|
||||
Err(e) => {
|
||||
warn!("skipping bundle-name completion: {e:#}");
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn list_installed_bundles() -> Result<()> {
|
||||
let store = BundleStore::load()?;
|
||||
let rows = bundle_list_rows(&store, &paths::config_dir());
|
||||
|
||||
@@ -33,6 +33,7 @@ pub use self::agent::{
|
||||
pub use self::app_config::AppConfig;
|
||||
#[allow(unused_imports)]
|
||||
pub use self::app_state::AppState;
|
||||
pub(crate) use self::bundles::installed_bundle_names;
|
||||
pub use self::bundles::list_installed_bundles;
|
||||
pub use self::input::Input;
|
||||
pub use self::install_remote::{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use super::bundles::BundleStore;
|
||||
use super::bundles::installed_bundle_names;
|
||||
use super::mcp_tool_policy::{McpToolPolicy, SkillMcpLayer, ToolFilter, expand_mcp_server_alias};
|
||||
use super::rag_cache::{RagCache, RagKey};
|
||||
use super::session::{INTERRUPTED_RESPONSE_TEXT, Session};
|
||||
@@ -67,22 +67,6 @@ use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use std::{env, fs};
|
||||
|
||||
/// Completion must degrade rather than break the prompt, but a corrupt store
|
||||
/// should not vanish silently: the failure is logged before returning empty.
|
||||
fn installed_bundle_names() -> Vec<String> {
|
||||
match BundleStore::load() {
|
||||
Ok(store) => store
|
||||
.bundle_names()
|
||||
.into_iter()
|
||||
.map(str::to_string)
|
||||
.collect(),
|
||||
Err(e) => {
|
||||
warn!("skipping bundle-name completion: {e:#}");
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn expand_enabled_mcp_server_ids(
|
||||
app: &AppConfig,
|
||||
mcp_config: &McpServersConfig,
|
||||
@@ -5210,6 +5194,7 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::config::AppState;
|
||||
use crate::config::agent::AgentConfig;
|
||||
use crate::config::bundles::BundleStore;
|
||||
use crate::config::mcp_tool_policy::LayerSource;
|
||||
use crate::config::tool_scope::test_fixtures::{FixtureServer, fixture_runtime};
|
||||
use crate::function::jobs::RingBuf;
|
||||
|
||||
Reference in new issue
Block a user