Class: Twin::Program
- Inherits:
-
Struct
- Object
- Struct
- Twin::Program
- Defined in:
- lib/twin/scanner.rb
Overview
A logical group of Jobs sharing a Program name (e.g. “Matterbase” can have multiple paths). Selection unit in the picker.
Instance Attribute Summary collapse
-
#jobs ⇒ Object
Returns the value of attribute jobs.
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #active_jobs ⇒ Object
- #description ⇒ Object
- #label ⇒ Object
- #newest_source_mtime ⇒ Object
- #newest_target_mtime ⇒ Object
-
#status ⇒ Object
Aggregate status across jobs — worst first.
- #sync_file ⇒ Object
Instance Attribute Details
#jobs ⇒ Object
Returns the value of attribute jobs
33 34 35 |
# File 'lib/twin/scanner.rb', line 33 def jobs @jobs end |
#name ⇒ Object
Returns the value of attribute name
33 34 35 |
# File 'lib/twin/scanner.rb', line 33 def name @name end |
Instance Method Details
#active_jobs ⇒ Object
48 |
# File 'lib/twin/scanner.rb', line 48 def active_jobs = jobs.select { |j| j.active == 1 } |
#description ⇒ Object
37 38 39 |
# File 'lib/twin/scanner.rb', line 37 def description jobs.map(&:description).reject(&:empty?).uniq.join(" / ") end |
#label ⇒ Object
35 |
# File 'lib/twin/scanner.rb', line 35 def label = jobs.first&.label |
#newest_source_mtime ⇒ Object
50 |
# File 'lib/twin/scanner.rb', line 50 def newest_source_mtime = jobs.map(&:source_mtime).compact.max |
#newest_target_mtime ⇒ Object
51 |
# File 'lib/twin/scanner.rb', line 51 def newest_target_mtime = jobs.map(&:target_mtime).compact.max |
#status ⇒ Object
Aggregate status across jobs — worst first.
42 43 44 45 46 |
# File 'lib/twin/scanner.rb', line 42 def status states = jobs.map(&:status) %i[both_missing missing_source missing_target target_newer source_newer disabled in_sync] .find { |s| states.include?(s) } || :in_sync end |
#sync_file ⇒ Object
34 |
# File 'lib/twin/scanner.rb', line 34 def sync_file = jobs.first&.sync_file |