-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathdisassembler.js
More file actions
69 lines (55 loc) · 1.78 KB
/
Copy pathdisassembler.js
File metadata and controls
69 lines (55 loc) · 1.78 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
var minimist = require("minimist"),
chalk = require("chalk"),
path = require("path"),
util = require("../cli/util");
exports.main = (argv, callback) => {
if (!callback)
callback = util.defaultCallback;
// Define arguments
argv = minimist(argv, {
alias: {
out: "o",
debug: "d",
quiet: "q"
},
string: [ "out" ],
boolean: [ "debug", "quiet" ]
});
// Validate arguments
var files = argv._;
if (files.length !== 1) {
util.printLogo("Disassembler");
process.stderr.write([
chalk.bold.white("Disassembles a WebAssembly module to text format."),
"",
" -o, --out Specifies the .wast output file. Defaults to stdout.",
" -d, --debug Prints debug information to stderr.",
" -q, --quiet Suppresses informatory output.",
"",
"usage: " + chalk.bold.cyan("wa-disassemble") + " [options] program.wasm",
""
].join("\n"));
process.nextTick(() => {
callback(Error("usage"));
});
return 1;
}
var platform = util.checkPlatform(callback);
if (!platform)
return 3;
var bindir = path.join("tools", "bin", platform);
if (!argv.quiet)
util.printHeading("Disassembling on " + platform + " ...");
var file = path.normalize(files[0]),
out = argv.out && path.normalize(argv.out) || undefined;
util.run(path.join(util.basedir, bindir, "wasm-dis"), [
file,
[ argv.debug && "-d" || undefined ],
[ "-o", out ]
], argv).then(finish, callback);
function finish() {
if (!argv.quiet)
util.defaultSuccess();
callback(null, out);
}
};