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
42 43 44 |
# File 'lib/twin/scanner.rb', line 42 def jobs @jobs end |
#name ⇒ Object
Returns the value of attribute name
42 43 44 |
# File 'lib/twin/scanner.rb', line 42 def name @name end |
Instance Method Details
#active_jobs ⇒ Object
57 |
# File 'lib/twin/scanner.rb', line 57 def active_jobs = jobs.select { |j| j.active == 1 } |
#description ⇒ Object
46 47 48 |
# File 'lib/twin/scanner.rb', line 46 def description jobs.map(&:description).reject(&:empty?).uniq.join(" / ") end |
#label ⇒ Object
44 |
# File 'lib/twin/scanner.rb', line 44 def label = jobs.first&.label |
#newest_source_mtime ⇒ Object
59 |
# File 'lib/twin/scanner.rb', line 59 def newest_source_mtime = jobs.map(&:source_mtime).compact.max |
#newest_target_mtime ⇒ Object
60 |
# File 'lib/twin/scanner.rb', line 60 def newest_target_mtime = jobs.map(&:target_mtime).compact.max |
#status ⇒ Object
Aggregate status across jobs — worst first.
51 52 53 54 55 |
# File 'lib/twin/scanner.rb', line 51 def status states = jobs.map(&:status) %i[unreachable both_missing missing_source missing_target target_newer source_newer disabled in_sync] .find { |s| states.include?(s) } || :in_sync end |
#sync_file ⇒ Object
43 |
# File 'lib/twin/scanner.rb', line 43 def sync_file = jobs.first&.sync_file |