in src/script/management-sdk.ts [329:375]
private packageFileFromPath(filePath: string): Promise<PackageFile> {
var getPackageFilePromise: Promise<PackageFile>;
if (fs.lstatSync(filePath).isDirectory()) {
getPackageFilePromise = new Promise<PackageFile>((resolve: (file: PackageFile) => void, reject: (reason: Error) => void): void => {
var directoryPath: string = filePath;
recursiveFs.readdirr(directoryPath, (error?: any, directories?: string[], files?: string[]): void => {
if (error) {
reject(error);
return;
}
var baseDirectoryPath = path.dirname(directoryPath);
var fileName: string = this.generateRandomFilename(15) + ".zip";
var zipFile = new yazl.ZipFile();
var writeStream: fs.WriteStream = fs.createWriteStream(fileName);
zipFile.outputStream.pipe(writeStream)
.on("error", (error: Error): void => {
reject(error);
})
.on("close", (): void => {
filePath = path.join(process.cwd(), fileName);
resolve({ isTemporary: true, path: filePath });
});
for (var i = 0; i < files.length; ++i) {
var file: string = files[i];
var relativePath: string = path.relative(baseDirectoryPath, file);
// yazl does not like backslash (\) in the metadata path.
relativePath = slash(relativePath);
zipFile.addFile(file, relativePath);
}
zipFile.end();
});
});
} else {
getPackageFilePromise = new Promise<PackageFile>((resolve: (file: PackageFile) => void, reject: (reason: Error) => void): void => {
resolve({ isTemporary: false, path: filePath });
});
}
return getPackageFilePromise;
}