mirror of
https://github.com/tmate-io/tmate.git
synced 2024-11-08 09:14:22 +01:00
Add -F to if-shell to allow it to be used to check for format or option
values rather than executing a command.
This commit is contained in:
parent
575fd1e322
commit
54ca7b230d
@ -37,8 +37,8 @@ void cmd_if_shell_free(void *);
|
||||
|
||||
const struct cmd_entry cmd_if_shell_entry = {
|
||||
"if-shell", "if",
|
||||
"bt:", 2, 3,
|
||||
"[-b] " CMD_TARGET_PANE_USAGE " shell-command command [command]",
|
||||
"bFt:", 2, 3,
|
||||
"[-bF] " CMD_TARGET_PANE_USAGE " shell-command command [command]",
|
||||
0,
|
||||
cmd_if_shell_exec
|
||||
};
|
||||
@ -56,7 +56,8 @@ cmd_if_shell_exec(struct cmd *self, struct cmd_q *cmdq)
|
||||
{
|
||||
struct args *args = self->args;
|
||||
struct cmd_if_shell_data *cdata;
|
||||
char *shellcmd;
|
||||
char *shellcmd, *cmd, *cause;
|
||||
struct cmd_list *cmdlist;
|
||||
struct client *c;
|
||||
struct session *s = NULL;
|
||||
struct winlink *wl = NULL;
|
||||
@ -84,6 +85,26 @@ cmd_if_shell_exec(struct cmd *self, struct cmd_q *cmdq)
|
||||
shellcmd = format_expand(ft, args->argv[0]);
|
||||
format_free(ft);
|
||||
|
||||
if (args_has(args, 'F')) {
|
||||
cmd = NULL;
|
||||
if (*shellcmd != '0' && *shellcmd != '\0')
|
||||
cmd = args->argv[1];
|
||||
else if (args->argc == 3)
|
||||
cmd = args->argv[2];
|
||||
if (cmd == NULL)
|
||||
return (CMD_RETURN_NORMAL);
|
||||
if (cmd_string_parse(cmd, &cmdlist, NULL, 0, &cause) != 0) {
|
||||
if (cause != NULL) {
|
||||
cmdq_error(cmdq, "%s", cause);
|
||||
free(cause);
|
||||
}
|
||||
return (CMD_RETURN_ERROR);
|
||||
}
|
||||
cmdq_run(cmdq, cmdlist);
|
||||
cmd_list_free(cmdlist);
|
||||
return (CMD_RETURN_NORMAL);
|
||||
}
|
||||
|
||||
cdata = xmalloc(sizeof *cdata);
|
||||
cdata->cmd_if = xstrdup(args->argv[1]);
|
||||
if (args->argc == 3)
|
||||
|
13
tmux.1
13
tmux.1
@ -3589,7 +3589,7 @@ Miscellaneous commands are as follows:
|
||||
.It Ic clock-mode Op Fl t Ar target-pane
|
||||
Display a large clock.
|
||||
.It Xo Ic if-shell
|
||||
.Op Fl b
|
||||
.Op Fl bF
|
||||
.Op Fl t Ar target-pane
|
||||
.Ar shell-command command
|
||||
.Op Ar command
|
||||
@ -3602,7 +3602,9 @@ if
|
||||
returns success or the second
|
||||
.Ar command
|
||||
otherwise.
|
||||
Before being executed, shell-command is expanded using the rules specified in the
|
||||
Before being executed,
|
||||
.Ar shell-command
|
||||
is expanded using the rules specified in the
|
||||
.Sx FORMATS
|
||||
section, including those relevant to
|
||||
.Ar target-pane .
|
||||
@ -3610,6 +3612,13 @@ With
|
||||
.Fl b ,
|
||||
.Ar shell-command
|
||||
is run in the background.
|
||||
.Pp
|
||||
If
|
||||
.Fl F
|
||||
is given,
|
||||
.Ar shell-command
|
||||
is not executed but considered success if neither empty nor zero (after formats
|
||||
are expanded).
|
||||
.It Ic lock-server
|
||||
.D1 (alias: Ic lock )
|
||||
Lock each client individually by running the command specified by the
|
||||
|
Loading…
Reference in New Issue
Block a user