35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const download = require('download');
|
|
const PROPERTIES = require('./properties.json');
|
|
|
|
let fileExists = function(path) {
|
|
return new Promise((resolve, reject) => {
|
|
fs.access(path, fs.R_OK, error => {
|
|
resolve(!error || error.code !== 'ENOENT');
|
|
})
|
|
});
|
|
};
|
|
|
|
const serverDownloadUrl = PROPERTIES.jarUrl;
|
|
|
|
const serverHome = path.join(__dirname, 'server');
|
|
|
|
const localFileName = path.join(serverHome, 'spring-boot-language-server.jar');
|
|
|
|
fileExists(localFileName).then(exists => {
|
|
if (!exists) {
|
|
console.log(`Downloading ${serverDownloadUrl} to ${localFileName}`);
|
|
fileExists(serverHome)
|
|
.then(doesExist => { if (!doesExist) fs.mkdir(serverHome) })
|
|
.then(() => download(serverDownloadUrl))
|
|
.then(data => fs.writeFileSync(localFileName, data))
|
|
.then(() => fileExists(localFileName))
|
|
.then(doesExist => { if (!doesExist) throw Error(`Failed to install the ${this.getServerName()} language server`) })
|
|
.then(() => console.log(`Successfully downloaded ${serverDownloadUrl}`));
|
|
}
|
|
});
|
|
|
|
|
|
|