mirror of
https://github.com/streetwriters/notesnook.git
synced 2026-02-23 19:49:56 +01:00
setup: use listr2
This commit is contained in:
1288
package-lock.json
generated
1288
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -37,7 +37,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^17.1.1",
|
||||
"@types/listr": "^0.14.4",
|
||||
"@types/node": "^18.7.13",
|
||||
"@typescript-eslint/eslint-plugin": "^5.59.9",
|
||||
"@typescript-eslint/parser": "^5.59.9",
|
||||
@@ -59,7 +58,7 @@
|
||||
"dependencies": {
|
||||
"eslint-plugin-header": "^3.1.1",
|
||||
"fdir": "^6.0.2",
|
||||
"listr": "^0.14.3",
|
||||
"listr2": "^8.2.3",
|
||||
"nx": "^17.3.1",
|
||||
"patch-package": "^7.0.0",
|
||||
"rxjs": "^7.8.1",
|
||||
|
||||
@@ -23,7 +23,7 @@ import path from "path";
|
||||
import os from "os";
|
||||
import parser from "yargs-parser";
|
||||
import { fdir } from "fdir";
|
||||
import Listr from "listr";
|
||||
import { Listr } from "listr2";
|
||||
|
||||
const args = parser(process.argv, { alias: { scope: ["s"], offline: ["o"] } });
|
||||
const IS_CI = process.env.CI;
|
||||
@@ -90,16 +90,16 @@ async function bootstrapPackages(dependencies) {
|
||||
console.log("> Using", THREADS, "threads.");
|
||||
|
||||
const outputs = { stdout: [], stderr: [] };
|
||||
const tasks = new Listr({
|
||||
concurrent: THREADS,
|
||||
exitOnError: false
|
||||
});
|
||||
for (const dependency of dependencies) {
|
||||
tasks.add({
|
||||
task: () => bootstrapPackage(dependency, outputs),
|
||||
title: "Bootstrapping " + dependency
|
||||
});
|
||||
}
|
||||
const tasks = new Listr(
|
||||
dependencies.map((dep) => ({
|
||||
task: () => bootstrapPackage(dep, outputs),
|
||||
title: "Bootstrapping " + dep
|
||||
})),
|
||||
{
|
||||
concurrent: THREADS,
|
||||
exitOnError: false
|
||||
}
|
||||
);
|
||||
|
||||
console.time("Took");
|
||||
await tasks.run();
|
||||
|
||||
@@ -20,14 +20,14 @@ import glob from "fast-glob";
|
||||
import fs from "fs/promises";
|
||||
import { existsSync } from "fs";
|
||||
import path from "path";
|
||||
import Listr from "listr";
|
||||
import { Listr } from "listr2";
|
||||
|
||||
const allPackages = await glob(["packages/**", "apps/**", "extensions/**"], {
|
||||
deep: 1,
|
||||
onlyDirectories: true
|
||||
});
|
||||
|
||||
const tasks = new Listr({ concurrent: 4, exitOnError: false });
|
||||
const tasks = new Listr([], { concurrent: 4, exitOnError: false });
|
||||
for (const pkg of allPackages) {
|
||||
for (const dirname of ["node_modules", "dist", "build", "out"]) {
|
||||
const dir = path.join(pkg, dirname);
|
||||
|
||||
@@ -26,10 +26,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import { exec } from "child_process";
|
||||
import path from "path";
|
||||
import { readFile, writeFile } from "fs/promises";
|
||||
import { readFile, writeFile, cp, rm } from "fs/promises";
|
||||
import glob from "fast-glob";
|
||||
import parser from "yargs-parser";
|
||||
import Listr from "listr";
|
||||
import { Listr } from "listr2";
|
||||
|
||||
const args = parser(process.argv, { alias: { scope: ["s"], version: ["v"] } });
|
||||
const allPackages = await glob("packages/*", {
|
||||
@@ -55,34 +55,53 @@ async function publishPackages(dependencies) {
|
||||
console.log("> Found", dependencies.length, "dependencies to bootstrap.");
|
||||
|
||||
const outputs = { stdout: [], stderr: [] };
|
||||
const tasks = new Listr({
|
||||
concurrent: 1,
|
||||
exitOnError: false
|
||||
});
|
||||
for (const dependency of dependencies) {
|
||||
tasks.add({
|
||||
task: () => publishPackage(dependency, outputs),
|
||||
title: "Bootstrapping " + dependency
|
||||
});
|
||||
}
|
||||
await performTasks("bump", dependencies, (dep) => bumpVersion(dep, outputs));
|
||||
|
||||
console.time("Took");
|
||||
await tasks.run();
|
||||
try {
|
||||
await performTasks("resolve local packages", dependencies, (dep) =>
|
||||
resolveLocalPackages(dep)
|
||||
);
|
||||
|
||||
await performTasks("dry run", dependencies, (dep) =>
|
||||
publishPackage(dep, true)
|
||||
);
|
||||
|
||||
await performTasks("publish", dependencies, (dep) =>
|
||||
publishPackage(dep, false, outputs)
|
||||
);
|
||||
} finally {
|
||||
await performTasks("unresolve", dependencies, (dep) =>
|
||||
unresolveLocalPackages(dep)
|
||||
);
|
||||
}
|
||||
|
||||
process.stdout.write(outputs.stdout.join(""));
|
||||
process.stderr.write(outputs.stderr.join(""));
|
||||
|
||||
console.timeEnd("Took");
|
||||
}
|
||||
|
||||
async function publishPackage(cwd, outputs) {
|
||||
async function performTasks(title, dependencies, action) {
|
||||
const tasks = new Listr(
|
||||
dependencies.map((dep) => ({
|
||||
task: (_, task) => action(dep, task),
|
||||
title: title + " " + dep
|
||||
})),
|
||||
{
|
||||
concurrent: 8,
|
||||
exitOnError: true
|
||||
}
|
||||
);
|
||||
|
||||
await tasks.run();
|
||||
|
||||
if (tasks.errors.length > 0) throw new Error("Failed.");
|
||||
}
|
||||
|
||||
async function bumpVersion(cwd, outputs) {
|
||||
const bumpCmd = `npm version ${args.version} --no-git-tag-version`;
|
||||
const publishCmd = `npm publish --access public`;
|
||||
|
||||
outputs.stdout.push("> " + cwd);
|
||||
|
||||
await execute(bumpCmd, cwd, outputs);
|
||||
}
|
||||
|
||||
async function resolveLocalPackages(cwd) {
|
||||
const packageJsonPath = path.join(cwd, "package.json");
|
||||
const packageJson = JSON.parse(await readFile(packageJsonPath, "utf-8"));
|
||||
|
||||
@@ -97,25 +116,26 @@ async function publishPackage(cwd, outputs) {
|
||||
allDependencies.map((deps) => resolveDependencies(cwd, deps))
|
||||
);
|
||||
|
||||
await cp(packageJsonPath, packageJsonPath + ".old");
|
||||
await writeFile(
|
||||
packageJsonPath,
|
||||
JSON.stringify(packageJson, undefined, 2) + "\n"
|
||||
);
|
||||
|
||||
try {
|
||||
await execute(publishCmd, cwd, outputs);
|
||||
} finally {
|
||||
await Promise.all(
|
||||
allDependencies.map((deps, i) =>
|
||||
unresolveDependencies(cwd, deps, resolved[i])
|
||||
)
|
||||
);
|
||||
return { resolved, allDependencies, packageJson };
|
||||
}
|
||||
|
||||
await writeFile(
|
||||
packageJsonPath,
|
||||
JSON.stringify(packageJson, undefined, 2) + "\n"
|
||||
);
|
||||
}
|
||||
async function unresolveLocalPackages(cwd) {
|
||||
const packageJsonPath = path.join(cwd, "package.json");
|
||||
await cp(packageJsonPath + ".old", packageJsonPath, {
|
||||
force: true
|
||||
});
|
||||
await rm(packageJsonPath + ".old", { force: true });
|
||||
}
|
||||
|
||||
async function publishPackage(cwd, dryRun, outputs) {
|
||||
const publishCmd = `npm publish --access public${dryRun ? " --dry-run" : ""}`;
|
||||
await execute(publishCmd, cwd, outputs);
|
||||
}
|
||||
|
||||
async function findDependencies(scope) {
|
||||
@@ -167,17 +187,6 @@ async function resolveDependencies(basePath, dependencies) {
|
||||
return resolvedDependencies;
|
||||
}
|
||||
|
||||
async function unresolveDependencies(
|
||||
basePath,
|
||||
dependencies,
|
||||
resolvedDependencies
|
||||
) {
|
||||
for (const name in dependencies) {
|
||||
if (!resolvedDependencies[name]) continue;
|
||||
dependencies[name] = resolvedDependencies[name];
|
||||
}
|
||||
}
|
||||
|
||||
function execute(cmd, cwd, outputs) {
|
||||
return new Promise((resolve, reject) =>
|
||||
exec(
|
||||
@@ -190,8 +199,10 @@ function execute(cmd, cwd, outputs) {
|
||||
(err, stdout, stderr) => {
|
||||
if (err) return reject(err);
|
||||
|
||||
outputs.stdout.push(stdout);
|
||||
outputs.stderr.push(stderr);
|
||||
if (outputs) {
|
||||
outputs.stdout.push(stdout);
|
||||
outputs.stderr.push(stderr);
|
||||
}
|
||||
|
||||
resolve();
|
||||
}
|
||||
|
||||
2
servers/themes/package-lock.json
generated
2
servers/themes/package-lock.json
generated
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"../../packages/theme": {
|
||||
"name": "@notesnook/theme",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.7",
|
||||
"dev": true,
|
||||
"license": "GPL-3.0-or-later",
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user