module Decidim::DecidimAwesome::SystemChecker

Public Class Methods

each(&block) click to toggle source
# File lib/decidim/decidim_awesome/system_checker.rb, line 27
def each(&block)
  to_h.each(&block)
end
each_file() { |"#{spec.gem_dir}#{file}", signatures| ... } click to toggle source
# File lib/decidim/decidim_awesome/system_checker.rb, line 31
def each_file
  each do |_, props|
    props.files.each do |file, signatures|
      yield "#{props.spec.gem_dir}#{file}", signatures
    end
  end
end
overrides() click to toggle source

List of files overriden by this plugin overriden files has to match MD5 calculation to be sure is the same as the expected

# File lib/decidim/decidim_awesome/system_checker.rb, line 9
def overrides
  return @overrides if @overrides

  # rubocop:disable Rails/DynamicFindBy
  checksums = YAML.load_file("#{__dir__}/checksums.yml")
  @overrides = checksums.map do |package, files|
    props = {
      spec: ::Gem::Specification.find_by_name(package),
      files: files.transform_values(&:values)
    }
    [package, to_struct(props)]
  end
  # rubocop:enable Rails/DynamicFindBy
  @overrides = to_struct(@overrides.to_h)
end
valid?(spec, file) click to toggle source
# File lib/decidim/decidim_awesome/system_checker.rb, line 39
def valid?(spec, file)
  find_signatures("#{spec.gem_dir}#{file}").detect { |s| md5("#{spec.gem_dir}#{file}") == s }
end

Private Class Methods

find_signatures(file) click to toggle source
# File lib/decidim/decidim_awesome/system_checker.rb, line 45
def find_signatures(file)
  to_h.each do |_, props|
    props.files.each do |f, signatures|
      return signatures if file == "#{props.spec.gem_dir}#{f}"
    end
  end
end
md5(file) click to toggle source
# File lib/decidim/decidim_awesome/system_checker.rb, line 53
def md5(file)
  Digest::MD5.hexdigest(File.read(file))
end
to_struct(obj) click to toggle source
# File lib/decidim/decidim_awesome/system_checker.rb, line 57
def to_struct(obj)
  OpenStruct.new obj
end