Skip to content

Commit

Permalink
feat: reconfigure pendingJobs as after hooks
Browse files Browse the repository at this point in the history
BREAKING CHANGE:
Pending jobs are now exposed on hooks.after result of ongoing item
  • Loading branch information
medikoo committed Nov 14, 2018
1 parent 18648cb commit cdd1a01
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
14 changes: 8 additions & 6 deletions lib/private/install-package/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";

const { resolve } = require("path")
const clear = require("es5-ext/array/#/clear")
, { resolve } = require("path")
, log = require("log4").get("npm-cross-link")
, isDirectory = require("fs2/is-directory")
, npmLink = require("./npm-link")
Expand All @@ -14,14 +15,15 @@ const finalize = async ({ name }, progressData) => {
log.debug("mark %s as done", name);
done.add(name);

const pendingJobs = ongoing.get(name);
const { hooks: { after: jobs } } = ongoing.get(name);
log.debug("remove %s from ongoing", name);
ongoing.delete(name);

// Run pending jobs
if (pendingJobs.length) {
// Run after jobs
if (jobs.length) {
log.info("run pending jobs of %s", name);
for (const pendingJob of pendingJobs) await pendingJob();
for (const job of jobs) await job();
clear.call(jobs);
}
progressData.emit("end", { name });
};
Expand All @@ -41,7 +43,7 @@ module.exports = async (packageContext, userConfiguration, inputOptions, progres
progressData.emit("start", { name, type: (await isDirectory(path)) ? "update" : "install" });

log.debug("mark %s as ongoing", name);
ongoing.set(name, []);
ongoing.set(name, { hooks: { after: [] } });

// Ensure repository is up to date
await setupRepository(path, meta.repoUrl, inputOptions);
Expand Down
4 changes: 3 additions & 1 deletion lib/private/setup-dependencies/setup-dependency/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ module.exports = async (dependencyContext, userConfiguration, inputOptions, prog
const { done, ongoing } = progressData;
if (!isExternal) {
if (ongoing.has(name)) {
ongoing.get(name).push(() => npmLinkDependency(dependencyContext, progressData));
ongoing
.get(name)
.hooks.after.push(() => npmLinkDependency(dependencyContext, progressData));
return;
}
if (!done.has(name)) {
Expand Down

0 comments on commit cdd1a01

Please sign in to comment.