summaryrefslogtreecommitdiff
path: root/src/actions/checkDependencies.ts
diff options
context:
space:
mode:
authorLeo Goetz <dev@leogtz.de>2026-05-08 15:48:37 +0200
committerLeo Goetz <dev@leogtz.de>2026-05-08 15:48:37 +0200
commitc3cb0ca317a52a740bf9625ca9df43f5c2306548 (patch)
treeaa8877dc2d651f16d23a629c4054043cae8be156 /src/actions/checkDependencies.ts
inital commit
Diffstat (limited to 'src/actions/checkDependencies.ts')
-rw-r--r--src/actions/checkDependencies.ts62
1 files changed, 62 insertions, 0 deletions
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<Project>[] = [];
+
+ 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<Project> {
+ 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, __));
+ });
+ });
+}