class RuAUR::Package

Attributes

description[RW]
installed[RW]
json[RW]
name[RW]
repo[RW]
url[RW]
version[RW]
votes[RW]

Public Class Methods

new(json, repo = "aur") click to toggle source
# File lib/ruaur/package.rb, line 59
def initialize(json, repo = "aur")
    @description = json["Description"]
    @description ||= ""
    @installed = nil
    @json = json
    @name = json["Name"]
    @repo = repo
    if (json["URLPath"])
        @url = "https://aur.archlinux.org#{json["URLPath"]}"
    else
        @url = nil
    end
    @version = json["Version"]
    @votes = nil
    @votes = "(#{json["NumVotes"]})" if (json["NumVotes"])
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/ruaur/package.rb, line 13
def <=>(other)
    if (self.name.downcase == other.name.downcase)
        self_version = self.version.split(/\D+/).map(&:to_i)
        other_version = self.version.split(/\D+/).map(&:to_i)

        [self_version.size, other_version.size].max.times do |i|
            cmp = self_version[i] <=> other_version[i]
            return cmp if (cmp != 0)
        end
    end
    return (self.name.downcase <=> other.name.downcase)
end
newer?(ver) click to toggle source
# File lib/ruaur/package.rb, line 81
def newer?(ver)
    pkg_version = @version.split(/\D+/).map(&:to_i)
    installed_version = ver.split(/\D+/).map(&:to_i)

    [pkg_version.size, installed_version.size].max.times do |i|
        return false if (pkg_version[i].nil?)
        return true if (installed_version[i].nil?)
        return true if (pkg_version[i] > installed_version[i])
        return false if (pkg_version[i] < installed_version[i])
    end
    return false
end
older?(version) click to toggle source
# File lib/ruaur/package.rb, line 94
def older?(version)
    pkg_version = @version.split(/\D+/).map(&:to_i)
    installed_version = version.split(/\D+/).map(&:to_i)

    [pkg_version.size, installed_version.size].max.times do |i|
        return true if (pkg_version[i].nil?)
        return false if (installed_version[i].nil?)
        return true if (pkg_version[i] < installed_version[i])
        return false if (pkg_version[i] > installed_version[i])
    end
    return false
end
tarball(file) click to toggle source
# File lib/ruaur/package.rb, line 107
def tarball(file)
    return RuAUR::AUR.tarball(@url, file)
end
to_s() click to toggle source
# File lib/ruaur/package.rb, line 111
def to_s
    out = Array.new
    out.push(
        hilight_header(
            @repo,
            @name,
            @installed,
            @version,
            @votes
        )
    )

    # Wrap at default minus 4 spaces
    @description.scan(/\S.{0,76}\S(?=\s|$)|\S+/).each do |l|
        out.push("    #{l.strip}")
    end

    return out.join("\n")
end

Private Instance Methods

hilight_header(repo, name, installed, version, votes) click to toggle source
# File lib/ruaur/package.rb, line 26
def hilight_header(repo, name, installed, version, votes)
    header = Array.new

    if (!RuAUR.hilight?)
        header.push("#{repo}/#{name}")
        if (installed && newer?(installed))
            header.push(installed)
            header.push("->")
        end
        header.push(version)
        header.push(votes) if (votes)
        header.push("[installed]") if (installed)
    else
        header.push(
            [
                repo.light_blue,
                "/".light_blue,
                name.light_cyan
            ].join
        )
        if (installed && newer?(installed))
            header.push(installed.light_red)
            header.push("->")
        end
        header.push(version.light_green)
        header.push(votes.light_white) if (votes)
        header.push("[installed]".light_magenta) if (installed)
    end

    return header.join(" ")
end