mirror of
https://github.com/cachix/install-nix-action.git
synced 2024-11-25 09:58:03 +00:00
201 lines
5.1 KiB
JavaScript
201 lines
5.1 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, 'ChangedFiles', {
|
|
enumerable: true,
|
|
get: function get() {
|
|
return _types.ChangedFiles;
|
|
}
|
|
});
|
|
Object.defineProperty(exports, 'ChangedFilesPromise', {
|
|
enumerable: true,
|
|
get: function get() {
|
|
return _types.ChangedFilesPromise;
|
|
}
|
|
});
|
|
exports.findRepos = exports.getChangedFilesForRoots = void 0;
|
|
|
|
function _throat() {
|
|
const data = _interopRequireDefault(require('throat'));
|
|
|
|
_throat = function _throat() {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
var _types = require('./types');
|
|
|
|
var _git = _interopRequireDefault(require('./git'));
|
|
|
|
var _hg = _interopRequireDefault(require('./hg'));
|
|
|
|
function _interopRequireDefault(obj) {
|
|
return obj && obj.__esModule ? obj : {default: obj};
|
|
}
|
|
|
|
function _objectSpread(target) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
var ownKeys = Object.keys(source);
|
|
if (typeof Object.getOwnPropertySymbols === 'function') {
|
|
ownKeys = ownKeys.concat(
|
|
Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
})
|
|
);
|
|
}
|
|
ownKeys.forEach(function(key) {
|
|
_defineProperty(target, key, source[key]);
|
|
});
|
|
}
|
|
return target;
|
|
}
|
|
|
|
function _defineProperty(obj, key, value) {
|
|
if (key in obj) {
|
|
Object.defineProperty(obj, key, {
|
|
value: value,
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true
|
|
});
|
|
} else {
|
|
obj[key] = value;
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
try {
|
|
var info = gen[key](arg);
|
|
var value = info.value;
|
|
} catch (error) {
|
|
reject(error);
|
|
return;
|
|
}
|
|
if (info.done) {
|
|
resolve(value);
|
|
} else {
|
|
Promise.resolve(value).then(_next, _throw);
|
|
}
|
|
}
|
|
|
|
function _asyncToGenerator(fn) {
|
|
return function() {
|
|
var self = this,
|
|
args = arguments;
|
|
return new Promise(function(resolve, reject) {
|
|
var gen = fn.apply(self, args);
|
|
function _next(value) {
|
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
|
|
}
|
|
function _throw(err) {
|
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
|
|
}
|
|
_next(undefined);
|
|
});
|
|
};
|
|
}
|
|
|
|
function notEmpty(value) {
|
|
return value != null;
|
|
} // This is an arbitrary number. The main goal is to prevent projects with
|
|
// many roots (50+) from spawning too many processes at once.
|
|
|
|
const mutex = (0, _throat().default)(5);
|
|
|
|
const findGitRoot = dir => mutex(() => _git.default.getRoot(dir));
|
|
|
|
const findHgRoot = dir => mutex(() => _hg.default.getRoot(dir));
|
|
|
|
const getChangedFilesForRoots =
|
|
/*#__PURE__*/
|
|
(function() {
|
|
var _ref = _asyncToGenerator(function*(roots, options) {
|
|
const repos = yield findRepos(roots);
|
|
|
|
const changedFilesOptions = _objectSpread(
|
|
{
|
|
includePaths: roots
|
|
},
|
|
options
|
|
);
|
|
|
|
const gitPromises = Array.from(repos.git).map(repo =>
|
|
_git.default.findChangedFiles(repo, changedFilesOptions)
|
|
);
|
|
const hgPromises = Array.from(repos.hg).map(repo =>
|
|
_hg.default.findChangedFiles(repo, changedFilesOptions)
|
|
);
|
|
const changedFiles = (yield Promise.all(
|
|
gitPromises.concat(hgPromises)
|
|
)).reduce((allFiles, changedFilesInTheRepo) => {
|
|
var _iteratorNormalCompletion = true;
|
|
var _didIteratorError = false;
|
|
var _iteratorError = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator = changedFilesInTheRepo[Symbol.iterator](), _step;
|
|
!(_iteratorNormalCompletion = (_step = _iterator.next()).done);
|
|
_iteratorNormalCompletion = true
|
|
) {
|
|
const file = _step.value;
|
|
allFiles.add(file);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError = true;
|
|
_iteratorError = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
_iterator.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError) {
|
|
throw _iteratorError;
|
|
}
|
|
}
|
|
}
|
|
|
|
return allFiles;
|
|
}, new Set());
|
|
return {
|
|
changedFiles,
|
|
repos
|
|
};
|
|
});
|
|
|
|
return function getChangedFilesForRoots(_x, _x2) {
|
|
return _ref.apply(this, arguments);
|
|
};
|
|
})();
|
|
|
|
exports.getChangedFilesForRoots = getChangedFilesForRoots;
|
|
|
|
const findRepos =
|
|
/*#__PURE__*/
|
|
(function() {
|
|
var _ref2 = _asyncToGenerator(function*(roots) {
|
|
const gitRepos = yield Promise.all(
|
|
roots.reduce((promises, root) => promises.concat(findGitRoot(root)), [])
|
|
);
|
|
const hgRepos = yield Promise.all(
|
|
roots.reduce((promises, root) => promises.concat(findHgRoot(root)), [])
|
|
);
|
|
return {
|
|
git: new Set(gitRepos.filter(notEmpty)),
|
|
hg: new Set(hgRepos.filter(notEmpty))
|
|
};
|
|
});
|
|
|
|
return function findRepos(_x3) {
|
|
return _ref2.apply(this, arguments);
|
|
};
|
|
})();
|
|
|
|
exports.findRepos = findRepos;
|