From ca8537af0ab596fddd8d72e6630f278326ef5360 Mon Sep 17 00:00:00 2001 From: Leo Goetz Date: Sun, 24 May 2026 06:50:57 +0200 Subject: feat: added fix functionality --- src/actions/checkDependencies.ts | 80 ++++++---------------------------------- 1 file changed, 12 insertions(+), 68 deletions(-) (limited to 'src/actions/checkDependencies.ts') 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[]; - let projects: Promise[] = []; - - 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 { - 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; } -- cgit v1.3.1