Class: Dirwatch::Settings::WatchSetting

Inherits:
Object
  • Object
show all
Defined in:
lib/dirwatch/settings/watch_setting.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory:, file_match:, interval:, scripts:) ⇒ WatchSetting

Returns a new instance of WatchSetting.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/dirwatch/settings/watch_setting.rb', line 6

def initialize directory:, file_match:, interval:, scripts:
  @directory = directory
  raise 'directory must be set' if @directory.nil? || @directory.empty?
  @file_match = file_match
  raise 'file_match must be set' if @file_match.nil? || @file_match.empty?
  @interval = interval || raise('interval must be set')
  raise 'the interval must be greater than 0' if @interval <= 0
  if scripts.is_a? String
    scripts = [scripts]
  elsif !scripts.is_a?(Array) || scripts.any? {|s| !s.is_a? String }
    raise "the scripts need to be either one string or a list of strings. Not: #{scripts.insepct}"
  end
  @scripts = scripts
end

Instance Attribute Details

#intervalObject (readonly)

Returns the value of attribute interval.



4
5
6
# File 'lib/dirwatch/settings/watch_setting.rb', line 4

def interval
  @interval
end

#scriptsObject (readonly)

Returns the value of attribute scripts.



4
5
6
# File 'lib/dirwatch/settings/watch_setting.rb', line 4

def scripts
  @scripts
end

Instance Method Details

#exec_scriptsObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/dirwatch/settings/watch_setting.rb', line 29

def exec_scripts
  @scripts.each do |script|
    if script =~ / & *\z/
      system script
    else
      output = %x(#{script})
      raise "The command \"#{script}\" failed with: #{output}" if $? != 0
    end
  end
end

#filesObject



25
26
27
# File 'lib/dirwatch/settings/watch_setting.rb', line 25

def files
  Dir[files_path]
end

#files_pathObject



21
22
23
# File 'lib/dirwatch/settings/watch_setting.rb', line 21

def files_path
  File.join @directory, '**', @file_match
end

#to_sObject



40
41
42
# File 'lib/dirwatch/settings/watch_setting.rb', line 40

def to_s
  "#<#{self.class} files_path=#{files_path} interval=#{interval.inspect} scripts=#{scripts.inspect}>"
end