Class: Twin::Program

Inherits:
Struct
  • Object
show all
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

Instance Method Summary collapse

Instance Attribute Details

#jobsObject

Returns the value of attribute jobs

Returns:

  • (Object)

    the current value of jobs



33
34
35
# File 'lib/twin/scanner.rb', line 33

def jobs
  @jobs
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



33
34
35
# File 'lib/twin/scanner.rb', line 33

def name
  @name
end

Instance Method Details

#active_jobsObject



48
# File 'lib/twin/scanner.rb', line 48

def active_jobs = jobs.select { |j| j.active == 1 }

#descriptionObject



37
38
39
# File 'lib/twin/scanner.rb', line 37

def description
  jobs.map(&:description).reject(&:empty?).uniq.join(" / ")
end

#labelObject



35
# File 'lib/twin/scanner.rb', line 35

def label     = jobs.first&.label

#newest_source_mtimeObject



50
# File 'lib/twin/scanner.rb', line 50

def newest_source_mtime = jobs.map(&:source_mtime).compact.max

#newest_target_mtimeObject



51
# File 'lib/twin/scanner.rb', line 51

def newest_target_mtime = jobs.map(&:target_mtime).compact.max

#statusObject

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_fileObject



34
# File 'lib/twin/scanner.rb', line 34

def sync_file = jobs.first&.sync_file