//maintainRepo ensures our repo is being maintained and is updated
exports.maintainRepo = function (dir,url,callback) {
	var exec = require('child_process').exec;
	//Ensure git is installed
	var child = exec('command -v git',function(error,stdout,stderr) {
		if(error) {
			console.error('GIT IS NOT INSTALLED');
			process.exit(1);
		}
	});

	//File system maintenence
	var fs = require('fs');
	try {
		fs.mkdirSync(dir);
	} catch(error) {
		if(!error.code=='EEXIST') {
			console.error('Could not access ~/.cfi: '+error.message);
		}
	}
	
	//TODO: Handle errors for git. May not have permission for the specified directory
	var child = exec('git init '+dir, function(error, stdout,stderr) {
		var child = exec('git --git-dir="'+dir+'/.git" --work-tree="'+dir+'" remote add origin '+url,function(error,stdout,stderr) {
			var child = exec('git --git-dir="'+dir+'/.git" --work-tree="'+dir+'" reset --hard && git --git-dir="'+dir+'/.git" --work-tree="'+dir+'" pull origin master',function(error,stdout,stderr) {
				if(!execResult(error,stdout,stderr)) {
					console.log('exec error: '+error);
				}
				callback();
			});
		});
	});
}

function execResult(error, stdout,stderr) {
	if(error!=null) {
		return false;
	}
	return true;
}