diff --git a/scriptcontrol.js b/scriptcontrol.js new file mode 100644 index 0000000..b83c28c --- /dev/null +++ b/scriptcontrol.js @@ -0,0 +1,71 @@ +// scriptcontrol.js +// The Simplified entrypoint for win32com (based on MSScriptControl.ScriptControl) + +var workingDirectory = ""; + +if (typeof CreateObject === "undefined") { + var CreateObject = function(progId, serverName, callback) { + var progIds = (progId instanceof Array ? progId : [progId]); + + for (var i = 0; i < progIds.length; i++) { + try { + var obj = CreateObject.make(progIds[i], serverName); + if (typeof callback === "function") { + callback(obj, progIds[i]); + } + return obj; + } catch (e) { + console.error(e.message); + }; + } + }; + CreateObject.make = function(p, s) { + if (typeof WScript !== "undefined") { + return WScript.CreateObject(p, s); + } else if (typeof ActiveXObject !== "undefined") { + return new ActiveXObject(p); + } + }; +} + +function readFile(FN, charset) { + if(typeof(charset) === "undefined") { + var FSO = CreateObject("Scripting.FileSystemObject"); + var T = null; + try { + var TS = FSO.OpenTextFile(FN, 1); + if (TS.AtEndOfStream) return ""; + T = TS.ReadAll(); + TS.Close(); + TS = null; + } catch (e) { + console.log("ERROR! " + e.number + ", " + e.description + ", FN=" + FN); + } + FSO = null; + return T; + } else { + var fsT = CreateObject("ADODB.Stream"); + fsT.CharSet = charset; + fsT.Open(); + fsT.LoadFromFile(FN); + T = fsT.ReadText(); + fsT = null; + return T; + } +} + +function setWorkingDirectory(directory) { + workingDirectory = directory; +} + +function run(targetName) { + var w = CreateObject("WScript.Shell") + , stdOutPath = "tmp\\stdout.txt" + , stdErrPath = "tmp\\stderr.txt" + ; + if (workingDirectory != "") { + w.CurrentDirectory = workingDirectory; + } + w.Run("%comspec% /c (cscript //NoLogo app.js " + targetName + ") 1> " + stdOutPath + " 2> " + stdErrPath, 0, true); + return readFile(stdOutPath, "utf-8"); +}