Skip to content

Commit 8213d33

Browse files
committed
Adding normalizeFetchOptions util
1 parent e0d801a commit 8213d33

File tree

4 files changed

+48
-41
lines changed

4 files changed

+48
-41
lines changed

generate/templates/templates/nodegit.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ var importExtension = function(name) {
7878
rawApi.Utils = {};
7979
require("./utils/lookup_wrapper");
8080
require("./utils/normalize_options");
81+
require("./utils/normalize_fetch_options");
8182
require("./utils/shallow_clone");
8283

8384
// Load up extra types;

lib/clone.js

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var NodeGit = require("../");
22
var shallowClone = NodeGit.Utils.shallowClone;
3+
var normalizeFetchOptions = NodeGit.Utils.normalizeFetchOptions;
34
var normalizeOptions = NodeGit.Utils.normalizeOptions;
45

56
var Clone = NodeGit.Clone;
@@ -15,29 +16,15 @@ var _clone = Clone.clone;
1516
* @return {Repository} repo
1617
*/
1718
Clone.clone = function(url, local_path, options) {
18-
var remoteCallbacks = {};
19-
var fetchOpts = {};
19+
var fetchOpts = normalizeFetchOptions(options && options.fetchOpts);
2020

2121
if (options) {
2222
options = shallowClone(options);
23-
if (options.fetchOpts) {
24-
fetchOpts = shallowClone(options.fetchOpts);
25-
}
2623
delete options.fetchOpts;
2724
}
2825

2926
options = normalizeOptions(options, NodeGit.CloneOptions);
3027

31-
if (fetchOpts.callbacks) {
32-
remoteCallbacks = shallowClone(fetchOpts.callbacks);
33-
delete fetchOpts.callbacks;
34-
}
35-
36-
fetchOpts = normalizeOptions(fetchOpts, NodeGit.FetchOptions);
37-
38-
fetchOpts.callbacks =
39-
normalizeOptions(remoteCallbacks, NodeGit.RemoteCallbacks);
40-
4128
if (options) {
4229
options.fetchOpts = fetchOpts;
4330
}

lib/remote.js

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var NodeGit = require("../");
2+
var normalizeFetchOptions = NodeGit.Utils.normalizeFetchOptions;
23
var normalizeOptions = NodeGit.Utils.normalizeOptions;
34
var lookupWrapper = NodeGit.Utils.lookupWrapper;
45
var shallowClone = NodeGit.Utils.shallowClone;
@@ -84,32 +85,7 @@ Remote.prototype.download = function(refspecs, opts) {
8485
* @return {Number} error code
8586
*/
8687
Remote.prototype.fetch = function(refspecs, opts, reflog_message) {
87-
var callbacks;
88-
var proxyOpts;
89-
90-
if (opts) {
91-
opts = shallowClone(opts);
92-
callbacks = opts.callbacks;
93-
proxyOpts = opts.proxyOpts;
94-
delete opts.callbacks;
95-
delete opts.proxyOpts;
96-
} else {
97-
opts = {};
98-
}
99-
100-
opts = normalizeOptions(opts, NodeGit.FetchOptions);
101-
102-
if (callbacks) {
103-
opts.callbacks =
104-
normalizeOptions(callbacks, NodeGit.RemoteCallbacks);
105-
}
106-
107-
if (proxyOpts) {
108-
opts.proxyOpts =
109-
normalizeOptions(proxyOpts, NodeGit.ProxyOptions);
110-
}
111-
112-
return _fetch.call(this, refspecs, opts, reflog_message);
88+
return _fetch.call(this, refspecs, normalizeFetchOptions(opts), reflog_message);
11389
};
11490

11591
/**
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
var NodeGit = require("../../");
2+
var normalizeOptions = require("./normalize_options");
3+
var shallowClone = require("./shallow_clone");
4+
5+
/**
6+
* Normalize an object to match a struct.
7+
*
8+
* @param {String, Object} oid - The oid string or instance.
9+
* @return {Object} An Oid instance.
10+
*/
11+
function normalizeFetchOptions(options) {
12+
if (options instanceof NodeGit.FetchOptions) {
13+
return options;
14+
}
15+
16+
var callbacks;
17+
var proxyOpts;
18+
19+
if (options) {
20+
options = shallowClone(options);
21+
callbacks = options.callbacks;
22+
proxyOpts = options.proxyOpts;
23+
delete options.callbacks;
24+
delete options.proxyOpts;
25+
} else {
26+
options = {};
27+
}
28+
29+
options = normalizeOptions(options, NodeGit.FetchOptions);
30+
31+
if (callbacks) {
32+
options.callbacks =
33+
normalizeOptions(callbacks, NodeGit.RemoteCallbacks);
34+
}
35+
36+
if (proxyOpts) {
37+
options.proxyOpts =
38+
normalizeOptions(proxyOpts, NodeGit.ProxyOptions);
39+
}
40+
return options;
41+
}
42+
43+
NodeGit.Utils.normalizeFetchOptions = normalizeFetchOptions;

0 commit comments

Comments
 (0)