-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
75 lines (67 loc) · 2.37 KB
/
index.js
File metadata and controls
75 lines (67 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
var path = require("path");
const vbspretty = require('vbspretty');
const wsf2json = require('wsf2json');
const newline = path.sep === '/' ? '\n' : '\r\n';
const extractVbsFromWsfJSON = (jobs) => {
let vbsOut = `' ======== START ======== ${newline}`
vbsOut += jobs.reduce((vbs, job)=>{
let { id, script, runtime } = job;
vbs += newline;
if (id) {
vbs += `' ================================== Job: ${id} ================================== ${newline}`
}
if (script) {
vbs += script.reduce((s, scr)=>{
let {type, src, language, value} = scr;
if (type) {
s += `' ================= ${type}`
if (type === 'src') {
s += ` : ${src}`
} else {
s += ` script`
}
s += ` ================= ${newline}`
}
if (language.toLowerCase() === "vbscript" && value) {
s += value;
}
return s;
}, '');
}
//Inject arguments usage
if (runtime) {
let usage = runtime.reduce((str, param)=>{
let {name, helpstring} = param;
str += `Wscript.Echo "/${name}: ${helpstring}"\r\n`;
return str;
},'');
vbs = vbs.replace('WScript.Arguments.ShowUsage', usage);
}
return vbs;
},`' vbs file generated from wsf file using wsf2vbs npm package ${newline}`);
return vbsOut + ` ${newline}' ======== END ========`
}
const prettify = (vbs) => {
var sourcePretty = vbspretty({
level: 0,
indentChar: '\t',
breakLineChar: '\r\n',
breakOnSeperator: false,
removeComments: false,
source: vbs,
});
return sourcePretty;
}
const extract = (wsfPath='', debug) => {
return wsf2json.parseWSF(wsfPath, debug).then((json) => {
if (debug) console.log('json output', json);
return prettify(extractVbsFromWsfJSON(json));
})
}
const extractFromStr = (wsfStr='', baseDir, debug) => {
return wsf2json.parseWSFStr(wsfStr, baseDir, debug).then((json)=> {
if (debug) console.log('json output', json);
return prettify(extractVbsFromWsfJSON(json));
})
}
module.exports = { extract, extractFromStr }