Class: DockerSync::ProjectConfig

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/docker-sync/config/project_config.rb

Constant Summary collapse

REQUIRED_CONFIG_VERSION =
'2'.freeze
ERROR_MISSING_CONFIG_VERSION =
"Your docker-sync.yml file does not include a version: \"#{REQUIRED_CONFIG_VERSION}\""\
'(Add this if you migrated from docker-sync 0.1.x)'.freeze
ERROR_MISMATCH_CONFIG_VERSION =
'Your docker-sync.yml file does not match the required version '\
"(#{REQUIRED_CONFIG_VERSION}).".freeze
ERROR_MISSING_SYNCS =
'no syncs defined'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_path: nil, config_string: nil) ⇒ ProjectConfig

Returns a new instance of ProjectConfig.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/docker-sync/config/project_config.rb', line 28

def initialize(config_path: nil, config_string: nil)
  if config_string.nil?
    if config_path.nil? || config_path.empty?
      config_path = DockerSync::ConfigLocator.lookup_project_config_path
    end

    load_project_config(config_path)
  else
    @config = DockerSync::ConfigSerializer.default_deserializer_string(config_string)
    @config_path = nil
  end

  validate_config!
  normalize_config!
end

Instance Attribute Details

#config_pathObject (readonly)

Returns the value of attribute config_path.



23
24
25
# File 'lib/docker-sync/config/project_config.rb', line 23

def config_path
  @config_path
end

Instance Method Details

#fswatch_required?Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
# File 'lib/docker-sync/config/project_config.rb', line 64

def fswatch_required?
  # noinspection RubyUnusedLocalVariable
  config['syncs'].any? { |name, sync_config|
    sync_config['watch_strategy'] == 'fswatch'
  }
end

#load_project_config(config_path = nil) ⇒ Object



44
45
46
47
48
# File 'lib/docker-sync/config/project_config.rb', line 44

def load_project_config(config_path = nil)
  @config_path = config_path
  return unless File.exist?(@config_path)
  @config = DockerSync::ConfigSerializer.default_deserializer_file(@config_path)
end

#rsync_required?Boolean

Returns:

  • (Boolean)


57
58
59
60
61
62
# File 'lib/docker-sync/config/project_config.rb', line 57

def rsync_required?
  # noinspection RubyUnusedLocalVariable
  config['syncs'].any? { |name, sync_config|
    sync_config['sync_strategy'] == 'rsync'
  }
end

#unison_required?Boolean

Returns:

  • (Boolean)


50
51
52
53
54
55
# File 'lib/docker-sync/config/project_config.rb', line 50

def unison_required?
  # noinspection RubyUnusedLocalVariable
  config['syncs'].any? { |name, sync_config|
    sync_config['sync_strategy'] == 'unison' || sync_config['watch_strategy'] == 'unison'
  }
end