const Discord = require('discord.js');
const fs = require('fs');
const chalk = require('chalk');
const UserData = require('../../models/user');
const cp = require('child_process');

module.exports = {
    name: "pull",
    help: new Discord.MessageEmbed()
        .setTitle("Help -> VCS Pull")
        .setDescription("Pulls new commits from VCS")
        .addField("Syntax", "`pull`")
        .addField("Notice", "This command is only available to Luno developers."),
    meta: {
        category: 'Developer',
        description: "Pull new commits from VSC and update the bot. Otaku zone, non-otakus not allowed.",
        syntax: '`pull`',
        extra: "You'll still need to use `reload` afterwards"
    },
    async execute(message, msg, args, cmd, prefix, mention, client) {
        const tu = await UserData.findOne({uid: message.author.id});
        if (!tu || !tu.developer) {return message.channel.send("You must be a Luno developer in order to do this!");}

        console.log(`\n${chalk.yellow('[WARN]')} >> ${chalk.gray('VCS:')} ${chalk.white('Initiating remote->local VCS sync/refresh!')}`);

        cp.exec("git pull origin master", function(error, stdout, stderr) {
            if (error) {
                let date = new Date; date = date.toString().slice(date.toString().search(":") - 2, date.toString().search(":") + 6);
                console.error(`\n${chalk.red('[ERROR]')} >> ${chalk.yellow(`At [${date}] | Occurred while trying to pull from VCS`)}`, stderr || error);
            } else {
                console.log(`\n${chalk.gray('[INFO]')} >> ${chalk.hex('ff4fd0')(`VCS Pull successful`)}\n`);
            }
            return message.channel.send(`Done with ${error ? 'an error' : 'no errors'}!`);
        });
    }
};