53 строки
1.6 KiB
Ruby
53 строки
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rake/testtask'
|
|
require 'rubocop/rake_task'
|
|
require 'rubycritic/rake_task'
|
|
|
|
module SpeckleConnector
|
|
# Custom utility functions for rake tasks
|
|
module RakeUtils
|
|
module_function
|
|
|
|
# Find ruby files that were changed from `main` to the latest revision
|
|
def changed_rb_files(previous_revision: 'main', latest_revision: '')
|
|
range = latest_revision.empty? ? previous_revision : "#{latest_revision}..#{previous_revision}"
|
|
command = "git diff #{range} --name-only"
|
|
changed_files = `#{command}`.split("\n")
|
|
# filter changed files with ruby files (.rb), Gemfile and Rakefile.
|
|
filtered_files = changed_files.grep(/.*\.rb$|Gemfile|Rakefile/)
|
|
filtered_files.select { |file| File.exist?(file) }
|
|
end
|
|
end
|
|
end
|
|
|
|
# Add default rubocop task
|
|
RuboCop::RakeTask.new(:default)
|
|
|
|
# Add task to only verify ruby files that are different than in the `main` branch
|
|
desc('Run rubocop on changed files')
|
|
RuboCop::RakeTask.new(:rubocop_changed) do |t|
|
|
t.patterns = FileList.new(SpeckleConnector::RakeUtils.changed_rb_files)
|
|
end
|
|
|
|
# Glob pattern to match source files. Defaults to FileList['.'].
|
|
ruby_critic_paths = FileList[
|
|
'speckle_connector/**/*.rb',
|
|
'speckle_connector.rb',
|
|
'tests/**/*.rb'] -
|
|
FileList[
|
|
'_tools/**/*.rb',
|
|
'speckle_connector/src/ext/**/*.rb',
|
|
]
|
|
|
|
# for local
|
|
RubyCritic::RakeTask.new('rubycritic') do |task|
|
|
task.paths = ruby_critic_paths
|
|
end
|
|
|
|
# for CI
|
|
RubyCritic::RakeTask.new('rubycritic-ci') do |task|
|
|
task.options = '--mode-ci --format console --no-browser --branch main'
|
|
task.paths = ruby_critic_paths
|
|
end
|