File: ruby.rb

package info (click to toggle)
puppet-module-puppetlabs-inifile 5.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 308 kB
  • sloc: ruby: 872; sh: 7; makefile: 2
file content (96 lines) | stat: -rw-r--r-- 2,363 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# frozen_string_literal: true

require File.expand_path('../../../util/ini_file', __FILE__)
require File.expand_path('../../../util/setting_value', __FILE__)

Puppet::Type.type(:ini_subsetting).provide(:ruby) do
  desc '
  Creates new ini_subsetting file, a specific config file with a provider that uses
  this as its parent and implements the method
  self.file_path, and that will provide the value for the path to the
  ini file.'
  def exists?
    setting_value.get_subsetting_value(subsetting, resource[:use_exact_match])
  end

  def create
    setting_value.add_subsetting(
      subsetting, resource[:value], resource[:use_exact_match],
      resource[:insert_type], resource[:insert_value]
    )
    ini_file.set_value(section, setting, key_val_separator, setting_value.get_value)
    ini_file.save
    @ini_file = nil
    @setting_value = nil
  end

  def destroy
    setting_value.remove_subsetting(subsetting, resource[:use_exact_match])
    if setting_value.get_value.empty? && resource[:delete_if_empty]
      ini_file.remove_setting(section, setting)
    else
      ini_file.set_value(section, setting, key_val_separator, setting_value.get_value)
    end
    ini_file.save
    @ini_file = nil
    @setting_value = nil
  end

  def value
    setting_value.get_subsetting_value(subsetting)
  end

  def value=(value)
    setting_value.add_subsetting(
      subsetting, value, resource[:use_exact_match],
      resource[:insert_type], resource[:insert_value]
    )
    ini_file.set_value(section, setting, key_val_separator, setting_value.get_value)
    ini_file.save
  end

  def section
    resource[:section]
  end

  def setting
    resource[:setting]
  end

  def subsetting
    resource[:subsetting]
  end

  def subsetting_separator
    resource[:subsetting_separator]
  end

  def file_path
    resource[:path]
  end

  def key_val_separator
    resource[:key_val_separator] || '='
  end

  def subsetting_key_val_separator
    resource[:subsetting_key_val_separator] || ''
  end

  def quote_char
    resource[:quote_char]
  end

  private

  def ini_file
    @ini_file ||= Puppet::Util::IniFile.new(file_path, key_val_separator)
  end

  def setting_value
    @setting_value ||= Puppet::Util::SettingValue.new(
      ini_file.get_value(section, setting),
      subsetting_separator, quote_char, subsetting_key_val_separator
    )
  end
end