UNPKG

@stryke/fs

Version:

A package containing various file system utilities that expand the functionality of NodeJs's built-in `fs` module.

28 lines (26 loc) 1.41 kB
import { isDirectory } from "./is-file.mjs"; import { listFiles } from "./list-files.mjs"; import { readFileIfExisting } from "./read-file.mjs"; import { writeFile } from "./write-file.mjs"; import { findFolderName, resolveParentPath } from "@stryke/path"; import { createTarGzip } from "nanotar"; import { uint8ArrayToString } from "@stryke/convert/uint8-array-to-string"; import { joinPaths as joinPaths$1 } from "@stryke/path/join-paths"; //#region src/compress.ts /** * Compress a directory or file into a tar.gz archive. * * @param directory - The source directory or file/glob to compress. * @param options - Options for the compression. */ async function compressDirectory(directory, options) { const files = await listFiles(isDirectory(directory) ? joinPaths$1(directory, "**/*") : directory, options); const data = await createTarGzip(await Promise.all(files.map(async (file) => ({ name: file, data: await readFileIfExisting(file) }))), { attrs: { group: "storm-software" } }); return writeFile(options?.destination ? isDirectory(options.destination) ? joinPaths$1(options.destination, `${(/* @__PURE__ */ new Date()).getTime()}.tar.gz`) : options.destination : isDirectory(directory) ? `${joinPaths$1(resolveParentPath(directory), findFolderName(directory))}.tar.gz` : directory, uint8ArrayToString(data)); } //#endregion export { compressDirectory }; //# sourceMappingURL=compress.mjs.map