@forge/cli

13.2.0-next.4-experimental-fda9df613.2.0-next.10-experimental-f51f593
out/deploy/packager/archiver.js
~out/deploy/packager/archiver.jsModified
+27−11
Index: package/out/deploy/packager/archiver.js
===================================================================
--- package/out/deploy/packager/archiver.js
+++ package/out/deploy/packager/archiver.js
@@ -28,14 +28,19 @@
     static async create(logger) {
         const { ZipArchive } = await Promise.resolve().then(() => tslib_1.__importStar(require('archiver')));
         return new ZipArchiver(new ZipArchive(), logger);
     }
-    addFile(fileName, contents) {
+    addContent(fileName, contents) {
         this.archive.append(contents, { name: fileName });
         this.logger.debug(cli_shared_1.Text.deploy.taskPackage.packageFile(fileName, null));
     }
-    addFileFrom(fileName, filePath) {
-        this.archive.file(filePath, { name: fileName });
+    addFrom(fileName, filePath) {
+        if ((0, fs_1.statSync)(filePath).isDirectory()) {
+            this.archive.directory(filePath, fileName || false);
+        }
+        else {
+            this.archive.file(filePath, { name: fileName });
+        }
         this.logger.debug(cli_shared_1.Text.deploy.taskPackage.packageFile(fileName, filePath));
     }
     finalise() {
         return new Promise((resolve, reject) => {
@@ -66,15 +71,26 @@
     constructor(directory, logger) {
         this.directory = directory;
         this.logger = logger;
     }
-    addFile(fileName, contents) {
+    addContent(fileName, contents) {
         this.copy(fileName, contents);
         this.logger.debug(cli_shared_1.Text.deploy.taskPackage.packageFile(fileName, null));
     }
-    addFileFrom(fileName, filePath) {
-        this.copy(fileName, filePath);
-        this.logger.debug(cli_shared_1.Text.deploy.taskPackage.packageFile(fileName, filePath));
+    addFrom(fileName, filePath) {
+        try {
+            if ((0, fs_1.statSync)(filePath).isDirectory()) {
+                const targetDirectory = fileName ? (0, path_1.join)(this.directory, fileName) : this.directory;
+                (0, fs_1.cpSync)(filePath, targetDirectory, { recursive: true });
+            }
+            else {
+                this.copy(fileName, filePath);
+            }
+            this.logger.debug(cli_shared_1.Text.deploy.taskPackage.packageFile(fileName, filePath));
+        }
+        catch (e) {
+            throw new ArchiverError(e.message);
+        }
     }
     copy(fileName, contents) {
         try {
             const targetName = (0, path_1.join)(this.directory, fileName);
@@ -99,16 +115,16 @@
     archivers;
     constructor(archivers) {
         this.archivers = archivers;
     }
-    addFile(fileName, contents) {
+    addContent(fileName, contents) {
         for (const archiver of this.archivers) {
-            archiver.addFile(fileName, contents);
+            archiver.addContent(fileName, contents);
         }
     }
-    addFileFrom(fileName, filePath) {
+    addFrom(fileName, filePath) {
         for (const archiver of this.archivers) {
-            archiver.addFileFrom(fileName, filePath);
+            archiver.addFrom(fileName, filePath);
         }
     }
     async finalise() {
         const paths = await Promise.all(this.archivers.map((archiver) => archiver.finalise()));