refactor: remove remote sequence CLI command
Collapse remote input to `tvctl remote key` so single-key and multi-key usage share one public command while keeping the paced daemon path underneath.
This commit is contained in:
+41
-39
@@ -176,14 +176,9 @@ pub enum AppCommand {
|
||||
pub enum RemoteCommand {
|
||||
/// Send a single normalized key.
|
||||
Key {
|
||||
/// Key name such as `home`, `down`, or `literal:abc`.
|
||||
key: String,
|
||||
},
|
||||
/// Send multiple normalized keys in order.
|
||||
Sequence {
|
||||
/// Key names such as `home down select`.
|
||||
/// One or more key names such as `home`, `down`, or `literal:abc`.
|
||||
keys: Vec<String>,
|
||||
/// Delay between keys in milliseconds.
|
||||
/// Delay between keys in milliseconds when sending more than one key.
|
||||
#[arg(long, default_value_t = DEFAULT_REMOTE_SEQUENCE_DELAY_MS)]
|
||||
delay_ms: u64,
|
||||
},
|
||||
@@ -442,40 +437,41 @@ async fn handle_app_command(cli: &Cli, command: AppCommand) -> Result<(), CliErr
|
||||
|
||||
async fn handle_remote_command(cli: &Cli, command: RemoteCommand) -> Result<(), CliError> {
|
||||
match command {
|
||||
RemoteCommand::Key { key } => {
|
||||
let response = send_request(
|
||||
load_socket_path().await?,
|
||||
&DaemonRequest::SendKey {
|
||||
device: cli.device.clone(),
|
||||
key: parse_tv_key(&key)?,
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
let result: ActionResult = parse_response_data(response)?;
|
||||
render(cli, &result, || result.detail.clone())
|
||||
}
|
||||
RemoteCommand::Sequence { keys, delay_ms } => {
|
||||
RemoteCommand::Key { keys, delay_ms } => {
|
||||
if keys.is_empty() {
|
||||
return Err(CliError::new(
|
||||
"At least one key is required for `tvctl remote sequence`.",
|
||||
"Pass one or more keys such as `home down select`.",
|
||||
"At least one key is required for `tvctl remote key`.",
|
||||
"Pass one or more keys such as `home` or `home down select`.",
|
||||
));
|
||||
}
|
||||
let parsed = keys
|
||||
.iter()
|
||||
.map(|key| parse_tv_key(key))
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
let response = send_request(
|
||||
load_socket_path().await?,
|
||||
&DaemonRequest::SendSequence {
|
||||
device: cli.device.clone(),
|
||||
keys: parsed,
|
||||
delay_ms,
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
let result: ActionResult = parse_response_data(response)?;
|
||||
render(cli, &result, || result.detail.clone())
|
||||
if keys.len() == 1 {
|
||||
let response = send_request(
|
||||
load_socket_path().await?,
|
||||
&DaemonRequest::SendKey {
|
||||
device: cli.device.clone(),
|
||||
key: parse_tv_key(&keys[0])?,
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
let result: ActionResult = parse_response_data(response)?;
|
||||
render(cli, &result, || result.detail.clone())
|
||||
} else {
|
||||
let parsed = keys
|
||||
.iter()
|
||||
.map(|key| parse_tv_key(key))
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
let response = send_request(
|
||||
load_socket_path().await?,
|
||||
&DaemonRequest::SendSequence {
|
||||
device: cli.device.clone(),
|
||||
keys: parsed,
|
||||
delay_ms,
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
let result: ActionResult = parse_response_data(response)?;
|
||||
render(cli, &result, || result.detail.clone())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -674,9 +670,15 @@ async fn daemon_stop(cli: &Cli) -> Result<(), CliError> {
|
||||
async fn daemon_status(cli: &Cli) -> Result<(), CliError> {
|
||||
if let Some(status) = daemon_status_payload().await {
|
||||
return render(cli, &status, || {
|
||||
let http = if status.http_enabled {
|
||||
format!("{}:{}", status.http_host, status.http_port)
|
||||
} else {
|
||||
"disabled".to_string()
|
||||
};
|
||||
let default_device = status.default_device.as_deref().unwrap_or("none");
|
||||
format!(
|
||||
"tvctld is running on {} with {} known device(s).",
|
||||
status.socket, status.device_count
|
||||
"tvctld is running.\nPID: {}\nSocket: {}\nHTTP: {}\nKnown Devices: {}\nDefault Device: {}",
|
||||
status.pid, status.socket, http, status.device_count, default_device
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user