aur

Usage

This is a nim client for the Arch User Repository (AUR).

It's a simple wrapper around the Aurweb RPC interface which allows searching the AUR for information about packages.

import aur, options

# retrieve information about a specific package
let pkg = info("google-chrome")
if pkg.isSome:
    echo pkg.get().description
    echo pkg.get().numVotes
    echo pkg.get().maintainer

# search for packages
let pkgs = search(QueryBy.Maintainer, keyword="luzifer")
for pkg in pkgs:
    echo pkg.name
    echo pkg.description

Types

AurPackage = object of RootObj
  id*: int
  name*: string
  pkgBaseId*: int
  pkgBase*: string
  version*: string
  description*: string
  url*: string
  numVotes*: int
  popularity*: float
  outOfDate*: Option[DateTime]
  maintainer*: string
  firstSubmitted*: DateTime
  lastModified*: DateTime
  urlPath*: Uri
Package information.
AurPackageInfo = object of AurPackage
  depends*: seq[string]
  makeDepends*: seq[string]
  optDepends*: seq[string]
  conflicts*: seq[string]
  provides*: seq[string]
  replaces*: seq[string]
  groups*: seq[string]
  licence*: seq[string]
  keywords*: seq[string]
Detailed package information.
QueryBy {...}{.pure.} = enum
  Name = "name", NameDesc = "name-desc", Maintainer = "maintainer",
  Depends = "depends", Makedepends = "makedepends", Optdepends = "optdepends",
  Checkdepends = "checkdepends"

Search criteria.

Name Search by package name only.

NameDesc Search by package name and description.

Maintainer Search by package maintainer.

Depends Search for packages that depend on keywords.

Makedepends Search for packages that makedepend on keywords.

Optdepends Search for packages that optdepend on keywords.

Checkdepends Search for packages that checkdepend on keywords.

QueryError = object of CatchableError
  
Raised if the AUR responded with an application level error.
IllegalKeywordError = object of QueryError
  
Raised if a supplied search keyword length is shorter than 2 charcters

Procs

proc search(by: QueryBy = NameDesc; keyword: string): seq[AurPackage] {...}{.raises: [
    KeyError, ValueError, JsonKindError, IOError, OSError, JsonParsingError,
    Exception, HttpRequestError, LibraryError, SslError, TimeoutError,
    ProtocolError, QueryError, IllegalKeywordError],
    tags: [ReadIOEffect, WriteIOEffect, RootEffect, TimeEffect].}

Search the AUR for packages.

by specifies the search criteria, defaults to NameDesc.

keyword the keyword to search for.

proc info(pkgNames: seq[string]): seq[AurPackageInfo] {...}{.raises: [KeyError,
    ValueError, JsonKindError, IOError, OSError, JsonParsingError, Exception,
    HttpRequestError, LibraryError, SslError, TimeoutError, ProtocolError,
    QueryError], tags: [ReadIOEffect, WriteIOEffect, RootEffect, TimeEffect].}

Retrieve detailed package information for each package in pkgNames.

Under the hood, issues only one request to the AUR.

proc info(pkgNames: varargs[string]): seq[AurPackageInfo] {...}{.raises: [KeyError,
    ValueError, JsonKindError, IOError, OSError, JsonParsingError, Exception,
    HttpRequestError, LibraryError, SslError, TimeoutError, ProtocolError,
    QueryError], tags: [ReadIOEffect, WriteIOEffect, RootEffect, TimeEffect].}

Retrieve detailed package information for each package in pkgNames.

Under the hood, issues only one request to the AUR.

proc info(pkgName: string): Option[AurPackageInfo] {...}{.raises: [KeyError,
    ValueError, JsonKindError, IOError, OSError, JsonParsingError, Exception,
    HttpRequestError, LibraryError, SslError, TimeoutError, ProtocolError,
    QueryError], tags: [ReadIOEffect, WriteIOEffect, RootEffect, TimeEffect].}
Retrieve detailed package information for package pkgName.