Sha256: 25af442c6a2ad1ef450e945e3a0f5d7456ba7cb9aa64972e25c23a68e46b0f9b

Contents?: true

Size: 1.84 KB

Versions: 12

Compression:

Stored size: 1.84 KB

Contents

def qa_files
  files = case (ENV['MODE'] || '').to_sym
  when :full
    %x(git ls-files '*.rb')
  when :feat
    %x(git diff master...HEAD --name-only)
  else
    %x(git diff --name-only)
  end

  files.split("\n").map(&:chomp).select{ |file| file =~ /\.rb\z/ }
end

def qa_files_array
  @qa_files_array ||= qa_files
end

def qa_files_glob
  @qa_files_glob ||= "{#{qa_files_array.join(",")}}"
end

begin
  require 'cane/rake_task'

  namespace :qa do
    Cane::RakeTask.new(:cane) do |cane|
      cane.abc_max = 20
      cane.abc_glob = qa_files_glob
      cane.add_threshold 'coverage/covered_percent', :>=, 75
      cane.no_style = true
      cane.no_doc = true
    end
  end

rescue LoadError
end

begin
  require 'reek/rake/task'

  namespace :qa do
    Reek::Rake::Task.new do |t|
      t.fail_on_error = false
      t.source_files = qa_files_glob
    end
  end

rescue LoadError
end

begin
  require 'tailor/rake_task'

  namespace :qa do
    Tailor::RakeTask.new do |task|
      task.file_set qa_files_array do |style|
        style.max_line_length 0, level: :off
      end
    end
  end

rescue LoadError
end

begin
  require 'rubocop/rake_task'

  namespace :qa do
    Rubocop::RakeTask.new(:rubocop) do |task|
      task.patterns = qa_files_array
      task.fail_on_error = false
    end
  end

rescue LoadError
end

begin
  require 'rails_best_practices'

  namespace :qa do
    desc 'Run rails_best_practices'
    task :rails_best_practices do
      `rails_best_practices -o #{qa_files_array.join(',')}`
    end
  end

rescue LoadError
end

desc 'Run all QA tasks'
task :qa do
  if qa_files_array.any?
    Rake.application.in_namespace(:qa) do |namespace|
      namespace.tasks.each do |task|
        puts "\033[34m*** Running #{task.name}\033[0m"
        task.invoke
      end
    end
  else
    puts "\033[33mNo file changes identified, skipping QA tasks\033[0m"
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
liquid-ext-3.5.3 lib/liquid/tasks/qa.rake
liquid-ext-3.5.2 lib/liquid/tasks/qa.rake
liquid-ext-3.5.0 lib/liquid/tasks/qa.rake
liquid-ext-3.4.2 lib/liquid/tasks/qa.rake
liquid-ext-3.4.1 lib/liquid/tasks/qa.rake
liquid-ext-3.4.0 lib/liquid/tasks/qa.rake
liquid-ext-3.3.10 lib/liquid/tasks/qa.rake
liquid-ext-3.3.9 lib/liquid/tasks/qa.rake
liquid-ext-3.3.8 lib/liquid/tasks/qa.rake
liquid-ext-3.3.7 lib/liquid/tasks/qa.rake
liquid-ext-3.3.6 lib/liquid/tasks/qa.rake
liquid-ext-3.3.5 lib/liquid/tasks/qa.rake