Module: RailVerdict::Git::Command
- Defined in:
- lib/rail_verdict/git/command.rb
Constant Summary collapse
- GIT_EXECUTABLE =
"git"
Class Method Summary collapse
- .interpret(result, chdir:) ⇒ Object
- .require_success(result, context_message: "git command failed") ⇒ Object
- .run(argv, chdir:, timeout_seconds: 5.0, max_stdout_bytes: 524288, max_stderr_bytes: 65536, runner: ProcessRunner) ⇒ Object
Class Method Details
.interpret(result, chdir:) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rail_verdict/git/command.rb', line 18 def interpret(result, chdir:) case result.status when :spawn_failed raise Git::Unavailable, "git is not available: #{result.detail}" when :timed_out raise Git::Timeout, "git operation timed out" when :truncated raise Git::Truncated, "git output was truncated" when :signaled raise Git::Error, "git terminated by signal #{result.signal}" when :exited result else raise Git::Error, "unexpected git result: #{result.status}" end if result.stdout_truncated || result.stderr_truncated raise Git::Truncated, "git output was truncated" end result end |
.require_success(result, context_message: "git command failed") ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/rail_verdict/git/command.rb', line 39 def require_success(result, context_message: "git command failed") return if result.exit_code == 0 stderr = result.stderr.to_s.strip suffix = stderr.empty? ? "" : " (#{stderr[0, 1024]})" raise Git::Error, "#{}: exit #{result.exit_code}#{suffix}" end |
.run(argv, chdir:, timeout_seconds: 5.0, max_stdout_bytes: 524288, max_stderr_bytes: 65536, runner: ProcessRunner) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/rail_verdict/git/command.rb', line 10 def run(argv, chdir:, timeout_seconds: 5.0, max_stdout_bytes: 524288, max_stderr_bytes: 65536, runner: ProcessRunner) argv.each do |element| raise ArgumentError, "git argv elements must be strings" unless element.is_a?(String) raise ArgumentError, "git argv elements cannot contain NUL bytes" if element.include?("\0") end runner.run(GIT_EXECUTABLE, argv, chdir: chdir, timeout_seconds: timeout_seconds, max_stdout_bytes: max_stdout_bytes, max_stderr_bytes: max_stderr_bytes) end |