Sha256: d693fca047161224392c641b88b5358adf54c337b74552accacb914b805972ab

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

module Danger


  class DangerClorox < Plugin

    # Checks presence of file header comments. Will fail if `clorox` cannot be installed correctly.
    # Generates a `markdown` list of dirty Objective-C and Swift files
    #
    # @param   [String] files
    #          A globbed string which should return the files that you want to check, defaults to nil.
    #          if nil, modified and added files from the diff will be used.
    # @return  [void]
    #
    def check_files(files=nil)
      # Installs clorox if needed
      system "pip install --target /tmp/danger_clorox clorox" unless clorox_installed?

      # Check that this is in the user's PATH after installing
      unless clorox_installed?
        fail "clorox is not in the user's PATH, or it failed to install"
        return
      end

      # Either use files provided, or use the modified + added
      files = files ? Dir.glob(files) : (git.modified_files + git.added_files).uniq

      require 'json'
      result = JSON.parse(`python /tmp/danger_clorox/clorox/clorox.py -p #{files.join(" ")} -i -r json`)

      message = ''
      if result['status'] == 'dirty'
        message = "### Clorox has found issues\n"
        message << "Please, remove the header from the files below (those comments on the top of your file):\n\n"
        message << parse_results(result['files'])
        markdown message
      end
    end

    # Parses clorox invocation results into a string
    # which is formatted as a markdown table.
    #
    # @return  [String]
    #
    def parse_results(results)
      message = ""
      results.each do |r|
        message << "- #{r} :hankey:\n"
      end

      message
    end

    # Determine if clorox is currently installed in the system paths.
    # @return  [Bool]
    #
    def clorox_installed?
      Dir.exists? "/tmp/danger_clorox"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
danger-clorox-0.0.1 lib/danger_plugin.rb