const fs = require('fs-extra');
const execSync = require('child_process').execSync;

// Electron Builder strip off certain important keys from package.json, which we need, in particular build.appId
// so this script is used to preserve the keys that we need.

const packageInfo = require(__dirname + '/package.json');

let removeKeys = ['scripts', 'devDependencies', 'optionalDependencies', 'dependencies'];

for (let i = 0; i < removeKeys.length; i++) {
	delete packageInfo[removeKeys[i]];
}

const appId = packageInfo.build.appId;

delete packageInfo.build;
packageInfo.build = { appId: appId };

let branch;
let hash;
try {
	branch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim();
	hash   = execSync('git log --pretty="%h" -1').toString().trim();
}
catch(err) {
	console.warn("Could not get git info", err);
}
if (typeof branch !== 'undefined' && typeof hash !== 'undefined') {
	packageInfo.git = { branch: branch, hash: hash };
}

let fileContent = "// Auto-generated by compile-package-info.js\n// Do not change directly\nconst packageInfo = " + JSON.stringify(packageInfo, null, 4) + ';';
fileContent += "\n";
fileContent += "module.exports = packageInfo;";

fs.writeFileSync(__dirname + '/packageInfo.js', fileContent);