Skip to content

Commit d66e7dc

Browse files
committed
refactor publishing
1 parent 4e00f37 commit d66e7dc

File tree

15 files changed

+276
-227
lines changed

15 files changed

+276
-227
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
/generate/missing-tests.json
2626
/binding.gyp
2727

28-
28+
.justAnInstall
2929
*.log
3030
.DS_STORE
3131
.idea

.npmignore

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
/build/
21
/example/
32
/examples/
3+
/guides/
44
/test/
5-
/vendor/Release/
6-
7-
/generate/output
8-
/generate/**/*.json
9-
!/generate/input/*.json
105

116
.astylerc
127
.editorconfig
@@ -15,7 +10,6 @@
1510
.jshintrc
1611
.travis.yml
1712
appveyor.yml
18-
.didntcomefromthenpmregistry
1913

2014
*.vcxproj
2115
*.filters

generate/index.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,32 @@
11
var generateJson = require("./scripts/generateJson");
22
var generateNativeCode = require("./scripts/generateNativeCode");
33
var generateMissingTests = require("./scripts/generateMissingTests");
4+
var Promise = require("nodegit-promise");
45

56
module.exports = function generate() {
6-
generateJson();
7-
generateNativeCode();
8-
generateMissingTests();
7+
console.info("[nodegit] Generating code.");
8+
9+
return generateJson()
10+
.then(function() {
11+
console.info("[nodegit] Generated output JSON.");
12+
return Promise.all([
13+
generateNativeCode().then(function() {
14+
console.info("[nodegit] Generated native code.");
15+
}),
16+
generateMissingTests().then(function() {
17+
console.info("[nodegit] Generated missing tests.");
18+
})
19+
]);
20+
})
21+
.catch(function(reason) {
22+
console.error("[nodegit] Error generating code.");
23+
return Promise.reject(reason);
24+
});
925
}
1026

27+
// Invoke method if called from `node generate`.
1128
if (require.main === module) {
12-
module.exports();
29+
module.exports().done(function() {
30+
process.exit(0);
31+
});
1332
}

generate/scripts/generateJson.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,13 @@ var version = require("../../package.json").libgit2.version;
77
var libgit2 = require("../input/v" + version + ".json");
88
var descriptor = require("../input/descriptor.json");
99
var supplement = require("../input/libgit2-supplement.json");
10+
var Promise = require("nodegit-promise");
1011

1112
module.exports = function generateJson() {
13+
var resolve, reject;
14+
var state = new Promise(function() {
15+
resolve = arguments[0]; reject = arguments[1];
16+
});
1217
var helpers = require("./helpers");
1318
_ = require("lodash");
1419
// libgit2's docs aren't complete so we'll add in what they're missing here
@@ -228,9 +233,10 @@ module.exports = function generateJson() {
228233
helpers.filterDocumentation(output);
229234
}
230235

231-
232-
utils.writeFile("output/idefs.json", output);
233-
236+
return new Promise(function(resolve, reject) {
237+
utils.writeFile("output/idefs.json", output);
238+
resolve();
239+
});
234240
};
235241

236242
if (require.main === module) {

generate/scripts/generateMissingTests.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ module.exports = function generateMissingTests() {
5959
return findMissingTest(idef);
6060
});
6161

62-
Promise.all(promises).then(
62+
return Promise.all(promises).then(
6363
function() {
6464
utils.writeFile("output/missing-tests.json", output);
6565
},

generate/scripts/generateNativeCode.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ module.exports = function generateNativeCode() {
9999
});
100100

101101

102-
fse.remove(path.resolve(__dirname, "../../src")).then(function() {
102+
return fse.remove(path.resolve(__dirname, "../../src")).then(function() {
103103
return fse.remove(path.resolve(__dirname, "../../include"));
104104
}).then(function() {
105105
return fse.copy(path.resolve(__dirname, "../templates/manual/"), path.resolve(__dirname, "../../"));

generate/scripts/utils.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,13 @@ var util = {
2121
},
2222

2323
writeFile: function(file, content) {
24-
try {
25-
var file = local(file);
26-
if (typeof content == "object") {
27-
content = JSON.stringify(content, null, 2)
28-
}
29-
30-
fse.ensureFileSync(file);
31-
fse.writeFileSync(file, content);
32-
return true;
33-
}
34-
catch (exception) {
35-
return false;
24+
var file = local(file);
25+
if (typeof content == "object") {
26+
content = JSON.stringify(content, null, 2)
3627
}
28+
29+
fse.ensureFileSync(file);
30+
fse.writeFileSync(file, content);
3731
},
3832

3933
titleCase: function(str) {

lifecycleScripts/checkPrepared.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ function checkVendor(name, skipVersion) {
4747
}
4848
module.exports.checkVendor = checkVendor;
4949

50+
function checkVendorVersioned(name) {
51+
return checkVendor(name, false);
52+
}
53+
module.exports.checkVendorVersioned = checkVendorVersioned;
54+
55+
function checkVendorAnyVersion(name) {
56+
return checkVendor(name, true);
57+
}
58+
module.exports.checkVendorAnyVersion = checkVendorAnyVersion;
59+
5060
function checkGenerated() {
5161
return Promise.all([
5262
checkExists("lib/nodegit.js"),

lifecycleScripts/clean.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var fse = require("fs-extra");
22
var path = require("path");
33
var npm = require("npm");
44
var Promise = require("nodegit-promise");
5+
var promisify = require("promisify-node");
56

67
var rooted = path.join.bind(path, __dirname, "..");
78
if (fse.existsSync(rooted(".didntcomefromthenpmregistry"))) {

lifecycleScripts/compile.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
var promisify = require("promisify-node");
2+
var Promise = require("nodegit-promise");
3+
var path = require("path");
4+
var fs = require("fs");
5+
6+
var whichNativeNodish = require("which-native-nodish");
7+
var spinner = new require("node-spinner")();
8+
spinner.set('|/-\\');
9+
10+
var exec = promisify(function(command, opts, callback) {
11+
return require("child_process").exec(command, opts, callback);
12+
});
13+
14+
module.exports = function() {
15+
return whichNativeNodish("..")
16+
.then(function(results) {
17+
var type = "node";
18+
if (results.nwVersion) {
19+
type = "nw.js";
20+
}
21+
else if (results.asVersion) {
22+
type = "atom-shell";
23+
}
24+
console.info("[nodegit] Building native " + type + " module");
25+
26+
spinner.reset();
27+
spin();
28+
var interval = setInterval(spin, 250);
29+
30+
var opts = {
31+
cwd: ".",
32+
maxBuffer: Number.MAX_VALUE
33+
};
34+
35+
var prefix = "";
36+
var target = "";
37+
var debug = (process.env.BUILD_DEBUG ? " --debug" : "");
38+
var builder = "pangyp";
39+
var distUrl = "";
40+
if (results.asVersion) {
41+
prefix = (process.platform == "win32" ?
42+
"SET HOME=%HOME%\\.atom-shell-gyp&& " :
43+
"HOME=~/.atom-shell-gyp");
44+
45+
target = "--target=" + results.asVersion;
46+
47+
distUrl = "--dist-url=https://gh-contractor-zcbenz.s3." +
48+
"amazonaws.com/atom-shell/dist";
49+
}
50+
else if (results.nwVersion) {
51+
builder = "nw-gyp";
52+
target = "--target=" + results.nwVersion;
53+
}
54+
return exec("npm install nan " + builder)
55+
.then(function() {
56+
builder = path.resolve(".", "node_modules", ".bin", builder);
57+
builder = builder.replace(/\s/g, "\\$&");
58+
var cmd = [prefix, builder, "rebuild", target, debug, distUrl]
59+
.join(" ").trim();
60+
61+
return exec(cmd, opts);
62+
})
63+
.then(function() {
64+
if (interval) {
65+
clearInterval(interval);
66+
process.stdout.write('\r');
67+
}
68+
console.info("[nodegit] Compilation complete.");
69+
console.info("[nodegit] Completed installation successfully.");
70+
},
71+
function(reason) {
72+
if (interval) {
73+
clearInterval(interval);
74+
process.stdout.write('\r');
75+
}
76+
return Promise.reject(reason);
77+
});
78+
});
79+
};
80+
81+
function spin() {
82+
process.stdout.write('\r \033[36mbuilding\033[m ' + spinner.next());
83+
}

0 commit comments

Comments
 (0)