Module: KKGit::GitRunner

Defined in:
lib/kk/git/git_runner.rb

Overview

Shared git subprocess helper for CommitMessage and GitOps.

Class Method Summary collapse

Class Method Details

.capture(args, repo_dir: '.') ⇒ Object



10
11
12
13
# File 'lib/kk/git/git_runner.rb', line 10

def capture(args, repo_dir: '.')
  stdout, stderr, status = Open3.capture3('git', *args, chdir: repo_dir)
  [normalize_utf8(stdout), normalize_utf8(stderr), status.success?]
end

.capture!(args, repo_dir: '.') ⇒ Object



15
16
17
18
19
20
# File 'lib/kk/git/git_runner.rb', line 15

def capture!(args, repo_dir: '.')
  stdout, stderr, ok = capture(args, repo_dir: repo_dir)
  raise "git #{args.join(' ')} failed: #{stderr.strip}" unless ok

  stdout
end

.normalize_utf8(str) ⇒ Object



22
23
24
# File 'lib/kk/git/git_runner.rb', line 22

def normalize_utf8(str)
  str.to_s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace, replace: "\uFFFD")
end