Sha256: 33c22ddf865f4135e6a12cc5b50e201f6ba5a9d1c7fc09b6e9afcfd46a5f930f

Contents?: true

Size: 1.67 KB

Versions: 13

Compression:

Stored size: 1.67 KB

Contents

require "danger/plugin_support/plugin_parser"
require "danger/plugin_support/plugin_file_resolver"
require "danger/plugin_support/plugin_linter"

module Danger
  class PluginLint < CLAide::Command::Plugins
    self.summary = "Lints a plugin"
    self.command = "lint"

    attr_accessor :cork

    def initialize(argv)
      @warnings_as_errors = argv.flag?("warnings-as-errors", false)
      @refs = argv.arguments! unless argv.arguments.empty?
      @cork = Cork::Board.new(silent: argv.option("silent", false),
                              verbose: argv.option("verbose", false))
      super
    end

    self.summary = "Lint plugins from files, gems or the current folder. Outputs JSON array representation of Plugins on success."

    self.description = <<-DESC
      Converts a collection of file paths of Danger plugins into a JSON format.
      Note: Before 1.0, it will also parse the represented JSON to validate whether http://danger.systems would
      show the plugin on the website.
    DESC

    self.arguments = [
      CLAide::Argument.new("Paths, Gems or Nothing", false, true)
    ]

    def self.options
      [
        ["--warnings-as-errors", "Ensure strict linting."]
      ].concat(super)
    end

    def run
      file_resolver = PluginFileResolver.new(@refs)
      paths = file_resolver.resolve_to_paths

      parser = PluginParser.new(paths, verbose: true)
      parser.parse
      json = parser.to_json

      linter = PluginLinter.new(json)
      linter.lint
      linter.print_summary(cork)

      abort("Failing due to errors\n".red) if linter.failed?
      abort("Failing due to warnings as errors\n".red) if @warnings_as_errors && !linter.warnings.empty?
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
danger-3.0.3 lib/danger/commands/plugins/plugin_lint.rb
danger-3.0.2 lib/danger/commands/plugins/plugin_lint.rb
danger-3.0.1 lib/danger/commands/plugins/plugin_lint.rb
danger-3.0.0 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.6 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.5 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.4 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.3 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.2 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.1 lib/danger/commands/plugins/plugin_lint.rb
danger-2.1.0 lib/danger/commands/plugins/plugin_lint.rb
danger-2.0.1 lib/danger/commands/plugins/plugin_lint.rb
danger-2.0.0 lib/danger/commands/plugins/plugin_lint.rb