Bläddra i källkod

Ajout option pour zipper et supprimer dossier non zipper

Loquicom 5 år sedan
förälder
incheckning
7c40885776
1 ändrade filer med 33 tillägg och 9 borttagningar
  1. 33 9
      deploy.js

+ 33 - 9
deploy.js

@@ -1,9 +1,21 @@
 const LineReader = require('n-readlines');
-const zip = require('zip-dir');
+const zipdir = require('zip-dir');
 const copydir = require('copy-dir');
+const commander = require('commander');
+const del = require('del');
 const file = require('./src/file');
 const deploy = require('./deploy.json');
 
+// Lecture des arguments
+commander.version('1.2.0');
+commander
+    .option('-z, --zip', 'create a zip file for each programs', false)
+    .option('-r, --remove', 'zip and deletes the non-zip version of programs', false);
+commander.parse(process.argv);
+const zip = commander.zip || commander.remove;
+const remove = commander.remove;
+
+
 // Constante
 const OUT = './dist/';
 
@@ -28,12 +40,10 @@ deploy.programs.forEach(program => {
         }
     });
     // Copie dossier propre à chaque programme
-    copydir('./src/' + program.name, distPath + '/src/' + program.name, {
+    copydir.sync('./src/' + program.name, distPath + '/src/' + program.name, {
         utimes: true,
         mode: true,
         cover: true
-    }, (err) => {
-        if (err) throw err;
     });
     // Copie fichier main
     file.fs.copyFile(program.main, distPath + '/main.js', (err) => {
@@ -52,11 +62,25 @@ deploy.programs.forEach(program => {
     // Ecriture ReadMe
     file.put(distPath + '/README.md', readMe(program.part).replace(new RegExp(program.main, 'g'), 'main.js'));
     // Zip du code pour distribution
-    zip(distPath, {saveTo: distPath + '.zip'}, (err, buffer) => {
-        if (err) {
-            console.error('Error when zipping files', err);
-        }
-    });
+    if (zip) {
+        zipdir(distPath, {saveTo: distPath + '.zip'}, (err, buffer) => {
+            if (err) {
+                console.error('Error when zipping files', err);
+            } else {
+                console.info(`Zip file created for ${program.name} in ${distPath}.zip`);
+            }
+        });
+    }
+    // Message de fin
+    console.info(`${program.name} deployed in ${distPath}`);
+    // Si besoins on supprime les versions non zipper des dossier
+    if (remove) {
+        del(distPath + '/**').then(deletedPaths => {
+            file.fs.rmdir(distPath, () => {
+                console.info(`Directory ${distPath} deleted`);
+            });
+        });
+    }
 });
 
 // Fonction découpage readme