Skip to content

Commit ab2b9d9

Browse files
committed
Messing with emscripten'd libgit2
1 parent 57aeb86 commit ab2b9d9

File tree

12 files changed

+3908
-3
lines changed

12 files changed

+3908
-3
lines changed

dist.js

Lines changed: 3583 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

generate/scripts/generateNativeCode.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ module.exports = function generateNativeCode() {
4646
binding: utils.readFile("templates/templates/binding.gyp"),
4747
nodegitCC: utils.readFile("templates/templates/nodegit.cc"),
4848
nodegitJS: utils.readFile("templates/templates/nodegit.js"),
49+
nodegitBrowserJS: utils.readFile("templates/templates/nodegit_browser.js"),
50+
emscripten: utils.readFile("templates/templates/emscripten.js"),
4951
enums: utils.readFile("templates/templates/enums.js")
5052
};
5153

@@ -108,6 +110,9 @@ module.exports = function generateNativeCode() {
108110
utils.writeFile("../binding.gyp", beautify(templates.binding.render(enabled)));
109111
utils.writeFile("../src/nodegit.cc", templates.nodegitCC.render(enabled));
110112
utils.writeFile("../lib/nodegit.js", beautify(templates.nodegitJS.render(enabled)));
113+
utils.writeFile("../build/emscripten/nodegit.js", beautify(templates.emscripten.render(enabled)));
114+
utils.writeFile("../lib/nodegit-browser.js", beautify(templates.nodegitBrowserJS.render(enabled)));
115+
111116
// Write out all the classes.
112117
enabled.forEach(function(idef) {
113118
try {
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Load Emscripten build.
2+
require('../../vendor/libgit2.min');
3+
4+
{% each . as idef %}
5+
{% if idef.type != "enum" %}
6+
function {{ idef.jsClassName }}() {
7+
8+
}
9+
10+
{% each idef.functions as fn %}
11+
{% if fn.isPrototypeMethod %}
12+
{{ idef.jsClassName }}.prototype.{{fn.jsFunctionName}} = function() {
13+
var retVal = _{{ fn.cFunctionName }}();
14+
{%--
15+
<% descriptor.args.forEach(function(arg) { %>
16+
"<%- (arg.jsClassName || "").toLowerCase() %>",
17+
<% }); %>
18+
], [
19+
<% if (descriptor.args && descriptor.args[0].isReturn) { %>
20+
<%- descriptor.args[0].name %>,
21+
<% } %>
22+
<%- args(descriptor) %>
23+
]);
24+
--%}
25+
};
26+
27+
{% endif %}
28+
{% endeach %}
29+
{% endif %}
30+
{% endeach %}
31+
32+
33+
{%--
34+
{% if fn.isAsync %}
35+
36+
{% if fn.isPrototypeMethod %}
37+
38+
var _{{ idef.jsClassName }}_{{ fn.jsFunctionName}}
39+
= _{{ idef.jsClassName }}.prototype.{{ fn.jsFunctionName }};
40+
_{{ idef.jsClassName }}.prototype.{{ fn.jsFunctionName }}
41+
= promisify(_{{ idef.jsClassName }}_{{ fn.jsFunctionName}});
42+
43+
{% else %}
44+
45+
var _{{ idef.jsClassName }}_{{ fn.jsFunctionName}}
46+
= _{{ idef.jsClassName }}.{{ fn.jsFunctionName }};
47+
_{{ idef.jsClassName }}.{{ fn.jsFunctionName }}
48+
= promisify(_{{ idef.jsClassName }}_{{ fn.jsFunctionName}});
49+
50+
{% endif %}
51+
--%}

generate/templates/templates/nodegit.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,14 @@ var rawApi;
77
try {
88
rawApi = require("../build/Release/nodegit");
99
}
10-
catch (e) {
10+
catch (unhandledException) {
1111
/* istanbul ignore next */
12-
rawApi = require("../build/Debug/nodegit");
12+
try {
13+
rawApi = require("../build/Debug/nodegit");
14+
}
15+
catch (unhandledException) {
16+
rawApi = require("../build/emscripten/nodegit");
17+
}
1318
}
1419

1520
// Native methods do not return an identifiable function, so we
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Assign raw api to module
2+
var rawApi = require("../build/emscripten/nodegit");
3+
4+
// Set the exports prototype to the raw API.
5+
exports.__proto__ = rawApi;
6+
7+
// Set version
8+
exports.version = require("../package").version;
9+
10+
var glob = typeof window !== "undefined" ? window : global;
11+
12+
glob.nodegit = exports;

index.html

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<html lang="en">
2+
<head>
3+
<meta charset="utf-8">
4+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
5+
6+
<title>Index</title>
7+
</head>
8+
<body>
9+
<!--<script src="dist/nodegit.js"></script>-->
10+
11+
<script>
12+
var Module = {
13+
onRuntimeInitialized: function() {
14+
var loc = allocate(intArrayFromString('some_path'), 'i8', ALLOC_STACK);
15+
// Arbitrary amount of memory.
16+
var repo = Module._malloc(1024)
17+
18+
// Initialize a repository in memory.
19+
var err = _git_repository_init(repo, loc)
20+
console.log(err); // 0
21+
22+
// Open that repository.
23+
var err = _git_repository_open(repo, loc)
24+
console.log(err); // 0
25+
26+
// Change the path.
27+
var newloc = allocate(intArrayFromString('some_path2'), 'i8', ALLOC_STACK);
28+
var err = _git_repository_open(repo, newloc)
29+
console.log(err); // -3
30+
}
31+
};
32+
33+
</script>
34+
<script src="libgit2.js"></script>
35+
</body>
36+
</html>

lib/nodegit-browser.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Assign raw api to module
2+
var rawApi = require("../build/emscripten/nodegit");
3+
4+
// Set the exports prototype to the raw API.
5+
exports.__proto__ = rawApi;
6+
7+
// Set version
8+
exports.version = require("../package").version;
9+
10+
// Initialize threads
11+
//exports.Threads.init();
12+
13+
var glob = typeof window !== "undefined" ? window : global;
14+
15+
glob.nodegit = exports;

libgit2.js

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libgit2.js.mem

206 KB
Binary file not shown.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
}
4040
],
4141
"main": "lib/nodegit.js",
42+
"browser": "lib/nodegit-browser.js",
4243
"repository": {
4344
"type": "git",
4445
"url": "git://github.com/nodegit/nodegit.git"

0 commit comments

Comments
 (0)