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