Class: VagrantBindfs::Bindfs::OptionSet

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/vagrant-bindfs/bindfs/option_set.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version = nil, options = {}) ⇒ OptionSet

Returns a new instance of OptionSet.



17
18
19
20
21
22
23
24
25
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 17

def initialize(version = nil, options = {})
  @version              = version
  @options              = normalize_option_names(options)
  @invalid_options      = {}
  @unsupported_options  = {}

  extract_invalid_options!
  extract_unsupported_options!
end

Instance Attribute Details

#invalid_optionsObject (readonly)

Returns the value of attribute invalid_options.



8
9
10
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 8

def invalid_options
  @invalid_options
end

#optionsObject (readonly)

Returns the value of attribute options.



7
8
9
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 7

def options
  @options
end

#unsupported_optionsObject (readonly)

Returns the value of attribute unsupported_options.



9
10
11
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 9

def unsupported_options
  @unsupported_options
end

#versionObject (readonly)

Returns the value of attribute version.



5
6
7
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 5

def version
  @version
end

Class Method Details

.bindfs_optionsObject



80
81
82
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 80

def bindfs_options
  @bindfs_options ||= JSON.parse(File.read(File.expand_path('../option_definitions.json', __FILE__)))
end

.compatible_name_for_version(option_name, version) ⇒ Object



91
92
93
94
95
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 91

def compatible_name_for_version(option_name, version)
  return 'user'   if option_name == 'force-user' && version_lower_than(version, '1.12')
  return 'group'  if option_name == 'force-group' && version_lower_than(version, '1.12')
  option_name
end

.supported_options(version) ⇒ Object



84
85
86
87
88
89
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 84

def supported_options(version)
  bindfs_options.each_with_object({}) do |(name, definition), supported|
    supported[name] = definition if version.nil? || !version_lower_than(version, definition['since'])
    supported
  end
end

Instance Method Details

#merge(other) ⇒ Object



34
35
36
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 34

def merge(other)
  dup.tap { |result| result.merge!(other) }
end

#merge!(other) ⇒ Object



27
28
29
30
31
32
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 27

def merge!(other)
  other = other.to_version(version) if other.respond_to?(:to_version)
  @options.merge!(normalize_option_names(other))
  extract_invalid_options!
  extract_unsupported_options!
end

#to_version(new_version) ⇒ Object



38
39
40
# File 'lib/vagrant-bindfs/bindfs/option_set.rb', line 38

def to_version(new_version)
  self.class.new(new_version, @options.merge(invalid_options).merge(unsupported_options))
end