Skip to content

Commit

Permalink
feat: log output from external command
Browse files Browse the repository at this point in the history
  • Loading branch information
jogerj committed Oct 21, 2023
1 parent adb742d commit 0216ac3
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 8 deletions.
26 changes: 23 additions & 3 deletions src/main/java/com/tonikelope/megabasterd/MainPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import static java.awt.event.WindowEvent.WINDOW_CLOSING;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
import static java.lang.Integer.parseInt;
Expand All @@ -46,6 +48,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import static java.util.concurrent.Executors.newCachedThreadPool;
Expand Down Expand Up @@ -872,10 +875,27 @@ public static synchronized void run_external_command() {
if (_run_command && (LAST_EXTERNAL_COMMAND_TIMESTAMP == -1 || LAST_EXTERNAL_COMMAND_TIMESTAMP + RUN_COMMAND_TIME * 1000 < System.currentTimeMillis())) {

if (_run_command_path != null && !_run_command_path.equals("")) {
Logger logger = Logger.getLogger(MainPanel.class.getName());
try {
Runtime.getRuntime().exec(_run_command_path);
} catch (IOException ex) {
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
StringTokenizer st = new StringTokenizer(_run_command_path);
String[] cmdarray = new String[st.countTokens()];
for (int i = 0; st.hasMoreTokens(); i++)
cmdarray[i] = st.nextToken();

ProcessBuilder pb = new ProcessBuilder(cmdarray)
.redirectErrorStream(true);
Process pr = pb.start();

BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
logger.log(Level.INFO, "[Command output] " + line);
}
pr.waitFor();
in.close();
pr.destroy();
} catch (IOException | InterruptedException ex) {
logger.log(Level.SEVERE, ex.getMessage());
}

LAST_EXTERNAL_COMMAND_TIMESTAMP = System.currentTimeMillis();
Expand Down
28 changes: 23 additions & 5 deletions src/main/java/com/tonikelope/megabasterd/SettingsDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@
import java.awt.Frame;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Files;
Expand All @@ -38,6 +40,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
Expand All @@ -54,7 +57,6 @@
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.SpinnerNumberModel;
import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;

Expand Down Expand Up @@ -2907,13 +2909,29 @@ private void limit_upload_speed_checkboxStateChanged(javax.swing.event.ChangeEve

private void run_command_test_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_test_buttonActionPerformed
// TODO add your handling code here:
Logger logger = Logger.getLogger(MiscTools.class.getName());

if (run_command_textbox.getText() != null && !"".equals(run_command_textbox.getText().trim())) {

try {
Runtime.getRuntime().exec(run_command_textbox.getText().trim());
} catch (IOException ex) {
Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage());
StringTokenizer st = new StringTokenizer(run_command_textbox.getText().trim());
String[] cmdarray = new String[st.countTokens()];
for (int i = 0; st.hasMoreTokens(); i++)
cmdarray[i] = st.nextToken();

ProcessBuilder pb = new ProcessBuilder(cmdarray)
.redirectErrorStream(true);
Process pr = pb.start();

BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
logger.log(Level.INFO, "[Command output] " + line);
}
pr.waitFor();
in.close();
pr.destroy();
} catch (IOException | InterruptedException ex) {
logger.log(Level.SEVERE, ex.getMessage());
JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
Expand Down

0 comments on commit 0216ac3

Please sign in to comment.