mirror of
				https://github.com/tailix/libkernaux.git
				synced 2025-10-23 23:45:29 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # 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'
 | |
| CLEAN << 'spec/examples.txt'
 | |
| 
 | |
| desc 'Run default checks'
 | |
| task default: %i[test lint]
 | |
| 
 | |
| desc 'Run tests'
 | |
| task test: :spec
 | |
| 
 | |
| desc 'Run code analysis tools'
 | |
| task lint: %i[rubocop cppcheck yard:cov]
 | |
| 
 | |
| desc 'Fix code style (rubocop --auto-correct)'
 | |
| task fix: 'rubocop:auto_correct'
 | |
| 
 | |
| begin
 | |
|   require 'rspec/core/rake_task'
 | |
|   RSpec::Core::RakeTask.new
 | |
| rescue LoadError
 | |
|   nil
 | |
| end
 | |
| 
 | |
| begin
 | |
|   require 'rubocop/rake_task'
 | |
|   RuboCop::RakeTask.new
 | |
| rescue LoadError
 | |
|   nil
 | |
| end
 | |
| 
 | |
| begin
 | |
|   require 'yard'
 | |
|   YARD::Rake::YardocTask.new
 | |
| rescue LoadError
 | |
|   nil
 | |
| end
 | |
| 
 | |
| begin
 | |
|   require 'rake/extensiontask'
 | |
|   Rake::ExtensionTask.new 'default' do |ext|
 | |
|     ext.lib_dir = 'lib/kernaux'
 | |
|   end
 | |
| 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 cppcheck'
 | |
| task :cppcheck do
 | |
|   sh(
 | |
|     'cppcheck',
 | |
|     '--quiet',
 | |
|     '--error-exitcode=1',
 | |
|     '--std=c99',
 | |
|     '--enable=warning,style,performance,portability',
 | |
|     __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 != 100
 | |
|   end
 | |
| end
 | 
