<commit_before>'use strict';

var config = require('./config.js');

var forever = require('forever-monitor');

var nodemailer = require('nodemailer');
var sendmailTransport = require('nodemailer-sendmail-transport');

var argv = require('minimist')(process.argv.slice(2));


// si la ligne de commande a été lancée avec le nom du fichier du server avec le nom du fichier de log
if (process.argv[2] && argv.logFile) {
	var child = new (forever.Monitor)(process.argv[2], {
		silent: true,
		args: [],
		errFile: argv.logFile, // logs
	});

	console.log('Start server ...');

	// à chaque restart
	child.on('restart', function (err) {
		console.log('error server ' + process.argv[2] + ' : consultez le fichier log ' + argv.logFile);

		var transporter = nodemailer.createTransport(sendmailTransport({
		    path: 'sendmail',
		    args: [ '-t', '-i' ],
		}));

		// envoi du mail a l'admin
		transporter.sendMail({
		    from: config.sender,
		    to: config.admin,
		    subject: 'Error node server',
		    text: 'Une erreur est survenue sur le serveur ' + process.argv[2] + ', consultez les logs dans : ' + argv.logFile,
		    replyTo: config.noreplyAddress,
		}, function (err) {
			if (err) {
				console.log(err);
			}
		});
	});


	child.start();
}
else {
	console.log('Arguments manquants\nUtilisez : node run-forever.js path/to/mon-fichier.js --logFile  path/to/fichierLog.log');
}

<commit_msg>Ajoute une limite dans le nombre de restart<commit_after>'use strict';

var config = require('./config.js');

var forever = require('forever-monitor');

var nodemailer = require('nodemailer');
var sendmailTransport = require('nodemailer-sendmail-transport');

var argv = require('minimist')(process.argv.slice(2));

var restartCount = 0;

var transporter = nodemailer.createTransport(sendmailTransport({
    path: 'sendmail',
    args: [ '-t', '-i' ],
}));

/**
 * Envoie un mail à l'admin du serveur
 */
var sendMail = function (subject, text) {

    // envoi du mail a l'admin
    transporter.sendMail({
        from: '<EMAIL>',
        to: config.admin,
        subject: subject,
        text: text,
    }, function (err) {
        if (err) {
            console.log(err);
        }
    });
};


// si la ligne de commande a été lancée avec le nom du fichier du server avec le nom du fichier de log
if (process.argv[2] && argv.logFile) {
    var child = new (forever.Monitor)(process.argv[2], {
        silent: true,
        args: [],
        errFile: argv.logFile, // logs
        killTree: true,
    });

    console.log('Start server ...');

    // à chaque restart
    child.on('restart', function () {

        restartCount++;

        if (restartCount >= config.maxRestartCount) {
            sendMail('Le serveur a crashé', 'Le serveur crashait en boucle et a été définitivement arrêté après ' + config.maxRestartCount + ' crashs');
            process.exit();
        }

        sendMail('Le serveur a redémarré', 'Une erreur est survenue sur le serveur ' + process.argv[2] + ', consultez les logs dans : ' + argv.logFile);

        console.log('error server ' + process.argv[2] + ' : consultez le fichier log ' + argv.logFile);

    });

    child.start();
}
else {
    console.log('Arguments manquants\nUtilisez : node run-forever.js path/to/mon-fichier.js --logFile  path/to/fichierLog.log');
}
{'fraction_non_alphanumeric': 0.1484280532043531, 'fraction_numerical': 0.003325272067714631, 'mean_word_length': 3.0012091898428053, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '454120', 'n_tokens_mistral': 1130, 'n_tokens_neox': 1089, 'n_words': 286}