|  | @@ -0,0 +1,74 @@
 | 
	
		
			
				|  |  | +const copydir = require('copy-dir');
 | 
	
		
			
				|  |  | +const LineReader = require('n-readlines');
 | 
	
		
			
				|  |  | +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);
 | 
	
		
			
				|  |  | +    // 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'));
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// 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;
 | 
	
		
			
				|  |  | +}
 |