Module: GitCrecord

Defined in:
lib/git_crecord.rb,
lib/git_crecord/ui.rb,
lib/git_crecord/git.rb,
lib/git_crecord/diff.rb,
lib/git_crecord/logger.rb,
lib/git_crecord/version.rb,
lib/git_crecord/ui/color.rb,
lib/git_crecord/diff/file.rb,
lib/git_crecord/diff/hunk.rb,
lib/git_crecord/diff/line.rb,
lib/git_crecord/quit_action.rb,
lib/git_crecord/ui/help_window.rb,
lib/git_crecord/diff/difference.rb,
lib/git_crecord/ui/hunks_window.rb

Defined Under Namespace

Modules: Diff, Git, UI Classes: QuitAction

Constant Summary collapse

LOGGER =
Logger.new(File.new(File.join(ENV['HOME'], '.git-crecord.log'), 'w'))
VERSION =
'1.1.0'

Class Method Summary collapse

Class Method Details

.helpObject



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/git_crecord.rb', line 48

def self.help
  puts "    usage: git crecord [<options>]\n\n      -u, --untracked-files  -- show untracked files\n      -R, --reverse          -- unstage hunks\n      --version              -- show version information\n      -h                     -- this help message\n\n      in-program commands:\n    \#{UI::HelpWindow::CONTENT.gsub(/^/, '  ')}\n  HELP\nend\n"

.main(argv) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/git_crecord.rb', line 10

def self.main(argv)
  if argv.include?('--version')
    puts VERSION
    true
  elsif argv.include?('--help') || argv.include?('-h')
    help
    true
  else
    run(with_untracked_files: untracked_files?(argv), reverse: reverse?(argv))
  end
end

.reverse?(argv) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/git_crecord.rb', line 28

def self.reverse?(argv)
  argv.include?('--reverse') || argv.include?('-R')
end

.run(with_untracked_files: false, reverse: false) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/git_crecord.rb', line 32

def self.run(with_untracked_files: false, reverse: false)
  toplevel_dir = Git.toplevel_dir
  return false if toplevel_dir.empty?

  Dir.chdir(toplevel_dir) do
    files = Diff.parse(Git.diff(staged: reverse), reverse)
    files.concat(Diff.untracked_files(Git.status)) if with_untracked_files
    return false if files.empty?

    result = UI.run(files)
    return result.call(reverse) == true if result.respond_to?(:call)

    true
  end
end

.untracked_files?(argv) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
# File 'lib/git_crecord.rb', line 22

def self.untracked_files?(argv)
  return false if reverse?(argv)

  argv.include?('--untracked-files') || argv.include?('-u')
end