class Archlinux::Package

Attributes

name[R]
props[R]

Public Class Methods

create(v) click to toggle source
# File lib/aur/packages.rb, line 67
def self.create(v)
        v.is_a?(self) ? v : self.new(v)
end
new(*args) click to toggle source
# File lib/aur/packages.rb, line 74
def initialize(*args)
        case args.length
        when 2
                name, props=args
        when 1
                props=args.first
                name=nil
        else
                raise PackageError.new("Error the number of arguments should be 1 or 2")
        end
        @name=name
        @props={}
        self.props=(props)
        @name=@props[:name] || @props[:pkgname] || @props[:pkgbase] unless @name
end

Public Instance Methods

dependencies(l=%i(depends)) click to toggle source
# File lib/aur/packages.rb, line 143
def dependencies(l=%i(depends))
        l.map {|i| a=@props[i]; a.is_a?(Hash) ? a.keys : Array(a)}.flatten.uniq
end
file() click to toggle source
# File lib/aur/packages.rb, line 159
def file
        @props[:filename] && Pathname.new(@props[:filename])
end
merge(h) click to toggle source
# File lib/aur/packages.rb, line 132
def merge(h)
        h.each do |k,v|
                if @props[k].nil? or ((k==:package_size or k==:download_size or k==:installed_size) and (@props[k]=="0.00 B" or @props[k]==0))
                        @props[k]=v
                elsif k==:repository
                        @props[k]=(Array(@props[k])+v).uniq
                end
        end
        self
end
name_version() click to toggle source
# File lib/aur/packages.rb, line 151
def name_version
        r=self.name
        return r if r.nil?
        version=self.version
        r+="="+version.to_s if version
        r
end
path() click to toggle source
# File lib/aur/packages.rb, line 163
def path
        file || Pathname.new(@props[:repo])
end
props=(props) click to toggle source
# File lib/aur/packages.rb, line 90
def props=(props)
        [:groups, :depends, :make_depends, :check_depends, :conflicts, :replaces, :provides, :depends_for, :opt_depends_for].each do |k|
                props.key?(k) or @props[k]=[]
        end
        @props[:opt_depends]||={}
        props.each do |k,v|
                k=Utils.to_snake_case(k.to_s).to_sym
                k=:opt_depends if k==:optdepends or k==:optdepend or k==:optional_deps
                k=:make_depends if k==:makedepends or k==:makedepend
                k=:check_depends if k==:checkdepends or k==:checkdepend
                k=:build_date if k==:builddate
                k=:depends if k==:depends_on or k==:requires
                k=:conflicts if k==:conflicts_with
                k=:pkgbase if k==:base
                k=:depends_for if k==:required_by
                k=:opt_depends_for if k==:optional_for
                k=:description if k==:desc or k==:pkgdesc
                case k
                when :first_submitted, :last_modified, :out_of_date, :build_date, :install_date
                        if v and !v.is_a?(Time)
                                v= v.is_a?(Integer) ? Time.at(v) : Time.parse(v)
                        end
                when :repository, :groups, :depends, :make_depends, :check_depends, :conflicts, :replaces, :provides, :depends_for, :opt_depends_for, :license, :source
                        v=Array(v)
                when :opt_depends
                        unless v.is_a?(Hash)
                                w={}
                                Array(v).each do |l|
                                        l.match(/(\w*)\s+:\s+(.*)/) do |m|
                                                w[m[1]]=m[2]
                                        end
                                end
                                v=w
                        end
                end
                @props[k]=v
        end
        if !@props[:version] and @props[:pkgver]
                @props[:version]=Version.new(@props[:epoch], @props[:pkgver], @props[:pkgrel]).to_s
        end
end
same?(other) click to toggle source
# File lib/aur/packages.rb, line 167
def same?(other)
        # @props.slice(*(@props.keys - [:repo])) == other.props.slice(*(other.props.keys - [:repo]))
        slice=%i(version description depends provides opt_depends replaces conflicts)
        # p name, other.name, @props.slice(*slice), other.props.slice(*slice)
        name == other.name && @props.slice(*slice) == other.props.slice(*slice)
end
version() click to toggle source
# File lib/aur/packages.rb, line 147
def version
        Version.new(@props[:version])
end