diff --git a/.gitignore b/.gitignore index 7329fcc..39d0695 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,5 @@ out .yarn/install-state.gz .pnp.* # package-lock.json + +ignore/ \ No newline at end of file diff --git a/src/util/file.util.ts b/src/util/file.util.ts index 81181c5..4267947 100644 --- a/src/util/file.util.ts +++ b/src/util/file.util.ts @@ -12,3 +12,17 @@ export const readFileToStringDefaultEncoding = ( export const readFileToJson = (relativeFilePath: string): any => { return JSON.parse(readFileToStringDefaultEncoding(relativeFilePath)) } + +export const writeFileFromString = ( + relativeFilePath: string, + content: string +): void => { + const baseDir = path.dirname(relativeFilePath) + const absolutePath = path.resolve(relativeFilePath) + + if (!fs.existsSync(baseDir)) { + fs.mkdirSync(baseDir, { recursive: true }) + } + + fs.writeFileSync(absolutePath, content) +} diff --git a/test/file.test.ts b/test/file.test.ts new file mode 100644 index 0000000..cc309fa --- /dev/null +++ b/test/file.test.ts @@ -0,0 +1,11 @@ +import { randomUUID } from "crypto" +import { writeFileFromString } from "../src/util/file.util" + +test("Write File from String", () => { + const filePath = "./ignore/test.json" + const fileContent = { + key: randomUUID(), + iv: randomUUID(), + } + writeFileFromString(filePath, JSON.stringify(fileContent)) +})