class RPM::RepoFactory

Public Class Methods

new() click to toggle source
# File lib/repofactory.rb, line 7
def initialize
    @locker = Mutex.new
    @locker.synchronize {
        #Logging - now not needed
        #@logger = Logging.logger['repo ' + @name]
        #@logger.debug 'initializing'
        @repositories = []
    }
end

Public Instance Methods

add_repository(repository) click to toggle source

Synced repository adding

# File lib/repofactory.rb, line 18
def add_repository repository
    @locker.synchronize {
        if repository.kind_of? RPM::Repository
            if (get_repository_by repository.name).is_a? RPM::Repository
                raise ArgumentError, "Repository with such name already exist!"
            end
            @repositories.push repository
            return true
        else
            return false
        end
    }
end
destroy_repository_by!(name) click to toggle source

Synced repository removal and destroying

# File lib/repofactory.rb, line 33
def destroy_repository_by! name
    repo = get_repository_by name
    return false if repo.nil?
    repo.destroy!
    @locker.synchronize {
        @repositories.delete repo
    }
    return true
end
each() { |repository| ... } click to toggle source

wrap over Array's each

# File lib/repofactory.rb, line 63
def each
    get_repositories.each { |repository| yield repository if block_given? }
end
get_repositories() click to toggle source

the way to non-block reading

# File lib/repofactory.rb, line 44
def get_repositories
    @repositories.clone
end
get_repository_by(name) click to toggle source

Return repository by name

# File lib/repofactory.rb, line 49
def get_repository_by name
    unless name.kind_of? String
        return nil
    end
    possible_repos = get_repositories.select { |repo| repo.name == name }
    case possible_repos.count
        when 1
            return possible_repos.first
        else
            return nil
    end
end