8000 GitHub - fosskers/faur: A simpler alternative to the AUR RPC.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

fosskers/faur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

faur

A faur instance is a mirror of all package data on the AUR. faur is...

  • Simple
    • There is only a single endpoint (i.e. no difference between info and search).
    • JSON format is identical to the AUR RPC (but failure is always an empty list).
  • Fast < 7472 ul dir="auto">
  • All data is held in memory with custom indices for near-instant lookups.
  • No rate limits.
  • Featureful
    • Searching by "provides".
    • Searching by multiple terms at once (has "AND" semantics).
  • Small
    • ~300 lines of Clojure.
    • No external database or other infrastructure required.
  • For instance, visit:

    API

    There is only a single endpoint: packages.

    Endpoint Function Big-O Efficiency
    packages?names=<TOKENS> Look up m-many packages by name O(mlogn)
    packages?names=<TOKEN>&by=prov Find packages that satisfy TOKEN O(logn)
    packages?names=<TOKENS>&by=desc Find packages that contain all TOKENS in their names / descriptions / keywords O(mlogn)

    Where multiple TOKENS are accepted, these are separated by commas, as in:

    packages?names=spotify,teams,zoom
    

    Caveat: by=desc is term-based, not regex based. This is for performance reasons. So, packages?names=aura&by=desc will match on aura-bin but not on auralcap.

    Running a faur Instance

    Running a personal faur instance is simple. First, you'll need package data. From the top-level of the project repo:

    wget https://aur.archlinux.org/packages-meta-ext-v1.json.gz
    gzip -d packages-meta-ext-v1.json.gz

    Then simply:

    clojure -M -m faur

    This will run a local faur server on http://0.0.0.0:8080 . To run in TLS mode, pass --key and --cert as well and HTTPS requests will be accepted on port 443. For example, here is how the official faur instance itself is invoked:

    clojure -M -m faur --key /etc/letsencrypt/live/faur.fosskers.ca/privkey.pem --cert /etc/letsencrypt/live/faur.fosskers.ca/fullchain.pem 

    Live Remote REPL

    For live debugging, an nREPL server is embedded and ran on localhost:7888. If running faur on a remote server, you can access this nREPL remotely by first doing an SSH port-forward on your local machine:

    ssh -NL 7888:localhost:7888 root@<IP-OF-REMOTE-SERVER> -v

    and then performing a cider-connect-clj (or similar), selecting localhost:7888 as the target. Once connected, you're free to inspect the various Atoms or redefine functions.

    About

    A simpler alternative to the AUR RPC.

    Topics

    Resources

    License

    Stars

    Watchers

    Forks

    Releases

    No releases published
    0