mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-06 02:35:19 +08:00
Those classes shouldn't be tied to termux environment like variables, interpreters and working directory since commands may need to be executed with a different environment like android's or with a different logic. Now both classes use the ShellEnvironmentClient interface to dynamically get the environment to be used which currently for Termux's case is implemented by TermuxShellEnvironmentClient which is just a wrapper for TermuxShellUtils since later implements static functions.
56 lines
1.6 KiB
Java
56 lines
1.6 KiB
Java
package com.termux.shared.shell;
|
|
|
|
import com.termux.terminal.TerminalBuffer;
|
|
import com.termux.terminal.TerminalEmulator;
|
|
import com.termux.terminal.TerminalSession;
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
public class ShellUtils {
|
|
|
|
public static int getPid(Process p) {
|
|
try {
|
|
Field f = p.getClass().getDeclaredField("pid");
|
|
f.setAccessible(true);
|
|
try {
|
|
return f.getInt(p);
|
|
} finally {
|
|
f.setAccessible(false);
|
|
}
|
|
} catch (Throwable e) {
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
public static String getExecutableBasename(String executable) {
|
|
if (executable == null) return null;
|
|
int lastSlash = executable.lastIndexOf('/');
|
|
return (lastSlash == -1) ? executable : executable.substring(lastSlash + 1);
|
|
}
|
|
|
|
public static String getTerminalSessionTranscriptText(TerminalSession terminalSession, boolean linesJoined, boolean trim) {
|
|
if (terminalSession == null) return null;
|
|
|
|
TerminalEmulator terminalEmulator = terminalSession.getEmulator();
|
|
if (terminalEmulator == null) return null;
|
|
|
|
TerminalBuffer terminalBuffer = terminalEmulator.getScreen();
|
|
if (terminalBuffer == null) return null;
|
|
|
|
String transcriptText;
|
|
|
|
if (linesJoined)
|
|
transcriptText = terminalBuffer.getTranscriptTextWithFullLinesJoined();
|
|
else
|
|
transcriptText = terminalBuffer.getTranscriptTextWithoutJoinedLines();
|
|
|
|
if (transcriptText == null) return null;
|
|
|
|
if (trim)
|
|
transcriptText = transcriptText.trim();
|
|
|
|
return transcriptText;
|
|
}
|
|
|
|
}
|