Class: Inspec::Resources::Yum

Inherits:
Object
  • Object
show all
Defined in:
lib/resources/yum.rb

Direct Known Subclasses

YumRepoLegacy

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) ⇒ Object

alias for yum.repo('reponame')



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

def method_missing(name)
  repo(name.to_s) if !name.nil?
end

Instance Method Details

#repo(repo) ⇒ Object



81
82
83
# File 'lib/resources/yum.rb', line 81

def repo(repo)
  YumRepo.new(self, repo)
end

#reposObject



77
78
79
# File 'lib/resources/yum.rb', line 77

def repos
  repositories.map { |repo| repo['id'] }
end

#repositoriesObject

returns all repositories works as following: search for Repo-id parse data in hashmap store data in object until \n



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
# File 'lib/resources/yum.rb', line 50

def repositories
  return @cache if defined?(@cache)
  # parse the repository data from yum
  # we cannot use -C, because this is not reliable and may lead to errors
  @command_result = inspec.command('yum -v repolist all')
  @content = @command_result.stdout
  @cache = []
  repo = {}
  in_repo = false
  @content.each_line do |line|
    # detect repo start
    in_repo = true if line =~ /^\s*Repo-id\s*:\s*(.*)\b/
    # detect repo end
    if line == "\n" && in_repo
      in_repo = false
      @cache.push(repo)
      repo = {}
    end
    # parse repo content
    if in_repo == true
      val = /^\s*([^:]*?)\s*:\s*(.*?)\s*$/.match(line)
      repo[repo_key(strip(val[1]))] = strip(val[2])
    end
  end
  @cache
end

#to_sObject



90
91
92
# File 'lib/resources/yum.rb', line 90

def to_s
  'Yum Repository'
end