@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
JavaScript
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