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
30 31 32 |
# File 'lib/twin/scanner.rb', line 30 def jobs @jobs end |
#name ⇒ Object
Returns the value of attribute name
30 31 32 |
# File 'lib/twin/scanner.rb', line 30 def name @name end |
Instance Method Details
#active_jobs ⇒ Object
45 |
# File 'lib/twin/scanner.rb', line 45 def active_jobs = jobs.select { |j| j.active == 1 } |
#description ⇒ Object
34 35 36 |
# File 'lib/twin/scanner.rb', line 34 def description jobs.map(&:description).reject(&:empty?).uniq.join(" / ") end |
#label ⇒ Object
32 |
# File 'lib/twin/scanner.rb', line 32 def label = jobs.first&.label |
#newest_source_mtime ⇒ Object
47 |
# File 'lib/twin/scanner.rb', line 47 def newest_source_mtime = jobs.map(&:source_mtime).compact.max |
#newest_target_mtime ⇒ Object
48 |
# File 'lib/twin/scanner.rb', line 48 def newest_target_mtime = jobs.map(&:target_mtime).compact.max |
#status ⇒ Object
Aggregate status across jobs — worst first.
39 40 41 42 43 |
# File 'lib/twin/scanner.rb', line 39 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
31 |
# File 'lib/twin/scanner.rb', line 31 def sync_file = jobs.first&.sync_file |