Changeset 5996
- Timestamp:
- Aug 26, 2020, 7:45:23 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/net.sf.basedb.opengrid/trunk/src/net/sf/basedb/opengrid/ScriptBuilder.java
r4270 r5996 1 1 package net.sf.basedb.opengrid; 2 2 3 import java.util.Arrays; 4 import java.util.Collection; 3 5 import java.util.HashMap; 6 import java.util.HashSet; 4 7 import java.util.Map; 8 import java.util.Set; 5 9 6 10 … … 18 22 private Map<String, String> bgProcesses; 19 23 24 private int indentLevel; 25 private String indentString; 26 private Set<String> autoIndent; 27 private Set<String> autoUnindent; 20 28 21 29 /** … … 39 47 this.script = new StringBuilder(); 40 48 this.logFolder = logFolder == null ? "${WD}" : logFolder; 49 this.indentLevel = 0; 50 this.indentString = ""; 51 this.autoIndent = new HashSet<String>(Arrays.asList("if", "elif", "else", "case", "while", "until", "for")); 52 this.autoUnindent = new HashSet<String>(Arrays.asList("elif", "else", "fi", "esac", "done")); 41 53 } 42 54 … … 47 59 public void comment(String comment) 48 60 { 49 script.append( "# ").append(comment).append("\n");61 script.append(indentString).append("# ").append(comment).append("\n"); 50 62 } 51 63 … … 64 76 public void time(String comment) 65 77 { 66 script.append( "echo \"`date +%H:%M:%S` ").append(comment).append("\" >> ").append(logFolder).append("/time.log\n");78 script.append(indentString).append("echo \"`date +%H:%M:%S` ").append(comment).append("\" >> ").append(logFolder).append("/time.log\n"); 67 79 } 68 80 … … 74 86 public void progress(int progress, String status) 75 87 { 76 script.append( "echo ").append(progress).append(" \"").append(status).append("\" > ").append(logFolder).append("/progress\n");88 script.append(indentString).append("echo ").append(progress).append(" \"").append(status).append("\" > ").append(logFolder).append("/progress\n"); 77 89 } 78 90 … … 82 94 public void cmd(String cmd) 83 95 { 84 script.append(cmd).append("\n"); 96 checkIndent(cmd, autoUnindent, -1); 97 script.append(indentString).append(cmd).append("\n"); 98 checkIndent(cmd, autoIndent, 1); 99 } 100 101 /** 102 If cmd starts with one of the given keys, apply delta to the 103 indentation level and create a new indent-string. 104 */ 105 private void checkIndent(String cmd, Collection<String> keys, int delta) 106 { 107 for (String k : keys) 108 { 109 if (cmd.startsWith(k)) 110 { 111 indentLevel = Math.max(0, indentLevel+delta); 112 indentString = " ".repeat(indentLevel*3); 113 return; 114 } 115 } 85 116 } 86 117 … … 105 136 nextBgPid++; 106 137 bgProcesses.put(pid, cmd); 107 script.append( cmd).append(" &\n");108 script.append( pid).append("=$!\n");138 script.append(indentString).append(cmd).append(" &\n"); 139 script.append(indentString).append(pid).append("=$!\n"); 109 140 return pid; 110 141 } … … 142 173 } 143 174 bgProcesses.remove(pid); 144 script.append( "wait $").append(pid).append("\n");175 script.append(indentString).append("wait $").append(pid).append("\n"); 145 176 } 146 177
Note: See TracChangeset
for help on using the changeset viewer.