87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
const Constants = require('../../constants');
|
|
const fs = require('fs');
|
|
const helpers = require('../../helpers');
|
|
const os = require('os');
|
|
const path = require('path');
|
|
const unzip = require('unzipper');
|
|
|
|
const addListeners = (ipcMain, standardIPCReply) => {
|
|
ipcMain.on(Constants.IPC_Check_Installed, (event, data) => {
|
|
const destination = path.join(helpers.getDataDirectory(), data.Version);
|
|
helpers
|
|
.getMissingDependencies(data.Dependencies)
|
|
.then((dependencies) => {
|
|
let exists = false;
|
|
try {
|
|
exists = fs.existsSync(destination) && fs.lstatSync(destination).isDirectory();
|
|
} catch (e) {
|
|
}
|
|
standardIPCReply(event, Constants.IPC_Check_Installed_Reply, {
|
|
Dependencies: dependencies,
|
|
Exists: exists,
|
|
Version: data.Version,
|
|
});
|
|
}).catch(error => {
|
|
standardIPCReply(event, Constants.IPC_Check_Installed_Reply, {
|
|
Dependencies: [],
|
|
Version: data.Version,
|
|
}, error);
|
|
});
|
|
});
|
|
|
|
ipcMain.on(Constants.IPC_Extract_Release, (event, data) => {
|
|
const destination = path.join(helpers.getDataDirectory(), data.Version);
|
|
helpers.removeDirectoryRecursively(destination);
|
|
helpers.mkDirByPathSync(destination);
|
|
|
|
const stream = fs.createReadStream(data.Source);
|
|
stream
|
|
.pipe(unzip.Extract({ path: destination }))
|
|
.on('error', error => {
|
|
try {
|
|
helpers.removeDirectoryRecursively(destination);
|
|
} catch (e) {
|
|
}
|
|
stream.close();
|
|
standardIPCReply(event, Constants.IPC_Extract_Release_Complete, {
|
|
Source: data.Source,
|
|
}, error);
|
|
})
|
|
.on('finish', () => {
|
|
stream.close();
|
|
if (os.platform() !== 'win32') {
|
|
helpers
|
|
.executeAndWait("chmod +x \"" + path.join(destination, 'repertory') + "\"")
|
|
.then(() => {
|
|
standardIPCReply(event, Constants.IPC_Extract_Release_Complete, {
|
|
Source: data.Source,
|
|
});
|
|
})
|
|
.catch(error => {
|
|
standardIPCReply(event, Constants.IPC_Extract_Release_Complete, {
|
|
Source: data.Source,
|
|
}, error);
|
|
})
|
|
} else {
|
|
standardIPCReply(event, Constants.IPC_Extract_Release_Complete, {
|
|
Source: data.Source,
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
ipcMain.on(Constants.IPC_Test_Release, (event, data) => {
|
|
helpers
|
|
.testRepertoryBinary(data.Version)
|
|
.then(() => {
|
|
standardIPCReply(event, Constants.IPC_Test_Release_Reply, {});
|
|
})
|
|
.catch(error => {
|
|
standardIPCReply(event, Constants.IPC_Test_Release_Reply, {}, error);
|
|
});
|
|
});
|
|
};
|
|
|
|
module.exports = {
|
|
addListeners
|
|
}; |