Pārlūkot izejas kodu

Create filesystem helper file

Loris Leiva 1 gadu atpakaļ
vecāks
revīzija
0eef714271
2 mainītis faili ar 50 papildinājumiem un 31 dzēšanām
  1. 3 31
      index.ts
  2. 47 0
      utils/fsHelpers.ts

+ 3 - 31
index.ts

@@ -1,11 +1,11 @@
 #!/usr/bin/env node
 
-import * as fs from "node:fs";
 import * as path from "node:path";
 
+import { createOrEmptyTargetDirectory } from "./utils/fsHelpers";
 import { getInputs } from "./utils/getInputs";
-import { Language, getLanguage } from "./utils/getLanguage";
-import { logBanner, logDone, logErrorAndExit, logStep } from "./utils/getLogs";
+import { getLanguage } from "./utils/getLanguage";
+import { logBanner, logDone, logStep } from "./utils/getLogs";
 import { RenderContext, getRenderContext } from "./utils/getRenderContext";
 import { renderTemplate } from "./utils/renderTemplates";
 import { detectSolanaVersion, generateKeypair } from "./utils/solanaCli";
@@ -86,31 +86,3 @@ function renderTemplates(ctx: RenderContext) {
     render(`clients/${client}`);
   });
 }
-
-function createOrEmptyTargetDirectory(
-  language: Language,
-  targetDirectoryName: string,
-  shouldOverride: boolean
-) {
-  const targetDirectory = path.join(process.cwd(), targetDirectoryName);
-  if (!fs.existsSync(targetDirectory)) {
-    fs.mkdirSync(targetDirectory, { recursive: true });
-  } else if (shouldOverride) {
-    emptyDirectory(targetDirectory);
-  } else {
-    logErrorAndExit(
-      language.errors.cannotOverrideDirectory.replace(
-        "$targetDirectory",
-        targetDirectoryName
-      )
-    );
-  }
-}
-
-function emptyDirectory(directory: string) {
-  for (const filename of fs.readdirSync(directory)) {
-    if (filename === ".git") continue;
-    const fullpath = path.resolve(directory, filename);
-    fs.rmSync(fullpath, { recursive: true });
-  }
-}

+ 47 - 0
utils/fsHelpers.ts

@@ -0,0 +1,47 @@
+import * as fs from "node:fs";
+import * as path from "node:path";
+
+import { Language } from "./getLanguage";
+import { logErrorAndExit } from "./getLogs";
+
+export function createOrEmptyTargetDirectory(
+  language: Language,
+  targetDirectoryName: string,
+  shouldOverride: boolean
+) {
+  const targetDirectory = path.join(process.cwd(), targetDirectoryName);
+  if (!fs.existsSync(targetDirectory)) {
+    fs.mkdirSync(targetDirectory, { recursive: true });
+  } else if (shouldOverride) {
+    emptyGitDirectory(targetDirectory);
+  } else {
+    logErrorAndExit(
+      language.errors.cannotOverrideDirectory.replace(
+        "$targetDirectory",
+        targetDirectoryName
+      )
+    );
+  }
+}
+
+export function emptyGitDirectory(directory: string) {
+  traverseGitDirectory(directory, (fullpath) => {
+    fs.rmSync(fullpath, { recursive: true });
+  });
+}
+
+export function traverseGitDirectory(
+  directory: string,
+  callback: (dir: string) => void
+) {
+  for (const filename of fs.readdirSync(directory)) {
+    if (filename === ".git") continue;
+    const fullpath = path.resolve(directory, filename);
+    if (fs.lstatSync(fullpath).isDirectory()) {
+      traverseGitDirectory(fullpath, callback);
+      callback(fullpath);
+      continue;
+    }
+    callback(fullpath);
+  }
+}