You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
982 B
29 lines
982 B
"use strict";
|
|
|
|
import { create as createArchiver } from "archiver";
|
|
import { createWriteStream } from "fs";
|
|
import { join, normalize } from "path";
|
|
|
|
import { GenericTask } from "../types";
|
|
|
|
interface IParameters {
|
|
readonly directory?: string;
|
|
readonly archive: string;
|
|
}
|
|
|
|
export default ((params) => (processor) => () => {
|
|
const sourceDirectoryPath = normalize(join(processor.context.exported, String(params.directory || "")));
|
|
const targetArchivePath = normalize(join(processor.context.release, params.archive));
|
|
|
|
processor.onInfo(`Compressing "${params.directory}" to "${params.archive}"`);
|
|
|
|
const output = createWriteStream(targetArchivePath);
|
|
const archive = createArchiver("zip");
|
|
|
|
output.on("close", processor.done);
|
|
|
|
archive.on("error", (err: any) => processor.onError(`Error while compressing: ${err}`));
|
|
archive.pipe(output);
|
|
archive.directory(sourceDirectoryPath, false);
|
|
archive.finalize();
|
|
}) as GenericTask<IParameters>;
|
|
|