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);
|