module Deathnote
Constants
- VERSION
Public Class Methods
run(argv)
click to toggle source
# File lib/deathnote.rb, line 10 def run(argv) options = parse_options(argv) backup_commit = cmd('git rev-parse --abbrev-ref HEAD') cmd("git checkout #{options[:past_commit]}") past_missing = DeadCodes.new(options.deep_clone).run cmd("git checkout #{options[:newer_commit]}") newer_missing = DeadCodes.new(options.deep_clone).run newer_missing. reject { |unused, _location| past_missing.has_key?(unused) }. each { |unused, location| puts "#{unused} #{location}" } ensure cmd("git checkout #{backup_commit}") end
Private Class Methods
cmd(command)
click to toggle source
# File lib/deathnote.rb, line 29 def cmd(command) Open3.popen3(command) { |_i, o, _e, _t| o.read.chomp } end
parse_options(argv)
click to toggle source
# File lib/deathnote.rb, line 33 def parse_options(argv) options = { whitelist: [] } OptionParser.new do |opts| opts.banner = 'Usage: deathnote [options] files_or_dirs' opts.on('-h', '--help', 'Display this help.') do puts opts exit end opts.on('-p[commit hash]', '--past-commit=[commit hash]', 'Specify past commit hash.') do |past_commit| options[:past_commit] = past_commit end opts.on('-n[commit hash]', '--newer-commit=[commit hash]', 'Specify newer commit hash.') do |newer_commit| options[:newer_commit] = newer_commit end opts.on('-r', '--rails', 'Filter some rails call conversions.') do options[:rails] = true end opts.on('-w', '--whitelist=FILE', 'Whitelist with separated by \n') do options[:whitelist] = File.read(s).split(/\n+/) rescue [] end opts.on('-e', '--exclude=FILE1,FILE2,...', Array, 'Exclude files or directories in comma-separated list.') do |list| options[:exclude] = list end end.parse! options[:target_paths] = argv options rescue OptionParser::InvalidOption => e warn "Fail to parse options." warn e.message exit 1 end