artdaq_node_server  v1_01_01
Utils.js
1 
2 // ReSharper disable PossiblyUnassignedProperty
3 // ReSharper disable InconsistentNaming
4 var Emitter = require("events").EventEmitter;
5 var fs = require("fs");
6 var child_process = require("child_process");
7 var Utils = new Emitter();
8 // ReSharper restore InconsistentNaming
9 // ReSharper restore PossiblyUnassignedProperty
10 
16 Utils.Uniquify = function (name) {
17  if (name.search(/[\d]+/) >= 0) {
18  var lastNumber = name.replace(/.*?([\d]+)[^\d]*$/g, "$1");
19  console.log("Last number in string: " + lastNumber);
20  var len = lastNumber.length;
21  lastNumber++;
22  for (var j = ("" + lastNumber).length; j < len; j++) {
23  lastNumber = "0" + lastNumber;
24  }
25  console.log("After replacement: " + lastNumber);
26  name = name.replace(/(.*?)([\d]+)([^\d]*)$/g, "$1" + lastNumber + "$3");
27  } else {
28  name = name + "_" + Date.now();
29  }
30  return name;
31 };
32 
33 
39 Utils.ExecSync = function (command) {
40  // Run the command in a subshell
41  child_process.exec(command + " 2>&1 1>output && echo done >done || echo fail >done");
42 
43  // Block the event loop until the command has executed.
44  var output = "";
45  while (!fs.existsSync("done")) {
46  if (fs.existsSync("output")) {
47  var outputDiff = "" + fs.readFileSync("output");
48  fs.unlinkSync("output");
49  console.log(outputDiff);
50  output += outputDiff;
51  }
52  }
53 
54  if (fs.existsSync("output")) {
55  // Read the output
56  output += fs.readFileSync("output");
57  fs.unlinkSync("output");
58  }
59 
60  // Delete status file
61  fs.unlinkSync("done");
62 
63  return output;
64 }
65 
71 Utils.MoveFileSync = function (oldPath, newPath) {
72  if (fs.existsSync(newPath)) {
73  fs.unlinkSync(newPath);
74  }
75 
76  fs.renameSync(oldPath, newPath);
77 }
78 
79 
85 Utils.ValidatePath = function (path) {
86  var re = /^[a-zA-Z0-9\-_]+$/;
87  if (!path.match(re)) {
88  return false;
89  }
90 
91  return true;
92 }
93 
100  Utils.ContainsString = function (arr, val) {
101  for (var i = 0; i < arr.length; i++) {
102  if (arr[i] === val) {
103  return i;
104  }
105  }
106  return -1;
107 }
108 
116 Utils.ContainsName = function (arr, val, name) {
117  for (var i = 0; i < arr.length; i++) {
118  //console.log("Checking if " + arr[i][name] + " is equal to " + val);
119  if (arr[i][name] === val) {
120  return i;
121  }
122  }
123  return -1;
124 }
125 
126 module.exports = Utils;