UNPKG

webgme-engine

Version:

WebGME server and Client API without a GUI

60 lines (52 loc) 1.81 kB
/*globals define*/ /*eslint-env node, browser*/ /** * @author kecso / https://github.com/kecso */ define(['common/regexp', 'q'], function (REGEXP, Q) { 'use strict'; function getRoot(parameters, callback) { var deferred = Q.defer(), result = {}, loadRoot = function (hash) { parameters.core.loadRoot(hash, function (err, root) { if (err) { deferred.reject(err); return; } result.root = root; deferred.resolve(result); }); }, loadCommit = function (hash) { result.commitHash = hash; parameters.project.loadObject(hash, function (err, commitObj) { if (err) { deferred.reject(err); return; } result.rootHash = commitObj.root; loadRoot(commitObj.root); }); }; if (REGEXP.HASH.test(parameters.id)) { loadCommit(parameters.id); } else { parameters.project.getBranches(function (err, branches) { if (err) { deferred.reject(err); return; } if (branches[parameters.id]) { result.branchName = parameters.id; loadCommit(branches[parameters.id]); } else { deferred.reject(new Error('there is no branch [' + parameters.id + '] in the project')); return; } }); } return deferred.promise.nodeify(callback); } return getRoot; });