From c3cb0ca317a52a740bf9625ca9df43f5c2306548 Mon Sep 17 00:00:00 2001 From: Leo Goetz Date: Fri, 8 May 2026 15:48:37 +0200 Subject: inital commit --- src/actions/checkDependencies.ts | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/actions/checkDependencies.ts (limited to 'src/actions/checkDependencies.ts') diff --git a/src/actions/checkDependencies.ts b/src/actions/checkDependencies.ts new file mode 100644 index 0000000..4746bfd --- /dev/null +++ b/src/actions/checkDependencies.ts @@ -0,0 +1,62 @@ +import fs from "fs/promises"; +import ora from "ora"; +import type { Config, Project } from "../types.js"; +import { getConfig } from "../utils/config.js"; +import { exec } from "child_process"; + +export async function checkDependencies() { + const config: Config = await getConfig(); + let projectsOutputs: Project[] = []; + let projects: Promise[] = []; + + const spinner = ora("Getting all Project Data").start(); + + try { + const dirs = await fs.readdir(config.path); + + for (let dir of dirs) { + let dirFullPath = `${config.path}${dir}`; + const projectDir = await fs.readdir(dirFullPath); + if (projectDir.includes("package.json")) { + projects.push(getProjectPromise(dirFullPath, dir, spinner)); + } + } + + projectsOutputs = await Promise.all(projects); + + spinner.succeed("Got the Data successfully"); + } catch (error) { + spinner.fail("Ups and Error :("); + console.log(error); + } + + return projectsOutputs; +} + +function getProjectPromise( + path: string, + dirname: string, + spinner: any, +): Promise { + return new Promise(async (resolve, _) => { + spinner.text = "pulling latest"; + await promiseExec(`cd "${path}" && git pull `, () => {}); + spinner.text = "getting audit"; + promiseExec( + `cd "${path}" && npm audit --json`, + (_: any, stdout: string) => { + let output = JSON.parse(stdout); + let project: Project = { projectName: dirname, ...output }; + resolve(project); + }, + ); + }); +} + +function promiseExec(cmd: string, callback: any) { + return new Promise((resolve, _) => { + exec(cmd, (_, stdout, __) => { + resolve(callback(_, stdout, __)); + }); + }); +} -- cgit v1.3.1