class GitCleanser::SmartThing

Public Class Methods

new(config) click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 3
def initialize(config)
  @config = config
  @compiled_files = sh(@config['compiled_files_command']).split
  @ignored_and_untracked_files = git_ls_files(:ignored, :other)
  @ignored_but_tracked_files = git_ls_files(:ignored)
  @all_files = Dir['**/*']
end

Public Instance Methods

generated_but_not_ignored() click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 11
def generated_but_not_ignored
  @compiled_files - @ignored_and_untracked_files
end
ignored_but_not_generated() click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 15
def ignored_but_not_generated
  @ignored_and_untracked_files - @compiled_files
end
ignored_but_tracked() click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 19
def ignored_but_tracked
  @ignored_but_tracked_files
end
uncompiled() click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 23
def uncompiled
  @all_files - @compiled_files
end

Private Instance Methods

git_ls_files(*ruby_opts) click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 29
def git_ls_files *ruby_opts
  shell_opts = ruby_opts.map { |opt| "--#{opt}" }.join(" ")
  sh("git ls-files -z --exclude-standard #{shell_opts}").split("\0")
end
sh(cmd) click to toggle source
# File lib/git_cleanser/smart_thing.rb, line 34
def sh(cmd)
  `#{cmd}`.tap do
    if $?.exitstatus > 0
      raise "Shell command failed: " + cmd
    end
  end
end