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



42
43
44
# File 'lib/twin/scanner.rb', line 42

def jobs
  @jobs
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



42
43
44
# File 'lib/twin/scanner.rb', line 42

def name
  @name
end

Instance Method Details

#active_jobsObject



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

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

#descriptionObject



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

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

#labelObject



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

def label     = jobs.first&.label

#newest_source_mtimeObject



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

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

#newest_target_mtimeObject



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

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

#statusObject

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_fileObject



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

def sync_file = jobs.first&.sync_file