# frozen_string_literal: true require 'bundler/gem_tasks' module Bundler class GemHelper def tag_version(*) yield if block_given? end def git_push(*); end def perform_git_push(*); end end end CLEAN << '.yardoc' CLEAN << 'coverage' CLEAN << 'doc' desc 'Run default checks' task default: %i[test lint] desc 'Run tests' task test: :tests desc 'Run code analysis tools' task lint: %i[rubocop yard:cov] desc 'Fix code style (rubocop --auto-correct)' task fix: 'rubocop:auto_correct' begin require 'rubocop/rake_task' RuboCop::RakeTask.new rescue LoadError nil end begin require 'yard' YARD::Rake::YardocTask.new rescue LoadError nil end desc 'Open development console' task :console do sh 'bundle', 'exec', File.expand_path(File.join('bin', 'console'), __dir__) end desc 'Run tests' task :tests do sh 'bundle', 'exec', File.expand_path(File.join('tests', 'examples.rb'), __dir__) end namespace :yard do desc 'Measure documentation coverage' task :cov do result = `bundle exec yard stats`.lines.last.strip.freeze m = result.match(/\A(\d+(\.\d+)?)% documented\z/) raise 'Invalid result' if m.nil? coverage = m[1].to_f.round(2) puts "Documentation coverage: #{coverage}%" raise 'Not fully documented!' if coverage < 38.32 end end