- Notifications
You must be signed in to change notification settings - Fork2
CRUX port manager written in Go, aiming to replace prt-get, ports, and some pkgutils (on my machine).
License
CamilleScholtz/prt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This project is currently in early alpha stage!
prt - CRUX port utility written in Go, aiming to replace prt-get, ports, andsome pkgutils (on my machine)
prt command [arguments]
prt is likeprt-get(8)
a port/package management utility which providesadditional functionality to the CRUX pkgutils. In addition to that it alsostrives to replace the CRUX pkgutils in Go. It works with the local ports treeand is therefore fully compatible withports(8)
,pkgmk(8)
,pkgadd(8)
andof courseprt-get(8)
. It offers the following features:
- Listing dependencies of ports recursively, with an optional flag to printusing tree view.
- Generating graphs of port dependencies
- Listing outdated package, by comparing port versions with the installedversion
- Easily printing port information such as the maintainer, version, release, etcetera
- Install ports and their dependencies with a single command
- List ports, with optional flags to also only list installed ports, print withrepo information or to print with additional version information
- Print the location of a port
- Searching through files ports provide, with an optional flag to only searchthrough installed ports
- Pull in ports using
git(1)
- Update outdated packages
- Uninstall installed packages
Like said before, unlikeprt-get(8)
, prt reimplementspkgmk(8)
/pkgadd(8)
fully in Go. This is mostly for more control. Likeprt-get
it does providesome nice extra functionality such as listing and installing dependencies,getting the location of a port, aliasing ports (for examplecore/openssl
to6c37-dropin/libressl
), and ordering ports with the same name depending on how"important" the repo is the port resides in.
There are a few differences, for example, unlikeprt-get(8)
you need to be inthe port's directory for most commands to work, like howpkgmk(8)
works. Thishas a few advantages, for example you can quickly download a port anywhere onthe filesystem, and install it and its dependencies usingprt install
. Becauseprt-get depinst
needs a port name, you canonly install ports that arelocated in a predefinedprtdir
.
Another difference withprt-get(8)
is that prt does not use a cache file,while still being nearly as fast or faster in some cases.
Aliasing is also handeled a bit different.prt-get(8)
aliases ports based onname, but prt on name and repo. This makes it possible to aliasfoo/bar
tobaz/bar
.
The prt syntax is inspired byprt-get(8)
,git(8)
andgo(8)
, and thus usesso called commands which always have to be the first non-option argument passed.The commands are:
depends
list dependencies recursively,
diff
list outdated packages
info
print port information
install
build and install ports and their dependencies
list
list porst and packages
loc
print port locations
prov
search ports for files
pull
pull in ports
sysup
update outdated packages
uninstall
uninstall packages
help
print help and exit
https://github.com/onodera-punpun/crux-ports/blob/master/prt/Pkgfile
Make sure to check/etc/prt/config.toml
after installation and edit values tofit your needs and setup.
If you usefish
acd
wrapper forprt loc
will also be installed, and somehandy completions.
- Implement
depends
command. - Implement
diff
command. - Implement
info
command.(This always prints something, even when not ina port directory...) - Implement
graph
command. - Implement
install
command. - Implement
list
command. - Implement
loc
command. - Implement
patch
command. - Implement
prov
command. - Implement
pull
command. - Implement
sysup
command. - Implement
uninstall
command.
- Convert
pkgmk
get_filename
function to Go.(so uhh,pkgmk
doessomething with "absolute paths", do I need this as well?) - Convert
pkgmk
get_basename
function to Go. - Convert
pkgmk
check_pkgfile
function to Go. - Convert
pkgmk
check_directory
function to Go. - Convert
pkgmk
check_file
function to Go. - Convert
pkgmk
download_file
function to Go.(curl
is still used, isthere some pure Go implementation?) - Convert
pkgmk
download_source
function to Go. - Convert
pkgmk
unpack_source
function to Go.(somePkgfile
s createtheir own unpack functions, I still need to detect and use those.) - Convert
pkgmk
make_md5sum
function to Go. - Convert
pkgmk
make_footprint
function to Go. - Convert
pkgmk
check_md5sum
function to Go. - Convert
pkgmk
check_signature
function to Go.(signify
is stillused, is there some pure Go implementation?) - Convert
pkgmk
make_signature
function to Go. - Convert
pkgmk
strip_files
function to Go. - Convert
pkgmk
compress_manpages
function to Go. - Convert
pkgmk
check_footprint
function to Go. - Convert
pkgmk
make_work_dir
function to Go. - Convert
pkgmk
remove_work_dir
function to Go. - Convert
pkgmk
install_package
function to Go. - Convert
pkgmk
clean
function to Go.(not going to implement, there isrm
)
- Write fish
cdp
function. - Write bash
cdp
function.(need to actually test this) - Write fish completions.
- Write bash completions.
- Write tests.
- Make errors pretty and consistent.
- Test environment variables.
- Write README and man pages.(needs some updates with changes)
- Check for missing config values.
Camille Scholtz