Rakefile in surface_master-0.2.0 vs Rakefile in surface_master-0.2.1

- old
+ new

@@ -1,10 +1,78 @@ -require 'bundler/gem_tasks' +require "bundler/gem_tasks" -require 'rake/testtask' +require "rake/testtask" Rake::TestTask.new(:test) do |test| - test.libs << 'lib' << 'test' - test.pattern = 'test/**/test_*.rb' + test.libs << "lib" << "test" + test.pattern = "test/**/test_*.rb" test.verbose = true end -task :default => :test +lib = File.expand_path("../lib", __FILE__) +$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + +task_dir = File.expand_path("../tasks", __FILE__) +raw_task_files = FileList["#{task_dir}/**/*.rake"] + + FileList["tasks/**/*.rake"] +raw_task_files + .map { |fname| File.expand_path(fname) } + .sort + .each do |fname| + load fname + end + +# Define a task named `name` that runs all tasks under an identically +# named `namespace`. +def parent_task(name) + task name do + ::Rake::Task + .tasks + .select { |t| t.name =~ /^#{name}:/ } + .sort { |a, b| a.name <=> b.name } + .each(&:execute) + end +end + +desc "Open a Ruby console to Pry." +task :console do + # rubocop:disable Lint/Debugger + require "pry" + binding.pry + # rubocop:enable Lint/Debugger +end + +namespace :lint do + desc "Run Rubocop against the codebase." + task :rubocop do + require "yaml" + sh "rubocop --display-cop-names" + end + + desc "Run bundler-audit against the Gemfile." + task :'bundler-audit' do + require "bundler/audit/cli" + + %w(update check).each do |command| + Bundler::Audit::CLI.start [command] + end + end + + have_cloc = `which cloc`.strip != "" + if have_cloc + desc "Show LOC metrics for project using cloc." + task :cloc do + sh "cloc . --exclude-dir=pkg,.bundle,tmp" + end + end + + desc "Check for outdated gems." + task :bundler do + # Don't error-out if this fails, since we may not be able to update some + # deps. + sh "bundle outdated || true" + end +end + +desc "Run all lint checks against the code." +parent_task :lint + +task default: [:test, :lint]