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



30
31
32
# File 'lib/twin/scanner.rb', line 30

def jobs
  @jobs
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



30
31
32
# File 'lib/twin/scanner.rb', line 30

def name
  @name
end

Instance Method Details

#active_jobsObject



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

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

#descriptionObject



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

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

#labelObject



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

def label     = jobs.first&.label

#newest_source_mtimeObject



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

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

#newest_target_mtimeObject



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

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

#statusObject

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_fileObject



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

def sync_file = jobs.first&.sync_file