56de781a2c
This reverts commit e00fb2bdc2090e9cabeb1eb35a2672a882cc96e9. # Conflicts: # .rubocop.yml # .rubocop_todo.yml # lib/gitlab/ci/config/entry/global.rb # lib/gitlab/ci/config/entry/jobs.rb # spec/lib/gitlab/ci/config/entry/factory_spec.rb # spec/lib/gitlab/ci/config/entry/global_spec.rb # spec/lib/gitlab/ci/config/entry/job_spec.rb # spec/lib/gitlab/ci/status/build/factory_spec.rb # spec/lib/gitlab/incoming_email_spec.rb
37 lines
949 B
Ruby
37 lines
949 B
Ruby
module RuboCop
|
|
module Cop
|
|
# This cop prevents usage of the `git` and `github` arguments to `gem` in a
|
|
# `Gemfile` in order to avoid additional points of failure beyond
|
|
# rubygems.org.
|
|
class GemFetcher < RuboCop::Cop::Cop
|
|
MSG = 'Do not use gems from git repositories, only use gems from RubyGems.'.freeze
|
|
|
|
GIT_KEYS = [:git, :github].freeze
|
|
|
|
def on_send(node)
|
|
return unless gemfile?(node)
|
|
|
|
func_name = node.children[1]
|
|
return unless func_name == :gem
|
|
|
|
node.children.last.each_node(:pair) do |pair|
|
|
key_name = pair.children[0].children[0].to_sym
|
|
if GIT_KEYS.include?(key_name)
|
|
add_offense(node, pair.source_range, MSG)
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def gemfile?(node)
|
|
node
|
|
.location
|
|
.expression
|
|
.source_buffer
|
|
.name
|
|
.end_with?("Gemfile")
|
|
end
|
|
end
|
|
end
|
|
end
|