Add optional command extensions
This commit is contained in:
@@ -136,6 +136,11 @@ pub struct ClientConfig {
|
||||
pub send_env: Vec<String>,
|
||||
#[serde(default)]
|
||||
pub set_env: HashMap<String, String>,
|
||||
/// Optional client-side command extensions. These are just shell command
|
||||
/// templates expanded into the remote session's startup input; Dosh does not
|
||||
/// depend on the tools they name.
|
||||
#[serde(default)]
|
||||
pub extensions: HashMap<String, CommandExtension>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
||||
@@ -151,6 +156,22 @@ pub struct HostConfig {
|
||||
pub send_env: Option<Vec<String>>,
|
||||
#[serde(default)]
|
||||
pub set_env: HashMap<String, String>,
|
||||
/// Per-host extension overrides. A host can replace a global extension or set
|
||||
/// `disabled = true` to opt out of it.
|
||||
#[serde(default)]
|
||||
pub extensions: HashMap<String, CommandExtension>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub struct CommandExtension {
|
||||
/// Remote shell command template. `{args}` expands to shell-quoted extra
|
||||
/// words after the extension name. When absent, extra args are appended.
|
||||
#[serde(default)]
|
||||
pub command: Option<String>,
|
||||
#[serde(default)]
|
||||
pub description: Option<String>,
|
||||
#[serde(default)]
|
||||
pub disabled: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
|
||||
@@ -186,6 +207,7 @@ impl Default for ClientConfig {
|
||||
disconnect_status: true,
|
||||
send_env: default_send_env(),
|
||||
set_env: HashMap::new(),
|
||||
extensions: HashMap::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user