Class: EtcGroup

Inherits:
Object
  • Object
show all
Includes:
ContentParser, Converter
Defined in:
lib/resources/etc_group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ContentParser

#parse_comment_line, #parse_passwd, #parse_passwd_line

Methods included from Converter

#convert_to_i

Constructor Details

#initialize(path = nil) ⇒ EtcGroup

Returns a new instance of EtcGroup.



34
35
36
37
38
39
40
41
# File 'lib/resources/etc_group.rb', line 34

def initialize(path = nil)
  @path = path || '/etc/group'
  @entries = parse_group(@path)

  # skip resource if it is not supported on current OS
  return skip_resource 'The `etc_group` resource is not supported on your OS.' \
  unless %w{ubuntu debian redhat fedora arch darwin freebsd}.include?(inspec.os[:family])
end

Instance Attribute Details

#entriesObject

Returns the value of attribute entries.



33
34
35
# File 'lib/resources/etc_group.rb', line 33

def entries
  @entries
end

#gidObject

Returns the value of attribute gid.



33
34
35
# File 'lib/resources/etc_group.rb', line 33

def gid
  @gid
end

Instance Method Details

#gids(filter = nil) ⇒ Object



48
49
50
51
# File 'lib/resources/etc_group.rb', line 48

def gids(filter = nil)
  entries = filter || @entries
  entries.map { |x| x['gid'] } if !entries.nil?
end

#groups(filter = nil) ⇒ Object



43
44
45
46
# File 'lib/resources/etc_group.rb', line 43

def groups(filter = nil)
  entries = filter || @entries
  entries.map { |x| x['name'] } if !entries.nil?
end

#to_sObject



86
87
88
# File 'lib/resources/etc_group.rb', line 86

def to_s
  '/etc/group'
end

#users(filter = nil) ⇒ Object



53
54
55
56
57
58
59
60
61
62
# File 'lib/resources/etc_group.rb', line 53

def users(filter = nil)
  entries = filter || @entries
  return nil if entries.nil?
  # filter the user entry
  res = entries.map { |x|
    x['members'].split(',') if !x.nil? && !x['members'].nil?
  }.flatten
  # filter nil elements
  res.reject { |x| x.nil? || x.empty? }
end

#where(conditions = {}) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/resources/etc_group.rb', line 64

def where(conditions = {})
  return if conditions.empty?
  fields = {
    name: 'name',
    group_name: 'name',
    password: 'password',
    gid: 'gid',
    group_id: 'gid',
    users: 'members',
    members: 'members',
  }
  res = entries

  conditions.each do |k, v|
    idx = fields[k.to_sym]
    next if idx.nil?
    res = res.select { |x| x[idx] == v.to_s }
  end

  EtcGroupView.new(self, res)
end