summaryrefslogtreecommitdiff
path: root/src/actions/checkDependencies.ts
diff options
context:
space:
mode:
authorLeo Goetz <dev@leogtz.de>2026-05-24 06:50:57 +0200
committerLeo Goetz <dev@leogtz.de>2026-05-24 06:50:57 +0200
commitca8537af0ab596fddd8d72e6630f278326ef5360 (patch)
tree170d9f82b28f292f40785e33b3981121b6793c3c /src/actions/checkDependencies.ts
parentd05bfaf95fb666fea02c8aceae3ce02c9e315d3d (diff)
feat: added fix functionality
Diffstat (limited to 'src/actions/checkDependencies.ts')
-rw-r--r--src/actions/checkDependencies.ts80
1 files changed, 12 insertions, 68 deletions
diff --git a/src/actions/checkDependencies.ts b/src/actions/checkDependencies.ts
index 4234bf9..999733e 100644
--- a/src/actions/checkDependencies.ts
+++ b/src/actions/checkDependencies.ts
@@ -1,77 +1,21 @@
-import fs from "fs/promises";
-import ora, { type Ora } from "ora";
-import type { Config, Project } from "../types.js";
+import ora from "ora";
+import type { Config } from "../types.js";
import { getConfig } from "../utils/config.js";
-import { exec, type ExecException } from "child_process";
+import { getProjectAudits, goThroughProjects } from "../lib/project.js";
export async function checkDependencies() {
- const spinner = ora("Getting all Project Data").start();
-
const config: Config = await getConfig();
- let projectAudits: PromiseSettledResult<Project>[];
- let projects: Promise<Project>[] = [];
-
- try {
- const entries = await fs.readdir(config.path, { withFileTypes: true });
-
- for (let entry of entries) {
- if (!entry.isDirectory()) {
- continue;
- }
-
- let dirFullPath = `${config.path}${entry.name}`;
- const projectDir = await fs.readdir(dirFullPath);
-
- if (projectDir.includes("package.json")) {
- let auditPromise = getAuditPromise(dirFullPath, entry.name, spinner);
- projects.push(auditPromise);
- }
- }
-
- projectAudits = await Promise.allSettled(projects);
-
- spinner.succeed("Got the Data successfully");
- return projectAudits;
- } catch (error) {
- spinner.fail("Ups and Error :(");
- throw error;
- }
-}
-
-async function getAuditPromise(
- path: string,
- dirname: string,
- spinner: Ora,
-): Promise<Project> {
- await pullLatest(path, spinner);
-
- spinner.text = "getting audit";
-
- let { stdout } = await promiseExec(`cd "${path}" && npm audit --json`);
+ let spinnerProjects = ora("Getting all projects").start();
+ let projects = await goThroughProjects(config);
+ spinnerProjects.succeed("Got all projects");
- let output = JSON.parse(stdout);
- let project: Project = { projectName: dirname, ...output };
- if (project.error) {
- throw new Error(
- `${dirname} could not be audited, maybe package lock is corrupted`,
- );
- }
+ let spinnerAudit = ora("Getting all audits").start();
+ let projectAudits = await getProjectAudits(projects);
- return project;
-}
-
-async function pullLatest(path: string, spinner: Ora) {
- spinner.text = "pulling latest";
- await promiseExec(`cd "${path}" && git pull`);
-}
+ spinnerAudit.text = "Resolving audits";
+ let audit = await Promise.allSettled(projectAudits);
+ spinnerAudit.succeed("Successfully resolved audits");
-function promiseExec(
- cmd: string,
-): Promise<{ error: ExecException | null; stdout: string; stderr: string }> {
- return new Promise((resolve, _) => {
- exec(cmd, (error, stdout, stderr) => {
- resolve({ error, stdout, stderr });
- });
- });
+ return audit;
}