forked from nodegit/nodegit
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcloneFromGithubWith2Factor.js
40 lines (35 loc) · 1.16 KB
/
cloneFromGithubWith2Factor.js
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
var nodegit = require("../");
var promisify = require("promisify-node");
var fse = promisify(require("fs-extra"));
var path = "/tmp/nodegit-github-2factor-demo";
var token = "{Your GitHub user token}";
var repoOwner = "{The orgname or username that owns the repo}";
var repoName = "{The name of the repo}";
// To clone with 2 factor auth enabled, you have to use a github oauth token
// over https, it can't be done with actual 2 factor.
// https://github.com/blog/1270-easier-builds-and-deployments-using-git-over-https-and-oauth
// If the repo is public, you can use a callback instead
var repoUrl = "https://github.com/" + repoOwner + "/" + repoName + ".git";
var opts = {
fetchOpts: {
callbacks: {
credentials: function() {
return nodegit.Cred.userpassPlaintextNew(token, "x-oauth-basic");
},
certificateCheck: function() {
return 1;
}
}
}
};
fse.remove(path).then(function() {
nodegit.Clone(repoUrl, path, opts)
.done(function(repo) {
if (repo instanceof nodegit.Repository) {
console.info("We cloned the repo!");
}
else {
console.error("Something borked :(");
}
});
});