Class: Dirwatch::Settings

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

Defined Under Namespace

Classes: WatchSetting

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSettings

Returns a new instance of Settings.



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

def initialize
  @watch_settings = []
end

Instance Attribute Details

#watch_settingsObject (readonly)

Returns the value of attribute watch_settings.



19
20
21
# File 'lib/dirwatch/settings.rb', line 19

def watch_settings
  @watch_settings
end

Class Method Details

.from_file(filename, options) ⇒ Object

Raises:



10
11
12
13
14
15
16
17
# File 'lib/dirwatch/settings.rb', line 10

def self.from_file filename, options
  raise FileNotFoundError, filename unless File.exist? filename
  settings = new
  config = YAML.load_file(filename).symbolize_keys
  raise FileEmptyError, filename unless config
  settings.import_config config, options.directory
  settings
end

.from_options(options) ⇒ Object



6
7
8
# File 'lib/dirwatch/settings.rb', line 6

def self.from_options options
  Settings.from_file(File.join(options.directory, '.dirwatch.yml'), options)
end

Instance Method Details

#<<(watch_setting) ⇒ Object



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

def << watch_setting
  add watch_setting
end

#add(watch_setting) ⇒ Object



29
30
31
# File 'lib/dirwatch/settings.rb', line 29

def add watch_setting
  @watch_settings << watch_setting
end

#add_from_config(watch_setting, defaults, directory) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/dirwatch/settings.rb', line 33

def add_from_config watch_setting, defaults, directory
  add WatchSetting.new(
    directory:  directory,
    file_match: watch_setting[:file_match] || defaults[:file_match],
    interval:   watch_setting[:interval]   || defaults[:interval],
    scripts:    watch_setting[:script]     || defaults[:script],
  )
end

#by_interval(&block) ⇒ Object



42
43
44
# File 'lib/dirwatch/settings.rb', line 42

def by_interval &block
  @watch_settings.group_by(&:interval).each(&block)
end

#import_config(config, directory) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/dirwatch/settings.rb', line 46

def import_config config, directory
  watch_data = {}
  defaults = {}
  config.each do |key, watch_setting|
    if key == :defaults
      defaults.merge! watch_setting
    else
      watch_data[key] = watch_setting
    end
  end
  watch_data.each do |_key, watch_setting|
    add_from_config watch_setting, defaults, directory
  end
end