Class: Kettle::Family::Selection
- Inherits:
-
Object
- Object
- Kettle::Family::Selection
- Defined in:
- lib/kettle/family/selection.rb
Constant Summary collapse
- STATUS_TOKEN_KEYS =
{ "unreleased" => "unreleased_entries", "unrel" => "unreleased_entries", "prepared" => "prepared_release_pending", "prep" => "prepared_release_pending", "pending" => "pending_release", "pend" => "pending_release", "bump" => "bump_release_pending" }.freeze
Class Method Summary collapse
- .status_token?(value) ⇒ Boolean
- .status_tokens ⇒ Object
- .validate_release_state_only_filter!(only) ⇒ Object
Instance Method Summary collapse
- #apply(only: nil, exclude: nil, start_at: nil) ⇒ Object
-
#initialize(members:, release_state_results: nil) ⇒ Selection
constructor
A new instance of Selection.
Constructor Details
#initialize(members:, release_state_results: nil) ⇒ Selection
Returns a new instance of Selection.
33 34 35 36 |
# File 'lib/kettle/family/selection.rb', line 33 def initialize(members:, release_state_results: nil) @members = members @release_state_results = release_state_results end |
Class Method Details
.status_token?(value) ⇒ Boolean
20 21 22 |
# File 'lib/kettle/family/selection.rb', line 20 def self.status_token?(value) STATUS_TOKEN_KEYS.key?(value.to_s) end |
.status_tokens ⇒ Object
16 17 18 |
# File 'lib/kettle/family/selection.rb', line 16 def self.status_tokens STATUS_TOKEN_KEYS.keys end |
.validate_release_state_only_filter!(only) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/kettle/family/selection.rb', line 24 def self.validate_release_state_only_filter!(only) names = only.to_s.split(",").map(&:strip).reject(&:empty?) status_tokens = names.select { |name| status_token?(name) } return if status_tokens.empty? member_names = names - status_tokens raise Error, "--only release-state tokens cannot be combined with member names: #{member_names.join(", ")}" unless member_names.empty? end |
Instance Method Details
#apply(only: nil, exclude: nil, start_at: nil) ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/kettle/family/selection.rb', line 38 def apply(only: nil, exclude: nil, start_at: nil) selected = members selected = select_only(selected, only) if only selected = select_exclude(selected, exclude) if exclude selected = select_start_at(selected, start_at) if start_at raise Error, "selection is empty" if selected.empty? selected end |