const LineReader = require('n-readlines'); const zip = require('zip-dir'); const copydir = require('copy-dir'); const file = require('./src/file'); const deploy = require('./deploy.json'); // Constante const OUT = './dist/'; // Creation dossier destination file.makedir(OUT); // Séparation de chaque programme deploy.programs.forEach(program => { // Création du dossier const distPath = OUT + program.name; file.makedir(distPath); // Creation dossier data file.makedir(distPath + '/data'); file.put(distPath + '/data/.gitkeep', ''); // Copie des fichiers commun file.makedir(distPath + '/src'); file.fs.readdirSync('./src').forEach(f => { if (!file.isDir('./src/' + f)) { file.fs.copyFile('./src/' + f, distPath + '/src/' + f, (err) => { if (err) throw err; }); } }); // Copie dossier propre à chaque programme copydir('./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) => { if (err) throw err; }); // Copie package.json const pckg = require('./package.json'); pckg.scripts = program.scripts; pckg.version = program.version; program.rm_dependencies.forEach(elt => { delete pckg.dependencies[elt]; }); let json = JSON.stringify(pckg, null, 4); json = json.replace(new RegExp(program.main, 'g'), 'main.js'); file.put(distPath + '/package.json', json); // 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); } }); }); // Fonction découpage readme function readMe(part) { const liner = new LineReader('./README.md'); let data = ''; let line = liner.next().toString(); while (line !== 'false' && line.indexOf('## Partie ') === -1) { data += '\n' + line; line = liner.next().toString(); } while (line !== 'false' && line.indexOf('## Partie ' + part) === -1) { line = liner.next().toString(); } data += '\n' + line; line = liner.next().toString(); while (line !== 'false' && line.indexOf('## Partie ') === -1) { data += '\n' + line; line = liner.next().toString(); } if (line !== 'false') { liner.close(); } return data; }