Changed: Maintain terminal session name in ExecutionCommand.sessionName in addition to TerminalSession.mSessionName

This commit is contained in:
agnostic-apollo
2022-03-18 05:07:46 +05:00
parent 8746db0d22
commit ee32ef0c7e
4 changed files with 31 additions and 9 deletions

View File

@@ -520,12 +520,14 @@ public final class TermuxService extends Service implements AppShell.AppShellCli
*/ */
@Nullable @Nullable
public TermuxSession createTermuxSession(String executablePath, String[] arguments, String stdin, String workingDirectory, boolean isFailSafe, String sessionName) { public TermuxSession createTermuxSession(String executablePath, String[] arguments, String stdin, String workingDirectory, boolean isFailSafe, String sessionName) {
return createTermuxSession(new ExecutionCommand(getNextExecutionId(), executablePath, arguments, stdin, workingDirectory, Runner.TERMINAL_SESSION.getName(), isFailSafe), sessionName); ExecutionCommand executionCommand = new ExecutionCommand(getNextExecutionId(), executablePath, arguments, stdin, workingDirectory, Runner.TERMINAL_SESSION.getName(), isFailSafe);
executionCommand.sessionName = sessionName;
return createTermuxSession(executionCommand);
} }
/** Create a {@link TermuxSession}. */ /** Create a {@link TermuxSession}. */
@Nullable @Nullable
public synchronized TermuxSession createTermuxSession(ExecutionCommand executionCommand, String sessionName) { public synchronized TermuxSession createTermuxSession(ExecutionCommand executionCommand) {
if (executionCommand == null) return null; if (executionCommand == null) return null;
Logger.logDebug(LOG_TAG, "Creating \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession"); Logger.logDebug(LOG_TAG, "Creating \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession");
@@ -542,7 +544,7 @@ public final class TermuxService extends Service implements AppShell.AppShellCli
// Otherwise if command was manually started by the user like by adding a new terminal session, // Otherwise if command was manually started by the user like by adding a new terminal session,
// then no need to set stdout // then no need to set stdout
executionCommand.terminalTranscriptRows = mProperties.getTerminalTranscriptRows(); executionCommand.terminalTranscriptRows = mProperties.getTerminalTranscriptRows();
TermuxSession newTermuxSession = TermuxSession.execute(this, executionCommand, getTermuxTerminalSessionClient(), this, new TermuxShellEnvironmentClient(), sessionName, executionCommand.isPluginExecutionCommand); TermuxSession newTermuxSession = TermuxSession.execute(this, executionCommand, getTermuxTerminalSessionClient(), this, new TermuxShellEnvironmentClient(), executionCommand.isPluginExecutionCommand);
if (newTermuxSession == null) { if (newTermuxSession == null) {
Logger.logError(LOG_TAG, "Failed to execute new TermuxSession command for:\n" + executionCommand.getCommandIdAndLabelLogString()); Logger.logError(LOG_TAG, "Failed to execute new TermuxSession command for:\n" + executionCommand.getCommandIdAndLabelLogString());
// If the execution command was started for a plugin, then process the error // If the execution command was started for a plugin, then process the error

View File

@@ -345,11 +345,22 @@ public class TermuxTerminalSessionClient extends TermuxTerminalSessionClientBase
if (sessionToRename == null) return; if (sessionToRename == null) return;
TextInputDialogUtils.textInput(mActivity, R.string.title_rename_session, sessionToRename.mSessionName, R.string.action_rename_session_confirm, text -> { TextInputDialogUtils.textInput(mActivity, R.string.title_rename_session, sessionToRename.mSessionName, R.string.action_rename_session_confirm, text -> {
sessionToRename.mSessionName = text; renameSession(sessionToRename, text);
termuxSessionListNotifyUpdated(); termuxSessionListNotifyUpdated();
}, -1, null, -1, null, null); }, -1, null, -1, null, null);
} }
private void renameSession(TerminalSession sessionToRename, String text) {
if (sessionToRename == null) return;
sessionToRename.mSessionName = text;
TermuxService service = mActivity.getTermuxService();
if (service != null) {
TermuxSession termuxSession = service.getTermuxSessionForTerminalSession(sessionToRename);
if (termuxSession != null)
termuxSession.getExecutionCommand().sessionName = text;
}
}
public void addNewSession(boolean isFailSafe, String sessionName) { public void addNewSession(boolean isFailSafe, String sessionName) {
TermuxService service = mActivity.getTermuxService(); TermuxService service = mActivity.getTermuxService();
if (service == null) return; if (service == null) return;

View File

@@ -148,9 +148,12 @@ public class ExecutionCommand {
*/ */
public Integer backgroundCustomLogLevel; public Integer backgroundCustomLogLevel;
/** The session action of foreground commands. */
/** The session action of {@link Runner#TERMINAL_SESSION} commands. */
public String sessionAction; public String sessionAction;
/** The session name of {@link Runner#TERMINAL_SESSION} commands. */
public String sessionName;
/** The command label for the {@link ExecutionCommand}. */ /** The command label for the {@link ExecutionCommand}. */
public String commandLabel; public String commandLabel;
@@ -343,6 +346,9 @@ public class ExecutionCommand {
if (!ignoreNull || executionCommand.sessionAction != null) if (!ignoreNull || executionCommand.sessionAction != null)
logString.append("\n").append(executionCommand.getSessionActionLogString()); logString.append("\n").append(executionCommand.getSessionActionLogString());
if (!ignoreNull || executionCommand.sessionName != null) {
logString.append("\n").append(executionCommand.getSessionNameLogString());
}
if (!ignoreNull || executionCommand.commandIntent != null) if (!ignoreNull || executionCommand.commandIntent != null)
logString.append("\n").append(executionCommand.getCommandIntentLogString()); logString.append("\n").append(executionCommand.getCommandIntentLogString());
@@ -434,6 +440,7 @@ public class ExecutionCommand {
} }
markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("Session Action", executionCommand.sessionAction, "-")); markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("Session Action", executionCommand.sessionAction, "-"));
markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("Session Name", executionCommand.sessionName, "-"));
markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("isPluginExecutionCommand", executionCommand.isPluginExecutionCommand, "-")); markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("isPluginExecutionCommand", executionCommand.isPluginExecutionCommand, "-"));
@@ -524,6 +531,9 @@ public class ExecutionCommand {
return Logger.getSingleLineLogStringEntry("Session Action", sessionAction, "-"); return Logger.getSingleLineLogStringEntry("Session Action", sessionAction, "-");
} }
public String getSessionNameLogString() {
return Logger.getSingleLineLogStringEntry("Session Name", sessionName, "-");
}
public String getCommandDescriptionLogString() { public String getCommandDescriptionLogString() {
return Logger.getSingleLineLogStringEntry("Command Description", commandDescription, "-"); return Logger.getSingleLineLogStringEntry("Command Description", commandDescription, "-");
} }

View File

@@ -54,7 +54,6 @@ public class TermuxSession {
* @param terminalSessionClient The {@link TerminalSessionClient} interface implementation. * @param terminalSessionClient The {@link TerminalSessionClient} interface implementation.
* @param termuxSessionClient The {@link TermuxSessionClient} interface implementation. * @param termuxSessionClient The {@link TermuxSessionClient} interface implementation.
* @param shellEnvironmentClient The {@link ShellEnvironmentClient} interface implementation. * @param shellEnvironmentClient The {@link ShellEnvironmentClient} interface implementation.
* @param sessionName The optional {@link TerminalSession} name.
* @param setStdoutOnExit If set to {@code true}, then the {@link ResultData#stdout} * @param setStdoutOnExit If set to {@code true}, then the {@link ResultData#stdout}
* available in the {@link TermuxSessionClient#onTermuxSessionExited(TermuxSession)} * available in the {@link TermuxSessionClient#onTermuxSessionExited(TermuxSession)}
* callback will be set to the {@link TerminalSession} transcript. The session * callback will be set to the {@link TerminalSession} transcript. The session
@@ -67,7 +66,7 @@ public class TermuxSession {
public static TermuxSession execute(@NonNull final Context context, @NonNull ExecutionCommand executionCommand, public static TermuxSession execute(@NonNull final Context context, @NonNull ExecutionCommand executionCommand,
@NonNull final TerminalSessionClient terminalSessionClient, final TermuxSessionClient termuxSessionClient, @NonNull final TerminalSessionClient terminalSessionClient, final TermuxSessionClient termuxSessionClient,
@NonNull final ShellEnvironmentClient shellEnvironmentClient, @NonNull final ShellEnvironmentClient shellEnvironmentClient,
final String sessionName, final boolean setStdoutOnExit) { final boolean setStdoutOnExit) {
if (executionCommand.workingDirectory == null || executionCommand.workingDirectory.isEmpty()) if (executionCommand.workingDirectory == null || executionCommand.workingDirectory.isEmpty())
executionCommand.workingDirectory = shellEnvironmentClient.getDefaultWorkingDirectoryPath(); executionCommand.workingDirectory = shellEnvironmentClient.getDefaultWorkingDirectoryPath();
if (executionCommand.workingDirectory.isEmpty()) if (executionCommand.workingDirectory.isEmpty())
@@ -132,8 +131,8 @@ public class TermuxSession {
Logger.logDebug(LOG_TAG, "Running \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession"); Logger.logDebug(LOG_TAG, "Running \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession");
TerminalSession terminalSession = new TerminalSession(executionCommand.executable, executionCommand.workingDirectory, executionCommand.arguments, environment, executionCommand.terminalTranscriptRows, terminalSessionClient); TerminalSession terminalSession = new TerminalSession(executionCommand.executable, executionCommand.workingDirectory, executionCommand.arguments, environment, executionCommand.terminalTranscriptRows, terminalSessionClient);
if (sessionName != null) { if (executionCommand.sessionName != null) {
terminalSession.mSessionName = sessionName; terminalSession.mSessionName = executionCommand.sessionName;
} }
return new TermuxSession(terminalSession, executionCommand, termuxSessionClient, setStdoutOnExit); return new TermuxSession(terminalSession, executionCommand, termuxSessionClient, setStdoutOnExit);