创建cloud9插件/程序包-添加依赖项

时间:2018-10-03 20:15:01

标签: ruby-on-rails cloud9 aws-cloud9

我正在尝试将rubocop linter与AWS Cloud9代码编辑器集成在一起,以用于Rails项目上的ruby。这是在控制台中运行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)中的命令,然后使用正确的命令再次安装该软件包,使该插件在一个项目中正常工作。我想那不是要走的路。这就是为什么我认为解析代码是可以的。

我尝试将installer命令放在单独的.sh文件中,并将其引用为预安装程序,但这没有帮助。

谢谢!

0 个答案:

没有答案