Class: Inspec::Resources::EtcGroup

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from FileReader

#read_file_content

Methods included from CommentParser

#parse_comment_line

Methods included from Converter

#convert_to_i

Constructor Details

#initialize(path = nil) ⇒ EtcGroup

Returns a new instance of EtcGroup.



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

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

Instance Attribute Details

#entriesObject

Returns the value of attribute entries.



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

def entries
  @entries
end

#gidObject

Returns the value of attribute gid.



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

def gid
  @gid
end

Instance Method Details

#gids(filter = nil) ⇒ Object



53
54
55
# File 'lib/resources/etc_group.rb', line 53

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

#groups(filter = nil) ⇒ Object



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

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

#to_sObject



92
93
94
# File 'lib/resources/etc_group.rb', line 92

def to_s
  '/etc/group'
end

#users(filter = nil) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/resources/etc_group.rb', line 57

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



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/resources/etc_group.rb', line 68

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

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

  EtcGroupView.new(self, res)
end