Visitar URL original
build against shared library for libcurl by implausible · Pull Request #1195 · nodegit/nodegit · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Adding normalizeFetchOptions util
  • Loading branch information
cbargren committed Jan 25, 2017
commit 8213d3313a24bbbd4e4cdf184512b20e92427cf3
1 change: 1 addition & 0 deletions generate/templates/templates/nodegit.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ var importExtension = function(name) {
rawApi.Utils = {};
require("./utils/lookup_wrapper");
require("./utils/normalize_options");
require("./utils/normalize_fetch_options");
require("./utils/shallow_clone");

// Load up extra types;
Expand Down
17 changes: 2 additions & 15 deletions lib/clone.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
var NodeGit = require("../");
var shallowClone = NodeGit.Utils.shallowClone;
var normalizeFetchOptions = NodeGit.Utils.normalizeFetchOptions;
var normalizeOptions = NodeGit.Utils.normalizeOptions;

var Clone = NodeGit.Clone;
Expand All @@ -15,29 +16,15 @@ var _clone = Clone.clone;
* @return {Repository} repo
*/
Clone.clone = function(url, local_path, options) {
var remoteCallbacks = {};
var fetchOpts = {};
var fetchOpts = normalizeFetchOptions(options && options.fetchOpts);

if (options) {
options = shallowClone(options);
if (options.fetchOpts) {
fetchOpts = shallowClone(options.fetchOpts);
}
delete options.fetchOpts;
}

options = normalizeOptions(options, NodeGit.CloneOptions);

if (fetchOpts.callbacks) {
remoteCallbacks = shallowClone(fetchOpts.callbacks);
delete fetchOpts.callbacks;
}

fetchOpts = normalizeOptions(fetchOpts, NodeGit.FetchOptions);

fetchOpts.callbacks =
normalizeOptions(remoteCallbacks, NodeGit.RemoteCallbacks);

if (options) {
options.fetchOpts = fetchOpts;
}
Expand Down
28 changes: 2 additions & 26 deletions lib/remote.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
var NodeGit = require("../");
var normalizeFetchOptions = NodeGit.Utils.normalizeFetchOptions;
var normalizeOptions = NodeGit.Utils.normalizeOptions;
var lookupWrapper = NodeGit.Utils.lookupWrapper;
var shallowClone = NodeGit.Utils.shallowClone;
Expand Down Expand Up @@ -84,32 +85,7 @@ Remote.prototype.download = function(refspecs, opts) {
* @return {Number} error code
*/
Remote.prototype.fetch = function(refspecs, opts, reflog_message) {
var callbacks;
var proxyOpts;

if (opts) {
opts = shallowClone(opts);
callbacks = opts.callbacks;
proxyOpts = opts.proxyOpts;
delete opts.callbacks;
delete opts.proxyOpts;
} else {
opts = {};
}

opts = normalizeOptions(opts, NodeGit.FetchOptions);

if (callbacks) {
opts.callbacks =
normalizeOptions(callbacks, NodeGit.RemoteCallbacks);
}

if (proxyOpts) {
opts.proxyOpts =
normalizeOptions(proxyOpts, NodeGit.ProxyOptions);
}

return _fetch.call(this, refspecs, opts, reflog_message);
return _fetch.call(this, refspecs, normalizeFetchOptions(opts), reflog_message);
};

/**
Expand Down
43 changes: 43 additions & 0 deletions lib/utils/normalize_fetch_options.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
var NodeGit = require("../../");
var normalizeOptions = require("./normalize_options");
var shallowClone = require("./shallow_clone");

/**
* Normalize an object to match a struct.
*
* @param {String, Object} oid - The oid string or instance.
* @return {Object} An Oid instance.
*/
function normalizeFetchOptions(options) {
if (options instanceof NodeGit.FetchOptions) {
return options;
}

var callbacks;
var proxyOpts;

if (options) {
options = shallowClone(options);
callbacks = options.callbacks;
proxyOpts = options.proxyOpts;
delete options.callbacks;
delete options.proxyOpts;
} else {
options = {};
}

options = normalizeOptions(options, NodeGit.FetchOptions);

if (callbacks) {
options.callbacks =
normalizeOptions(callbacks, NodeGit.RemoteCallbacks);
}

if (proxyOpts) {
options.proxyOpts =
normalizeOptions(proxyOpts, NodeGit.ProxyOptions);
}
return options;
}

NodeGit.Utils.normalizeFetchOptions = normalizeFetchOptions;