UNPKG

1.99 kBJavaScriptView Raw
1(function() {
2 var app, cp, dmg, download, exec, fs, log, mount, open, path, pkg, product, src, unpack, version;
3
4 fs = require('fs-extra');
5
6 download = require('download');
7
8 path = require('path');
9
10 mount = require('dmg');
11
12 cp = require('child_process');
13
14 exec = cp.exec;
15
16 log = console.log;
17
18 pkg = require('../package.json');
19
20 version = pkg.version;
21
22 product = pkg.productName;
23
24 app = "/Applications/" + product + ".app";
25
26 dmg = __dirname + "/" + product + "-" + version + ".dmg";
27
28 open = function() {
29 var args;
30 log("open " + app);
31 args = process.argv.slice(2).join(" ");
32 return exec(("open -a " + app + " ") + args);
33 };
34
35 unpack = function() {
36 log("mounting " + dmg + " ...");
37 return mount.mount(dmg, function(err, dmgPath) {
38 var src;
39 if (err) {
40 return log(err);
41 } else {
42 src = path.join(dmgPath, product + ".app");
43 log("copy " + src + " to " + app);
44 return fs.copy(src, app, (function(_this) {
45 return function(err) {
46 if (err != null) {
47 return log(err);
48 } else {
49 log("unmounting " + dmgPath + " ...");
50 return mount.unmount(dmgPath, function(err) {
51 if (err != null) {
52 return log(err);
53 } else {
54 return open();
55 }
56 });
57 }
58 };
59 })(this));
60 }
61 });
62 };
63
64 if (!fs.existsSync(app)) {
65 log('app not found ...');
66 if (!fs.existsSync(dmg)) {
67 src = "https://github.com/monsterkodi/" + product + "/releases/download/v" + version + "/" + product + "-" + version + ".dmg";
68 log("downloading from github (this might take a while) ...");
69 log(src);
70 download(src, __dirname).then((function(_this) {
71 return function() {
72 return unpack();
73 };
74 })(this));
75 } else {
76 unpack();
77 }
78 } else {
79 open();
80 }
81
82}).call(this);