Boot-Java for Atom

This commit is contained in:
BoykoAlex
2017-09-20 10:27:59 -04:00
parent e6eacc435a
commit eceb3126c3
5 changed files with 164 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
.idea/
server/
node_modules/

View File

@@ -0,0 +1,48 @@
const path = require('path');
const { JarLanguageClient } = require('pivotal-atom-languageclient-commons');
const PROPERTIES = require('../properties.json');
class BootJavaLanguageClient extends JarLanguageClient {
constructor() {
//noinspection JSAnnotator
super(
PROPERTIES.jarUrl,
path.join(__dirname, '..', 'server'),
'boot-java-language-server.jar'
);
}
getGrammarScopes() {
return ['source.java']
}
getLanguageName() {
return 'boot-java'
}
getServerName() {
return 'Spring Boot'
}
activate() {
// replace the example argument 'linter-ruby' with the name of this Atom package
require('atom-package-deps').install('boot-java').then(function() {
console.log('All dependencies installed, good to go')
});
super.activate();
}
launchVmArgs(version) {
return [
'-Dorg.slf4j.simpleLogger.logFile=boot-java.log',
'-Dorg.slf4j.simpleLogger.defaultLogLevel=debug',
// '-Xdebug',
// '-agentlib:jdwp=transport=dt_socket,server=y,address=7999,suspend=n'
];
}
}
module.exports = new BootJavaLanguageClient();

View File

@@ -0,0 +1,76 @@
{
"name": "boot-java",
"main": "./lib/main",
"version": "0.0.10",
"description": "Spring Boot support for Atom",
"repository": "https://github.com/spring-projects/atom-boot-java",
"icon": "icon.png",
"license": "MIT",
"engines": {
"atom": ">=1.17.0"
},
"files": [
"lib/",
"server/",
"properties.json"
],
"dependencies": {
"atom-package-deps": "^4.6.0",
"download": "^6.2.5",
"pivotal-atom-languageclient-commons": "0.0.7"
},
"devDependencies": {
"coffeelint": "^1.10.1"
},
"scripts": {
"clean": "rm -fr node_modules",
"postinstall": "node script.js"
},
"package-deps": [
"atom-ide-ui"
],
"consumedServices": {
"linter-indie": {
"versions": {
"2.0.0": "consumeLinterV2"
}
},
"nuclide-datatip.provider": {
"versions": {
"0.0.0": "consumeDatatip"
}
}
},
"providedServices": {
"autocomplete.provider": {
"versions": {
"2.0.0": "provideAutocomplete"
}
},
"nuclide-code-format.provider": {
"versions": {
"0.0.0": "provideCodeFormat"
}
},
"nuclide-definition-provider": {
"versions": {
"0.0.0": "provideDefinitions"
}
},
"nuclide-find-references.provider": {
"versions": {
"0.0.0": "provideFindReferences"
}
},
"nuclide-outline-view": {
"versions": {
"0.0.0": "provideOutlines"
}
}
},
"bundledDependencies": [
"atom-package-deps",
"download",
"pivotal-atom-languageclient-commons"
]
}

View File

@@ -0,0 +1,3 @@
{
"jarUrl": "https://s3-us-west-1.amazonaws.com/s3-test.spring.io/sts4/fatjars/snapshots/boot-java-language-server-0.0.10-201709182357.jar"
}

View File

@@ -0,0 +1,34 @@
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, 'boot-java-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}`));
}
});