aurum 0.1.0

High-level AUR helper library
Documentation

aurum

An AUR helper written for efficiency, ease-of-use, and no pacman wrapping. Aurum means gold in latin, as well as containing "aur". The name was suggested by @xTibor.

It's absolutely a project born out of frustration with all the other AUR helpers out there, and as a learning experience for writing a package manager in general.

Documentation can be found for the cli tool and configuration file on the wiki.

DISCLAIMER: In its current state, aurum has undergone very little testing. Basically all I've done is use it to resolve my (relatively extensive) required updates on my machine and used it to install a few packages. Since this is effectively all aurum does right now, it's a reasonably effective test of the functionality's surface area, but know that there are bugs, and that I am not responsible if the tool breaks your system.

That said, Aurum is written with :heart: in Rust, so there are maybe less bugs. If you use the tool and it breaks, I am happy to help and to hear what I could do better. This is a tool I want to be able to use with confidence.

Goals

Note that not all of these are currently being met, aurum is still undergoing development.

  • Don't wrap pacman: Source package management is fundamentally different than binary package management, and therefore using the same cli interface for both uses doesn't make sense (Read: I don't like pacman-wrappers; It's a control thing).
  • Pacman-esque CLI: That said, pacman's cli is surprisingly robust and flexible. No other AUR helper that I know of uses a similar CLI (unless it's wrapping pacman).
  • Relatively efficient: I don't want the user to be sitting and waiting on dependency resolution. Using rust helps with this.
  • Featureful: I want this thing to be able to do everything the more popular AUR helpers can, that includes updating local AUR packages, and resolving dependencies. I can also leverage some of the more obscure options and functionality of makepkg.
  • Use of sudo: Don't run as root. (Look in main.rs under the logger init for a laugh)

TODO

  • Implement dependencies for most things (doesn't really leverage the resolver right now)
  • Better configuration file stuff (could implement more options)
  • Better output/user interaction. Possibly read pacman's config file for some options?
  • Update
  • Search functionality

Limitations (Current)

  • There are bugs, I know that this code is not infallible, especially considering all the things that I've (re)implemented. Please report them if you find them.
  • Update doesn't offer options for packages to update. This could be fixed with a number interface, but would also require some structural changes.
  • Dependency resolution is sorta slow. My database load functions are not optimized, and there is no easy way to tell which packages I need from the AUR at once, so it's not easy to reduce the number of info requests to the AUR.
  • There are literally no tests. I need to write tests...