Class: Kward::Workers::GitGuard
- Inherits:
-
Object
- Object
- Kward::Workers::GitGuard
- Defined in:
- lib/kward/workers/git_guard.rb
Overview
Small git boundary used by write-lane workers to keep implementation work isolated.
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
- #apply_stash(ref) ⇒ Object
- #clean? ⇒ Boolean
- #commit_all(message) ⇒ Object
- #dirty? ⇒ Boolean
- #drop_stash(ref) ⇒ Object
- #head ⇒ Object
-
#initialize(root: Dir.pwd) ⇒ GitGuard
constructor
A new instance of GitGuard.
- #repository? ⇒ Boolean
- #stash(message) ⇒ Object
- #status ⇒ Object
Constructor Details
Instance Method Details
#apply_stash(ref) ⇒ Object
54 55 56 |
# File 'lib/kward/workers/git_guard.rb', line 54 def apply_stash(ref) run("stash", "apply", ref.to_s) end |
#clean? ⇒ Boolean
15 16 17 18 19 |
# File 'lib/kward/workers/git_guard.rb', line 15 def clean? return true unless repository? status.empty? end |
#commit_all(message) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/kward/workers/git_guard.rb', line 34 def commit_all() add = run("add", "-A") return Result.new(success: false, stdout: add.stdout, stderr: add.stderr) unless add.success? commit = run("commit", "-m", ) return Result.new(success: false, stdout: commit.stdout, stderr: commit.stderr) unless commit.success? Result.new(success: true, stdout: commit.stdout, stderr: commit.stderr, commit: head) end |
#dirty? ⇒ Boolean
21 22 23 |
# File 'lib/kward/workers/git_guard.rb', line 21 def dirty? !clean? end |
#drop_stash(ref) ⇒ Object
58 59 60 |
# File 'lib/kward/workers/git_guard.rb', line 58 def drop_stash(ref) run("stash", "drop", ref.to_s) end |
#head ⇒ Object
29 30 31 32 |
# File 'lib/kward/workers/git_guard.rb', line 29 def head result = run("rev-parse", "--verify", "HEAD") result.success? ? result.stdout.strip : nil end |
#repository? ⇒ Boolean
11 12 13 |
# File 'lib/kward/workers/git_guard.rb', line 11 def repository? success?("rev-parse", "--is-inside-work-tree") end |
#stash(message) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/kward/workers/git_guard.rb', line 44 def stash() before = stash_refs result = run("stash", "push", "--include-untracked", "-m", ) return Result.new(success: false, stdout: result.stdout, stderr: result.stderr) unless result.success? return Result.new(success: true, stdout: result.stdout, stderr: result.stderr) if result.stdout.include?("No local changes") ref = (stash_refs - before).first || stash_refs.first Result.new(success: true, stdout: result.stdout, stderr: result.stderr, commit: ref) end |
#status ⇒ Object
25 26 27 |
# File 'lib/kward/workers/git_guard.rb', line 25 def status run("status", "--porcelain").stdout end |