Module: Rosette::Core::Commands::WithRefs
- Defined in:
- lib/rosette/core/commands/git/with_refs.rb
Overview
Mixin that handles configuration and validation of a set of git refs or commit ids. Meant to be mixed into the classes in Rosette::Core::Commands. Required to be used in combination with WithRepoName.
Instance Attribute Summary collapse
-
#commit_str ⇒ String
readonly
The raw value as set by either #set_ref or #set_commit_id.
-
#commit_strs ⇒ Object
readonly
Returns the value of attribute commit_strs.
Instance Method Summary collapse
-
#commit_ids ⇒ String
Resolves the git ref or commit id at
indexand returns the corresponding commit id. -
#set_commit_ids(commit_ids) ⇒ self
Set the git commit ids.
-
#set_refs(ref_strs) ⇒ self
Set the git refs (i.e. a branch names).
Instance Attribute Details
#commit_str ⇒ String (readonly)
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/rosette/core/commands/git/with_refs.rb', line 35 module WithRefs attr_reader :commit_strs # Set the git refs (i.e. a branch names). Calling this method after {#set_commit_ids} # will overwrite the commit id values. In other words, it's generally a good idea to # only call one of {#set_commit_ids} or {#set_refs} but not both. # # @param [Array<String>] ref_strs The git refs. # @return [self] def set_refs(ref_strs) @commit_strs = ref_strs self end # Set the git commit ids. Calling this method after {#set_refs} will overwrite the ref values. # In other words, it's generally a good idea to only call one of {#set_commit_ids} or {#set_refs} # but not both. # # @param [Array<String>] commit_ids The commit ids. # @return [self] def set_commit_ids(commit_ids) @commit_strs = commit_ids self end # Resolves the git ref or commit id at +index+ and returns the corresponding commit id. # If {#set_refs} was used to set git refs (i.e. branch names), this method looks up # and returns the corresponding commit id. If {#set_commit_ids} was used to set # commit ids, then that commit id is validated and returned. # # @param [Fixnum] index The index of the ref or commit id to return. # @return [String] The commit id set via either {#set_refs} or {#set_commit_ids}. # @raise [Java::OrgEclipseJgitErrors::MissingObjectException, Java::JavaLang::IllegalArgumentException] # If either the commit id doesn't exist or the ref can't be found. def commit_ids @commit_ids ||= @commit_strs.map do |commit_str| REV_COMMIT_MUTEX.synchronize do get_repo(repo_name) .repo.get_rev_commit(commit_str) .getId.name end end end private REV_COMMIT_MUTEX = Mutex.new def self.included(base) if base.respond_to?(:validate) base.validate :commit_strs, type: :commits end end end |
#commit_strs ⇒ Object (readonly)
Returns the value of attribute commit_strs.
36 37 38 |
# File 'lib/rosette/core/commands/git/with_refs.rb', line 36 def commit_strs @commit_strs end |
Instance Method Details
#commit_ids ⇒ String
Resolves the git ref or commit id at index and returns the corresponding commit id. If #set_refs was used to set git refs (i.e. branch names), this method looks up and returns the corresponding commit id. If #set_commit_ids was used to set commit ids, then that commit id is validated and returned.
69 70 71 72 73 74 75 76 77 |
# File 'lib/rosette/core/commands/git/with_refs.rb', line 69 def commit_ids @commit_ids ||= @commit_strs.map do |commit_str| REV_COMMIT_MUTEX.synchronize do get_repo(repo_name) .repo.get_rev_commit(commit_str) .getId.name end end end |
#set_commit_ids(commit_ids) ⇒ self
Set the git commit ids. Calling this method after #set_refs will overwrite the ref values. In other words, it’s generally a good idea to only call one of #set_commit_ids or #set_refs but not both.
55 56 57 58 |
# File 'lib/rosette/core/commands/git/with_refs.rb', line 55 def set_commit_ids(commit_ids) @commit_strs = commit_ids self end |
#set_refs(ref_strs) ⇒ self
Set the git refs (i.e. a branch names). Calling this method after #set_commit_ids will overwrite the commit id values. In other words, it’s generally a good idea to only call one of #set_commit_ids or #set_refs but not both.
44 45 46 47 |
# File 'lib/rosette/core/commands/git/with_refs.rb', line 44 def set_refs(ref_strs) @commit_strs = ref_strs self end |