Создание плагина / пакета cloud9 - добавление зависимостей
Я пытаюсь написать интеграцию rubocop linter с редактором кода AWS Cloud9 для ruby на проектах rails. Вот код, выполняющий rubocop в консоли и анализирующий вывод:
define(function(require, exports, module) {
var baseHandler = require("plugins/c9.ide.language/base_handler");
var handler = module.exports = Object.create(baseHandler);
var workerUtil = require("plugins/c9.ide.language/worker_util");
handler.handlesLanguage = function(language) {
return language === "ruby";
};
handler.analyze = function(docValue, ast, callback) {
var markers = [];
var rubocopArgs = ['--stdin', '$FILE', '--cache', 'true', '--format', 'json'];
workerUtil.execAnalysis(
"rubocop",
{
mode: "stdin",
args: rubocopArgs
},
function(err, stdout, stderr) {
debugger;
// err.code 1 can be ignored, rubocop returns it if it finds any offenses
if (err && err.code !== 1) return callback(err);
if (!stdout) return callback(null, []);
stdout.files[0].offenses.forEach(function(offence) {
var result = parseOffence(offence);
if (result)
markers.push(result);
});
callback(null, markers);
}
);
};
function parseOffence(offence) {
if (offence.corrected)
return;
var message = offence.message;
var location = offence.location;
var position = {
sl: location.start_line - 1,
el: location.last_line - 1,
sc: location.start_column - 1,
ec: location.last_column
};
return {
pos: position,
message: message,
type: offenceType(offence.severity)
};
}
function offenceType(severity) {
var type = severity == 'convention' ? 'info' : 'warning';
return type;
}});
Я также добавил установщик, который должен был установить rubocop на определенную машину при необходимости:
define(function(require, exports, module) {
module.exports = function(session, options) {
session.install({
"bash": 'gem install rubocop'
});
session.start();
};
// version of the installer. Increase this when installer changes and must run again
module.exports.version = 1;
});
Я также ссылался на установочный файл в package.json. Проблема в том, что я не могу заставить работать установщик. Каждый раз, когда я пытаюсь запустить установку пакета в новом проекте cloud9, я получаю сообщение об ошибке. Unsupported type installer
, Как мне написать свой установщик? Есть ли лучший способ установить зависимость?
Я работаю только в редакторе кода Cloud9, проект rails 5.
Мне удалось заставить плагин работать в одном проекте, изменив команду, которая должна была запускать rubocop, на ту, которая должна была установить его в bash (gem install rubocop
) и затем снова установить пакет с правильной командой, но я думаю, что это не тот путь. Вот почему я считаю, что синтаксический анализ в порядке.
Я попытался поместить команду установщика в отдельном .sh
файл и ссылка на него как на предустановщик вместо, не помогла.
Заранее спасибо!