Compare commits
No commits in common. "vbm" and "zenobit-patch-1" have entirely different histories.
vbm
...
zenobit-pa
12
Makefile
12
Makefile
|
@ -1,4 +1,4 @@
|
||||||
PREFIX_BIN ?= /bin
|
PREFIX_BIN ?= /usr/local/bin
|
||||||
PREFIX_BASHC ?= /usr/share/bash-completion/completions
|
PREFIX_BASHC ?= /usr/share/bash-completion/completions
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
|
@ -7,14 +7,14 @@ all:
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install:
|
install:
|
||||||
cp vbm.sh $(PREFIX_BIN)/vbm
|
cp ./vpm $(PREFIX_BIN)/vpm
|
||||||
cp bash-completion/completions/vbm $(PREFIX_BASHC)/vbm
|
cp ./bash-completion/completions/vpm $(PREFIX_BASHC)/vpm
|
||||||
|
|
||||||
.PHONY: uninstall
|
.PHONY: uninstall
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f $(PREFIX_BIN)/vbm
|
rm -f $(PREFIX_BIN)/vpm
|
||||||
rm -f $(PREFIX_BASHC)/vbm
|
rm -f $(PREFIX_BASHC)/vpm
|
||||||
|
|
||||||
.PHONY: check
|
.PHONY: check
|
||||||
check:
|
check:
|
||||||
which vbm
|
which vpm
|
||||||
|
|
83
README.md
83
README.md
|
@ -1,21 +1,31 @@
|
||||||
### Changed name from vpm to vbm
|
# vpm - An XBPS package management helper for VoidLinux
|
||||||
|
version 1.3.1
|
||||||
|
|
||||||
# vbm - An XBPS package management helper for vb aka Void GNU/Linux
|
`vpm` is a simple to use, daily-driver enhancement to the awesome XBPS (X Binary
|
||||||
version 1.0
|
|
||||||
|
|
||||||
`vbm` is a simple to use, daily-driver enhancement to the awesome XBPS (X Binary
|
|
||||||
Package System), initially designed as a helper tool for use with VoidLinux.
|
Package System), initially designed as a helper tool for use with VoidLinux.
|
||||||
Feel free to think "Void Package Management" or something if it helps you
|
Feel free to think "Void Package Management" or something if it helps you
|
||||||
remember its name, but please note that it's NOT a "package manager" in the
|
remember its name, but please note that it's NOT a "package manager" in the
|
||||||
nitpickers understanding of the word - especially vbm shouldn't be confused with
|
nitpickers understanding of the word - especially vpm shouldn't be confused with
|
||||||
XBPS - vbm is just an addon helper tool for XBPS to make your life easier.
|
XBPS - vpm is just an addon helper tool for XBPS to make your life easier.
|
||||||
That's it.
|
That's it.
|
||||||
|
|
||||||
# better then screenshots
|
# Screenshots
|
||||||
|
|
||||||
vbm...
|
vpm...
|
||||||
|
|
||||||
[![asciicast](https://asciinema.org/a/476068.svg)](https://asciinema.org/a/476068)
|
![vpm](https://codeberg.org/oSoWoSo/vpm/raw/branch/main/screenshots/vpm1.png)
|
||||||
|
|
||||||
|
vpm trying install package but...
|
||||||
|
|
||||||
|
![try](https://codeberg.org/oSoWoSo/vpm/raw/branch/main/screenshots/vpm2.png)
|
||||||
|
|
||||||
|
vpm automatic updating xbps while updating system...
|
||||||
|
|
||||||
|
![xbps](https://codeberg.org/oSoWoSo/vpm/raw/branch/main/screenshots/vpm3.png)
|
||||||
|
|
||||||
|
vpm installing package...
|
||||||
|
|
||||||
|
![xbps](https://codeberg.org/oSoWoSo/vpm/raw/branch/main/screenshots/vpm4.png)
|
||||||
|
|
||||||
# Motivation to write vpm
|
# Motivation to write vpm
|
||||||
|
|
||||||
|
@ -28,52 +38,47 @@ some other user-friendly repository/package-managers.
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
vbm requires BASH, the Bourne Again SHell, which should be installed by default
|
vpm requires BASH, the Bourne Again SHell, which should be installed by default
|
||||||
on a new VoidLinux system. You also will need git and xcheckrestart both provided
|
on a new VoidLinux system. You also will need git and xcheckrestart both provided
|
||||||
by xtools package to obtain a clone of the vbm repository.
|
by xtools package to obtain a clone of the vpm GitHub repository.
|
||||||
(see "Installation" section, below).
|
(see "Installation" section, below).
|
||||||
|
|
||||||
Or you can just grab vbm and paste it anywhere in your system.
|
Or you can just grab vpm and paste it anywhere in your system.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
### (optional - needed for xcheckrestart functions)
|
### 1. Install xtools via `xbps-install`
|
||||||
|
|
||||||
### Install xtools via `xbps-install`
|
$ xbps-install -S xtools
|
||||||
|
|
||||||
xbps-install -S xtools
|
### 2. Clone vpm repository
|
||||||
|
|
||||||
### 1. Clone vbm repository
|
$ git clone https://codeberg.org/oSoWoSo/vpm.git
|
||||||
|
|
||||||
git clone https://codeberg.org/oSoWoSo/vbm.git
|
### 3. Enter the cloned repo and install vpm
|
||||||
|
|
||||||
### 3. Enter the cloned repo and run:
|
$ cd vpm
|
||||||
|
$ make install
|
||||||
|
|
||||||
|
### 3a. Remove vpm
|
||||||
|
|
||||||
sudo make install
|
If you want to remove vpm, just use make to remove it. Make sure you are in the cloned directory first, then run:
|
||||||
|
|
||||||
### 3a. Remove vbm
|
$ make uninstall
|
||||||
|
|
||||||
If you want to remove vbm, just use make to remove it. Make sure you are in the cloned directory first, then run:
|
|
||||||
|
|
||||||
sudo make uninstall
|
|
||||||
|
|
||||||
or simply
|
|
||||||
|
|
||||||
vbm remove vbm :)
|
|
||||||
|
|
||||||
# ZOMG! PONIES!!111
|
# ZOMG! PONIES!!111
|
||||||
|
|
||||||
Rainbows and unicorns, indeed. If you like colorized output, please see the
|
Rainbows and unicorns, indeed. If you like colorized output, please see the
|
||||||
--color=true option, too! All vbm options try to have human readable and easy to
|
--color=true option, too! All vpm options try to have human readable and easy to
|
||||||
remember syntax, no --long-option-with-multiple-complex-words, no need to even
|
remember syntax, no --long-option-with-multiple-complex-words, no need to even
|
||||||
prefix arguments with --, vbm just tries to do its best it can to understand the
|
prefix arguments with --, vpm just tries to do its best it can to understand the
|
||||||
user (there are some command-line-switches, though, see vbm help).
|
user (there are some command-line-switches, though, see vpm help).
|
||||||
|
|
||||||
Also vbm will ask for password if needed.
|
Also vpm will ask for password if needed.
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
vbm is released under the terms of the GNU General Public License,
|
vpm is released under the terms of the GNU General Public License,
|
||||||
Version 3. See the LICENSE file for further information.
|
Version 3. See the LICENSE file for further information.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -97,12 +102,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
- https://github.com/netzverweigerer/vpm - vpm was written by Armin Jenewein <vpm@m2m.pm>
|
- https://github.com/netzverweigerer/vpm - vpm was written by Armin Jenewein <vpm@m2m.pm>
|
||||||
- https://github.com/bahamas10/vpm - forked by Dave Eddy <dave@daveeddy.com>
|
- https://github.com/bahamas10/vpm - forked by Dave Eddy <dave@daveeddy.com>
|
||||||
- https://codeberg.org/oSoWoSo/vbm - and this fork by zenobit <zen@osowoso.xyz>
|
- https://codeberg.org/oSoWoSo/vpm - and this fork by zenobit <osowoso@protonmail.com>
|
||||||
|
|
||||||
# Mirrors
|
# Mirrors
|
||||||
|
|
||||||
- repos mirrored at:
|
- repos mirrored at:
|
||||||
- 'https://github.com/oSoWoSo/vbm'
|
- 'https://github.com/oSoWoSo/vpm'
|
||||||
- 'https://gitlab.com/linux15/void/vbm'
|
- 'https://gitlab.com/linux15/void/vpm'
|
||||||
- 'https://git.disroot.org/oSoWoSo/vbm'
|
- 'https://git.disroot.org/oSoWoSo/vpm'
|
||||||
- more mirrors will come...
|
- more mirrors will come...
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
||||||
source /usr/share/bash-completion/completions/xbps
|
source /usr/share/bash-completion/completions/xbps
|
||||||
|
|
||||||
_vbm()
|
_vpm()
|
||||||
{
|
{
|
||||||
local cur prev words cword
|
local cur prev words cword
|
||||||
_init_completion || return
|
_init_completion || return
|
||||||
|
@ -39,6 +39,5 @@ _vbm()
|
||||||
elif [[ $prev == @($installed_pkgs) ]]; then
|
elif [[ $prev == @($installed_pkgs) ]]; then
|
||||||
COMPREPLY=( $(compgen -W '$(_xbps_installed_packages)' -- "$cur") )
|
COMPREPLY=( $(compgen -W '$(_xbps_installed_packages)' -- "$cur") )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
} &&
|
} &&
|
||||||
complete -F _vbm vbm
|
complete -F _vpm vpm
|
|
@ -1,3 +0,0 @@
|
||||||
function S --description 'alias S vbm S'
|
|
||||||
vbm S $argv;
|
|
||||||
end
|
|
|
@ -1,3 +0,0 @@
|
||||||
function a --description 'alias a vbm a'
|
|
||||||
vbm a $argv;
|
|
||||||
end
|
|
|
@ -1,3 +0,0 @@
|
||||||
function i --description 'alias i vbm i'
|
|
||||||
vbm i $argv;
|
|
||||||
end
|
|
|
@ -1,3 +0,0 @@
|
||||||
function s --description 'alias s vbm s'
|
|
||||||
vbm s $argv;
|
|
||||||
end
|
|
Binary file not shown.
After Width: | Height: | Size: 121 KiB |
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
After Width: | Height: | Size: 330 KiB |
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
735
vbm.sh
735
vbm.sh
|
@ -1,735 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# vim: ft=sh ts=2 sw=2 sts=2 et
|
|
||||||
|
|
||||||
# vbm - vb-linux management utility for
|
|
||||||
# XBPS, the X Binary Package System
|
|
||||||
# original author: Armin Jenewein <a@m2m.pm>, GitHub: @netzverweigerer
|
|
||||||
# a lot used from: Dave Eddy <dave@daveeddy.com>, GitHub: @bahamas10
|
|
||||||
# this fork: zenobit <zen@osowoso.xyz>, codeberg.org: @oSoWoSo
|
|
||||||
# For more information about XBPS, see:
|
|
||||||
# https://github.com/voidlinux/xbps
|
|
||||||
|
|
||||||
# Released under the terms of the GNU general public license, version 3+
|
|
||||||
# see LICENSE file for license information.
|
|
||||||
|
|
||||||
# set version number
|
|
||||||
version="1.0"
|
|
||||||
# enable verbosity, by default
|
|
||||||
verbose=true
|
|
||||||
# program name
|
|
||||||
progname=${0##*/}
|
|
||||||
|
|
||||||
# VBM color definitions
|
|
||||||
numcolorok=2
|
|
||||||
numcolorfail=1
|
|
||||||
numcolorlogo=2
|
|
||||||
numcolorheader=3
|
|
||||||
numcolortext=4
|
|
||||||
numcolorgray=8
|
|
||||||
numcolorpkgcount=7
|
|
||||||
numcolordarkgray=11
|
|
||||||
numcolorbrackets=1
|
|
||||||
|
|
||||||
# enable or disable colors based on the argument given, i.e.:
|
|
||||||
# setcolors on # colors on
|
|
||||||
# setcolors off # colors off
|
|
||||||
# setcolors auto # colors on or off depending on environment
|
|
||||||
declare -A COLORS
|
|
||||||
setcolors() {
|
|
||||||
local opt=$1
|
|
||||||
|
|
||||||
# determine if colors should be enabled or not
|
|
||||||
if [[ $opt == auto ]]; then
|
|
||||||
# if stdout is a TTY and the TERM looks like it supports color enable colors
|
|
||||||
if [[ -t 1 && $TERM == *color* ]]; then
|
|
||||||
opt='on'
|
|
||||||
else
|
|
||||||
opt='off'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$opt" in
|
|
||||||
on)
|
|
||||||
local i
|
|
||||||
for i in {1..11}; do
|
|
||||||
if [[ -n ${COLORS[$i]} ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
COLORS[$i]=$(tput setaf "$i")
|
|
||||||
done
|
|
||||||
colorbrackets=${COLORS[$numcolorbrackets]}
|
|
||||||
colordarkgray=${COLORS[$numcolordarkgray]}
|
|
||||||
colorfail=${COLORS[$numcolorfail]}
|
|
||||||
colorgray=${COLORS[$numcolorgray]}
|
|
||||||
colorheader=${COLORS[$numcolorheader]}
|
|
||||||
colorlogo=${COLORS[$numcolorlogo]}
|
|
||||||
colorok=${COLORS[$numcolorok]}
|
|
||||||
colorpkgcount=${COLORS[$numcolorpkgcount]}
|
|
||||||
colortext=${COLORS[$numcolortext]}
|
|
||||||
colorreset=$(tput sgr0)
|
|
||||||
;;
|
|
||||||
off)
|
|
||||||
colorbrackets=
|
|
||||||
colordarkgray=
|
|
||||||
colorfail=
|
|
||||||
colorgray=
|
|
||||||
colorheader=
|
|
||||||
colorlogo=
|
|
||||||
colorok=
|
|
||||||
colorpkgcount=
|
|
||||||
colortext=
|
|
||||||
colorreset=
|
|
||||||
unset COLORS
|
|
||||||
declare -A COLORS
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
rmsg 255 "unknown color option: '$opt'"
|
|
||||||
exit 255
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# print the logo with brackets colorized
|
|
||||||
getlogo() {
|
|
||||||
printf '%s[%s%s%s]%s' \
|
|
||||||
"$colorbrackets" \
|
|
||||||
"$colorlogo" "$progname" \
|
|
||||||
"$colorbrackets" \
|
|
||||||
"$colorreset"
|
|
||||||
}
|
|
||||||
|
|
||||||
# prints a message (with vbm-prefix)
|
|
||||||
msg() {
|
|
||||||
local logo=$(getlogo)
|
|
||||||
local newline=true
|
|
||||||
|
|
||||||
if [[ $1 == '-n' ]]; then
|
|
||||||
newline=false
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s %s%s%s' "$logo" "$colortext" "$*" "$colorreset"
|
|
||||||
$newline && echo
|
|
||||||
}
|
|
||||||
|
|
||||||
# rmsg - same (but colorized based on return status passed via $1)
|
|
||||||
rmsg() {
|
|
||||||
local code=$1
|
|
||||||
shift
|
|
||||||
|
|
||||||
local logo=$(getlogo)
|
|
||||||
local statuscolor
|
|
||||||
|
|
||||||
if ((code == 0)); then
|
|
||||||
statuscolor=$colorok
|
|
||||||
else
|
|
||||||
statuscolor=$colorfail
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '%s %s%s%s\n' "$logo" "$statuscolor" "$*" "$colorreset"
|
|
||||||
}
|
|
||||||
|
|
||||||
banner() {
|
|
||||||
echo -n "$colorlogo"
|
|
||||||
echo ' __ __/|__ _ __ '
|
|
||||||
printf " \\ V / '_ \\ ' \ "
|
|
||||||
echo -n "$colorgray"
|
|
||||||
echo " $progname - XBPS package management helper"
|
|
||||||
echo -n "$colorlogo"
|
|
||||||
echo -n ' \_/|_,__/_|_|_\'
|
|
||||||
echo -n "$colorgray"
|
|
||||||
echo ' Source: https://codeberg.org/oSoWoSo/vbm'
|
|
||||||
echo -n "$colorlogo"
|
|
||||||
echo -n "$colorreset"
|
|
||||||
}
|
|
||||||
|
|
||||||
version() {
|
|
||||||
banner
|
|
||||||
echo
|
|
||||||
msg "${colorpkgcount}$progname - Version: $version (GPLv3+)"
|
|
||||||
msg "${colorpkgcount}original author: Armin Jenewein <a@m2m.pm>"
|
|
||||||
msg "https://github.com/netzverweigerer/vpm"
|
|
||||||
msg "${colorpkgcount}a lot used from: Dave Eddy <dave@daveeddy.com>"
|
|
||||||
msg "https://github.com/bahamas10/vpm"
|
|
||||||
msg "${colorpkgcount}this fork: zenobit <zen@osowoso.xyz>"
|
|
||||||
msg "https://codeberg.org/oSoWoSo/vbm"
|
|
||||||
msg "${colorpkgcount}XBPS version: $(xbps-query -v --version | sed 's/GIT: UNSET//')"
|
|
||||||
}
|
|
||||||
|
|
||||||
# check if we have UID 0, exit otherwise
|
|
||||||
rootcheck() {
|
|
||||||
if [[ $EUID -gt 0 ]]; then
|
|
||||||
msg "$(tput setaf 1)This operation needs super-user privileges.$(tput sgr 0)"
|
|
||||||
SUDO=sudo
|
|
||||||
else
|
|
||||||
SUDO=''
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
t() {
|
|
||||||
if [[ -n $show_translations ]]; then
|
|
||||||
tput setaf 242
|
|
||||||
echo ' ' "$@"
|
|
||||||
echo
|
|
||||||
tput setaf 109
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
wrapcommand() {
|
|
||||||
local cmd ret
|
|
||||||
cmd=("$@")
|
|
||||||
|
|
||||||
echo "$colortext(${cmd[*]}):$colorreset"
|
|
||||||
|
|
||||||
"${cmd[@]}"
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
rmsg "$ret" "[${cmd[*]}], return code was: $ret"
|
|
||||||
exit "$ret"
|
|
||||||
}
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
echo
|
|
||||||
version
|
|
||||||
echo
|
|
||||||
echo "${colorheader}USAGE:
|
|
||||||
${colorpkgcount}${progname} ${colortext}[OPTIONS] ${colorok}[SUBCOMM${colorfail}ANDS] ${colorpkgcount}[<ARGS>]
|
|
||||||
|
|
||||||
${colorheader} OPTIONS :
|
|
||||||
${colortext}--color=<yes|no|auto> ${colorgray}Enable/Disable colorized output (default: auto)
|
|
||||||
${colortext}--help ${colorgray}(same as: help) show usage
|
|
||||||
${colortext}--slim ${colorgray}(same as: slim) show usage for small screens
|
|
||||||
${colortext}--help-pager ${colorgray}(same as: helppager)
|
|
||||||
${colortext}--show-translations ${colorgray}Show ${colorpkgcount}XBPS${colorgray} command translations for $colorpkgcount$progname$colorgray sub-commands
|
|
||||||
${colortext}--verbose ${colorgray}Show ${colorpkgcount}XBPS${colorgray} command translations during execution
|
|
||||||
|
|
||||||
${colorheader} SUBCOMMANDS :
|
|
||||||
${colorok}(long) ${colorfail}(short)${colorpkgcount} <ARGS>"
|
|
||||||
echo " ${colorok}sync ${colorfail}(S) ${colorgray}Synchronize remote repository data"
|
|
||||||
t "xbps-install -S"
|
|
||||||
echo " ${colorok}update ${colorfail}(u) ${colorgray}Update the system"
|
|
||||||
t "xbps-install -Suv"
|
|
||||||
echo " ${colorok}search ${colorfail}(s) ${colorpkgcount}<pkg> ${colorgray}Search for package"
|
|
||||||
t "xbps-query -v -Rs"
|
|
||||||
echo " ${colorok}syncsearch ${colorfail}(Ss) ${colorgray}Fetch repodata and search for package"
|
|
||||||
t "xbps-query -v -MRs"
|
|
||||||
echo " ${colorok}about ${colorfail}(a) ${colorpkgcount}<pkg> ${colorgray}Show information about <package>"
|
|
||||||
t "xbps-query -v -R"
|
|
||||||
echo " ${colorok}install ${colorfail}(i) ${colorpkgcount}<pkg(s)> ${colorgray}Install <package(s)>"
|
|
||||||
t "xbps-install"
|
|
||||||
echo " ${colorok}remove ${colorfail}(rm) ${colorpkgcount}<pkg(s)> ${colorgray}Remove <package(s)> from the system"
|
|
||||||
t "xbps-remove -v "
|
|
||||||
echo " ${colorok}filelist ${colorfail}(fl) ${colorpkgcount}<pkg> ${colorgray}Show file-list of <package>"
|
|
||||||
t "xbps-query -v -R -f"
|
|
||||||
echo " ${colorok}deps ${colorfail}(d) ${colorpkgcount}<pkg> ${colorgray}Show dependencies for <package>"
|
|
||||||
t "xbps-query -v -R -x"
|
|
||||||
echo " ${colorok}reverse ${colorfail}(rd) ${colorpkgcount}<pkg> ${colorgray}Show reverse dependendies of <package>"
|
|
||||||
t "xbps-query -v -R -X"
|
|
||||||
echo " ${colorok}searchlib ${colorfail}(sl) ${colorpkgcount}<pkg> ${colorgray}Search for package (64bit only)"
|
|
||||||
t "xbps-query -v -Rs"
|
|
||||||
echo " ${colorok}searchfile ${colorfail}(sf) ${colorpkgcount}<file> ${colorgray}Search for package containing <file> (local)"
|
|
||||||
t "xbps-query -v -o \"*/$1\""
|
|
||||||
echo " ${colorok}whatprovides ${colorfail}(wp) ${colorpkgcount}<file> ${colorgray}Search for package containing <file>"
|
|
||||||
t "xlocate ${colorpkgcount}<pkg>"
|
|
||||||
echo " ${colorok}list ${colorfail}(ls) ${colorgray}List installed packages"
|
|
||||||
t "xbps-query -v -l"
|
|
||||||
echo " ${colorok}listw ${colorfail}(lw) ${colorgray}List installed packages without their version"
|
|
||||||
t "xbps-query -l | awk '{ print $2 }' | xargs -n1 xbps-uhelper getpkgname"
|
|
||||||
echo " ${colorok}listalternatives ${colorfail}(la) ${colorgray}List alternative candidates"
|
|
||||||
t "xbps-alternatives -l"
|
|
||||||
echo " ${colorok}listrepos ${colorfail}(lr) ${colorgray}List configured repositories"
|
|
||||||
echo " ${colorok}repolist ${colorfail}(rl) ${colorgray}Alias for listrepos"
|
|
||||||
t "xbps-query -v -L"
|
|
||||||
echo " ${colorok}addrepo ${colorfail}(ad) ${colorpkgcount}<ARGS> ${colorgray}Add an additional repository"
|
|
||||||
t "xbps-install ${colorpkgcount}<ARGS>"
|
|
||||||
echo " ${colorok}devinstall ${colorfail}(di) ${colorpkgcount}<pkg(s)> ${colorgray}Install <package>${colorgray} and devel-<package(s)>"
|
|
||||||
t "xbps-install <package> <package>${colorgray}-devel"
|
|
||||||
echo " ${colorok}reconfigure ${colorfail}(rc) ${colorpkgcount}<pkg> ${colorgray}Re-configure installed <package>"
|
|
||||||
t "xbps-reconfigure -v"
|
|
||||||
echo " ${colorok}forceinstall ${colorfail}(fi) ${colorpkgcount}<pkg(s)> ${colorgray}Force installation of <package(s)>"
|
|
||||||
t "xbps-install -f"
|
|
||||||
echo " ${colorok}setalternative ${colorfail}(sa) ${colorpkgcount}<pkg(s)> ${colorgray}Set alternative for <package>"
|
|
||||||
t "xbps-alternatives -s"
|
|
||||||
echo " ${colorok}removerecursive ${colorfail}(rr) ${colorpkgcount}<pkg(s)> ${colorgray}Remove package(s) with dependencies"
|
|
||||||
t "xbps-remove -v -R"
|
|
||||||
echo " ${colorok}cleanup ${colorfail}(cl) ${colorgray}Remove obsolete packages in cachedir"
|
|
||||||
t "xbps-remove -v -O"
|
|
||||||
echo " ${colorok}autoremove ${colorfail}(ar) ${colorgray}Remove orphaned packages"
|
|
||||||
t "xbps-remove -v -o"
|
|
||||||
echo
|
|
||||||
echo "${colorpkgcount}XBPS${colorheader} COMPATIBILITY COOLNESS:"
|
|
||||||
echo -n "$colorgray"
|
|
||||||
f=(/usr/sbin/xbps-*)
|
|
||||||
echo "$colorpkgcount$progname$colorgray also understands all unknown ${colorpkgcount}XBPS${colorgray} sub-commands, too:"
|
|
||||||
echo -n "Example: "
|
|
||||||
selected=${f[$RANDOM % ${#f[@]}]}
|
|
||||||
echo "$colorpkgcount$progname$colorok ${selected##*-}$colorreset ${colorpkgcount}<ARGS> $colorgray- see also: /usr/sbin/xbps-*"
|
|
||||||
echo -n "$colorreset"
|
|
||||||
}
|
|
||||||
|
|
||||||
usage_slim() {
|
|
||||||
echo
|
|
||||||
version
|
|
||||||
echo
|
|
||||||
echo "${colorheader}USAGE:
|
|
||||||
${colorpkgcount}${progname} ${colortext}[OPTIONS] ${colorok}[SUBCOMM${colorfail}ANDS] ${colorpkgcount}[<ARGS>]
|
|
||||||
|
|
||||||
${colorheader}OPTIONS :
|
|
||||||
${colortext}--color=<yes|no|auto>
|
|
||||||
${colorgray}Enable/Disable colorized output (default: auto)
|
|
||||||
${colortext}--help
|
|
||||||
${colorgray}(same as: help) show usage
|
|
||||||
${colortext}--slim
|
|
||||||
${colorgray}(same as: slim) show usage for small screens
|
|
||||||
${colortext}--help-pager
|
|
||||||
${colorgray}(same as: helppager)
|
|
||||||
${colortext}--show-translations
|
|
||||||
${colorgray}Show ${colorpkgcount}XBPS${colorgray} command translations for $colorpkgcount$progname$colorgray sub-commands
|
|
||||||
${colortext}--verbose
|
|
||||||
${colorgray}Show ${colorpkgcount}XBPS${colorgray} command translations during execution
|
|
||||||
|
|
||||||
${colorheader} SUBCOMMANDS :
|
|
||||||
${colorok}(long) ${colorfail}(short)${colorpkgcount} <ARGS>
|
|
||||||
${colorok}about ${colorfail}(a) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Show information about <package>"
|
|
||||||
t "xbps-query -v -R"
|
|
||||||
echo "${colorok}filelist ${colorfail}(fl) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Show file-list of <package>"
|
|
||||||
t "xbps-query -v -R -f"
|
|
||||||
echo "${colorok}deps ${colorfail}(d) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Show dependencies for <package>"
|
|
||||||
t "xbps-query -v -R -x"
|
|
||||||
echo "${colorok}reverse ${colorfail}(rd) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Show reverse dependendies of <package>"
|
|
||||||
t "xbps-query -v -R -X"
|
|
||||||
echo "${colorok}search ${colorfail}(s) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Search for package"
|
|
||||||
t "xbps-query -v -Rs"
|
|
||||||
echo "${colorok}searchlib ${colorfail}(sl) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Search for package (64bit only)"
|
|
||||||
t "xbps-query -v -Rs"
|
|
||||||
echo "${colorok}searchfile ${colorfail}(sf) ${colorpkgcount}<file>
|
|
||||||
${colorgray}Search for package containing <file> (local)"
|
|
||||||
t "xbps-query -v -o \"*/$1\""
|
|
||||||
echo "${colorok}whatprovides ${colorfail}(wp) ${colorpkgcount}<file>
|
|
||||||
${colorgray}Search for package containing <file>"
|
|
||||||
t "xlocate ${colorpkgcount}<pkg>"
|
|
||||||
echo "${colorok}list ${colorfail}(ls)
|
|
||||||
${colorgray}List installed packages"
|
|
||||||
t "xbps-query -v -l"
|
|
||||||
echo "${colorok}listw ${colorfail}(lw)
|
|
||||||
${colorgray}List installed packages without version"
|
|
||||||
t "xbps-query -l | awk '{ print $2 }' | xargs -n1 xbps-uhelper getpkgname"
|
|
||||||
echo "${colorok}listalternatives ${colorfail}(la)
|
|
||||||
${colorgray}List alternative candidates"
|
|
||||||
t "xbps-alternatives -l"
|
|
||||||
echo "${colorok}listrepos ${colorfail}(lr)
|
|
||||||
${colorgray}List configured repositories"
|
|
||||||
echo "${colorok}repolist ${colorfail}(rl)
|
|
||||||
${colorgray}Alias for listrepos"
|
|
||||||
t "xbps-query -v -L"
|
|
||||||
echo "${colorok}sync ${colorfail}(S)
|
|
||||||
${colorgray}Synchronize remote repository data"
|
|
||||||
t "xbps-install -S"
|
|
||||||
echo "${colorok}update ${colorfail}(u)
|
|
||||||
${colorgray}Update the system"
|
|
||||||
t "xbps-install -Suv"
|
|
||||||
echo "${colorok}addrepo ${colorfail}(ad) ${colorpkgcount}<ARGS>
|
|
||||||
${colorgray}Add an additional repository"
|
|
||||||
t "xbps-install ${colorpkgcount}<ARGS>"
|
|
||||||
echo "${colorok}install ${colorfail}(i) ${colorpkgcount}<pkg(s)>
|
|
||||||
${colorgray}Install <package(s)>"
|
|
||||||
t "xbps-install"
|
|
||||||
echo "${colorok}devinstall ${colorfail}(di) ${colorpkgcount}<pkg(s)>
|
|
||||||
${colorgray}Install <package> and devel-<package>(s)"
|
|
||||||
t "xbps-install <package> <package>-devel"
|
|
||||||
echo "${colorok}reconfigure ${colorfail}(rc) ${colorpkgcount}<pkg>
|
|
||||||
${colorgray}Re-configure installed <package>"
|
|
||||||
t "xbps-reconfigure -v"
|
|
||||||
echo "${colorok}forceinstall ${colorfail}(fi) ${colorpkgcount}<pkg(s)>
|
|
||||||
${colorgray}Force installation of <package(s)>"
|
|
||||||
t "xbps-install -f"
|
|
||||||
echo "${colorok}setalternative ${colorfail}(sa) ${colorpkgcount}<pkg(s)>
|
|
||||||
${colorgray}Set alternative for <package>"
|
|
||||||
t "xbps-alternatives -s"
|
|
||||||
echo "${colorok}remove ${colorfail}(rm) ${colorpkgcount}<pkg(s)>
|
|
||||||
${colorgray}Remove <package(s)>${colorgray} from the system"
|
|
||||||
t "xbps-remove -v "
|
|
||||||
echo "${colorok}removerecursive ${colorfail}(rr) ${colorpkgcount}<pkg(s)>
|
|
||||||
${colorgray}Remove package(s) with dependencies"
|
|
||||||
t "xbps-remove -v -R"
|
|
||||||
echo "${colorok}cleanup ${colorfail}(cl)
|
|
||||||
${colorgray}Remove obsolete packages in cachedir"
|
|
||||||
t "xbps-remove -v -O"
|
|
||||||
echo "${colorok}autoremove ${colorfail}(ar)
|
|
||||||
${colorgray}Remove orphaned packages"
|
|
||||||
t "xbps-remove -v -o"
|
|
||||||
echo "$colorheader"
|
|
||||||
echo "${colorpkgcount}XBPS${colorgray} COMPATIBILITY COOLNESS:"
|
|
||||||
echo -n "$colorgray"
|
|
||||||
f=(/usr/sbin/xbps-*)
|
|
||||||
echo "$colorpkgcount$progname$colorgray understands ${colorpkgcount}XBPS${colorgray} sub-commands"
|
|
||||||
echo -n "Example: "
|
|
||||||
selected=${f[$RANDOM % ${#f[@]}]}
|
|
||||||
echo "$colorpkgcount$progname$colorok ${selected##*-}$colorreset ${colorpkgcount}<ARGS> $colorgray
|
|
||||||
see also: /usr/sbin/xbps-*$colorreset"
|
|
||||||
}
|
|
||||||
|
|
||||||
setcolors auto
|
|
||||||
case "$1" in
|
|
||||||
--color=true|--color=yes|--color=on)
|
|
||||||
setcolors on
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--color=auto)
|
|
||||||
setcolors auto
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--color=false|--color=off|--color=no)
|
|
||||||
setcolors off
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--verbose=true)
|
|
||||||
shift
|
|
||||||
verbose=true
|
|
||||||
;;
|
|
||||||
--show-translations)
|
|
||||||
shift
|
|
||||||
show_translations=1
|
|
||||||
;;
|
|
||||||
--help)
|
|
||||||
shift
|
|
||||||
usage
|
|
||||||
exit 255
|
|
||||||
;;
|
|
||||||
--slim)
|
|
||||||
shift
|
|
||||||
usage_slim
|
|
||||||
;;
|
|
||||||
--help-pager)
|
|
||||||
shift
|
|
||||||
"$0" --color=off --help | less
|
|
||||||
;;
|
|
||||||
--*)
|
|
||||||
msg "Unknown option: $1 (try: $progname --help)"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [[ -z $1 ]]; then
|
|
||||||
usage
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cmd=$1
|
|
||||||
if [[ $arg =~ --.* ]]; then
|
|
||||||
cmd=${arg:2}
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
|
|
||||||
case "$cmd" in
|
|
||||||
|
|
||||||
about|a)
|
|
||||||
wrapcommand xbps-query -v -R "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
filelist|fl|listfiles)
|
|
||||||
wrapcommand xbps-query -v -R -f "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
deps|dep|dependencies|d)
|
|
||||||
wrapcommand xbps-query -v -R -x "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
reverse|rd)
|
|
||||||
msg "Reverse dependencies for $* "
|
|
||||||
wrapcommand xbps-query -v -R -X "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
searchfile|sf)
|
|
||||||
msg 'searchfile '
|
|
||||||
wrapcommand xbps-query -v -o "*/$1"
|
|
||||||
;;
|
|
||||||
|
|
||||||
remotesearchfile|rsf)
|
|
||||||
msg 'remotesearchfile '
|
|
||||||
wrapcommand xbps-query -R -v -o "*/$1"
|
|
||||||
;;
|
|
||||||
|
|
||||||
list|ls)
|
|
||||||
msg 'Installed packages: '
|
|
||||||
|
|
||||||
count=0
|
|
||||||
while read -r _ pkg _; do
|
|
||||||
((count++))
|
|
||||||
pkgname=${pkg%-*}
|
|
||||||
version=${pkg##*-}
|
|
||||||
|
|
||||||
printf '%s%d %s%s %s (%s%s%s) [%s%s%s]%s\n' \
|
|
||||||
"$colorpkgcount" "$count" \
|
|
||||||
"$colortext" "$pkgname" \
|
|
||||||
"$colorbrackets" \
|
|
||||||
"$colorgray" "$version" \
|
|
||||||
"$colorbrackets" \
|
|
||||||
"$colordarkgray" "$pkg" \
|
|
||||||
"$colorbrackets" \
|
|
||||||
"$colorreset"
|
|
||||||
done < <(xbps-query -v -l)
|
|
||||||
;;
|
|
||||||
|
|
||||||
listw|lw)
|
|
||||||
xbps-query -l | awk '{ print $2 }' | xargs -n1 xbps-uhelper getpkgname
|
|
||||||
;;
|
|
||||||
|
|
||||||
listalternative|listalternatives|la)
|
|
||||||
wrapcommand xbps-alternatives -l "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
setalternative|setalternatives|sa)
|
|
||||||
rootcheck
|
|
||||||
wrapcommand xbps-alternatives -s "$@"
|
|
||||||
echo
|
|
||||||
;;
|
|
||||||
|
|
||||||
repolist|listrepos|rl|lr)
|
|
||||||
code=0
|
|
||||||
msg "Configured repositories (xbps-query -v -L): "
|
|
||||||
|
|
||||||
xbps-query -v -L
|
|
||||||
ret=$?
|
|
||||||
((ret == 0)) || code=1
|
|
||||||
rmsg "$ret" "[xbps-query -v -L] return code: $ret"
|
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
msg "Available sub-repositories (xbps-query -v -Rs void-repo): "
|
|
||||||
xbps-query -v -Rs void-repo
|
|
||||||
ret=$?
|
|
||||||
((ret == 0)) || code=1
|
|
||||||
rmsg "$ret" "[xbps-query -v -Rs void-repo] return code: $ret"
|
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
msg "Use \"$progname addrepo <repository>\" to add a sub-repository."
|
|
||||||
echo
|
|
||||||
|
|
||||||
exit "$code"
|
|
||||||
;;
|
|
||||||
|
|
||||||
addrepo|ad)
|
|
||||||
rootcheck
|
|
||||||
echo
|
|
||||||
if (($# < 1)); then
|
|
||||||
rmsg 255 "ERROR: install: argument missing, try --help."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
code=0
|
|
||||||
for repo in "$@"; do
|
|
||||||
msg "Adding repository: $repo"
|
|
||||||
$SUDO xbps-install "$repo"
|
|
||||||
ret=$?
|
|
||||||
((ret == 0)) || code=1
|
|
||||||
rmsg "$ret" "[xbps-install $arg] return code: $ret"
|
|
||||||
|
|
||||||
msg "Synchronizing remote repository data (xbps-install -S): "
|
|
||||||
$SUDO xbps-install -S
|
|
||||||
ret=$?
|
|
||||||
((ret == 0)) || code=1
|
|
||||||
rmsg "$ret" "[xbps-install -S] return code: $ret"
|
|
||||||
done
|
|
||||||
|
|
||||||
exit "$code"
|
|
||||||
;;
|
|
||||||
|
|
||||||
sync|S)
|
|
||||||
rootcheck
|
|
||||||
msg 'Synchronizing remote repository data '
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-install -S "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
install|i)
|
|
||||||
rootcheck
|
|
||||||
if (($# < 1)); then
|
|
||||||
rmsg 255 "ERROR: install: argument missing, try --help."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg "Installing packages: $* "
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-install "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
yesinstall)
|
|
||||||
rootcheck
|
|
||||||
if (($# < 1)); then
|
|
||||||
rmsg 255 "ERROR: install: argument missing, try --help."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
msg "Installing packages (assumed yes): $* "
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-install -y "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
devinstall)
|
|
||||||
rootcheck
|
|
||||||
if (($# < 1)); then
|
|
||||||
rmsg 255 "ERROR: devinstall: argument missing, try --help."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
args=("$@")
|
|
||||||
code=0
|
|
||||||
|
|
||||||
msg "devinstall: Packages will be installed one-by-one"
|
|
||||||
msg "Use \"forceinstall\" to override this if you know what you're doing."
|
|
||||||
msg "(Note: forceinstall won't install -devel packages)"
|
|
||||||
for arg in "${args[@]}"; do
|
|
||||||
msg "Installing package: $arg (xbps-install $arg) ..."
|
|
||||||
$SUDO xbps-install "$arg"
|
|
||||||
ret=$?
|
|
||||||
((ret == 0)) || code=1
|
|
||||||
rmsg "$ret" "[xbps-install $arg] return code: $ret"
|
|
||||||
|
|
||||||
msg "installing devel package (${arg}-devel):"
|
|
||||||
$SUDO xbps-install "${arg}-devel"
|
|
||||||
ret=$?
|
|
||||||
((ret == 0)) || code=1
|
|
||||||
rmsg "$ret" "[xbps-install ${arg}-devel] return code: $ret"
|
|
||||||
done
|
|
||||||
|
|
||||||
exit "$code"
|
|
||||||
;;
|
|
||||||
|
|
||||||
forceinstall|fi)
|
|
||||||
rootcheck
|
|
||||||
msg "Force-Installing Package(s): $* "
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-install -f "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
remove|rm)
|
|
||||||
rootcheck
|
|
||||||
msg "Removing package(s): $* "
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-remove -v "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
removerecursive|rr)
|
|
||||||
rootcheck
|
|
||||||
msg "Removing package(s) recursively: $* "
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-remove -v -R "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
reconfigure|rc)
|
|
||||||
rootcheck
|
|
||||||
msg 'reconfigure: Re-configuring package(s) '
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-reconfigure -v "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoremove|ar)
|
|
||||||
rootcheck
|
|
||||||
msg 'autoremove: Removing orphaned packages '
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-remove -v -o
|
|
||||||
;;
|
|
||||||
|
|
||||||
update|upgrade|up|u)
|
|
||||||
rootcheck
|
|
||||||
msg 'Running system update '
|
|
||||||
echo
|
|
||||||
$SUDO xbps-install -Suv
|
|
||||||
if [[ $? == 16 ]]; then
|
|
||||||
msg "$(tput setaf 1)Updating xbps $(tput sgr 0)"
|
|
||||||
$SUDO xbps-install -u xbps
|
|
||||||
wrapcommand "$SUDO" xbps-install -Suv
|
|
||||||
else
|
|
||||||
if [[ $? == 1 ]]; then
|
|
||||||
msg 'Your system is up to date.'
|
|
||||||
else
|
|
||||||
msg $? 'Something goes wrong!'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
msg 'Checking if something need restart...'
|
|
||||||
echo
|
|
||||||
xcheckrestart
|
|
||||||
;;
|
|
||||||
|
|
||||||
syncsearch|Ss)
|
|
||||||
msg "Syncing and searching for: $* "
|
|
||||||
wrapcommand xbps-query -v -MRs "$*"
|
|
||||||
;;
|
|
||||||
|
|
||||||
search|s)
|
|
||||||
msg "Searching for: $* "
|
|
||||||
wrapcommand xbps-query -v -Rs "$*"
|
|
||||||
;;
|
|
||||||
|
|
||||||
# TODO: instead of grep use proper command
|
|
||||||
searchlib|sl)
|
|
||||||
msg "Searching for: $* "
|
|
||||||
wrapcommand xbps-query -v -Rs "$*" | grep -v 32bit
|
|
||||||
;;
|
|
||||||
|
|
||||||
cleanup|clean|cl)
|
|
||||||
msg 'Remove obsolete packages in cachedir '
|
|
||||||
rootcheck
|
|
||||||
echo
|
|
||||||
wrapcommand "$SUDO" xbps-remove -v -O "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
h|help|-h|--help)
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
|
|
||||||
slim|--slim)
|
|
||||||
usage_slim
|
|
||||||
;;
|
|
||||||
|
|
||||||
helppager|help-pager|hp)
|
|
||||||
pager=$PAGER
|
|
||||||
if [[ -z $pager ]]; then
|
|
||||||
if command -v less &>/dev/null; then
|
|
||||||
pager=less
|
|
||||||
else
|
|
||||||
pager=more
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$0" --color=off help | $pager
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
|
|
||||||
version|v)
|
|
||||||
version
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
|
|
||||||
whatprovides|wp)
|
|
||||||
if ! command -v xlocate &>/dev/null; then
|
|
||||||
rmsg 255 "xlocate not found. Try installing the xtools package."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg "relaying to xlocate - use xlocate -S to (re-)build cached DB. "
|
|
||||||
wrapcommand xlocate "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
''|*)
|
|
||||||
xbpscmd="xbps-$cmd"
|
|
||||||
if ! command -v "$xbpscmd" &>/dev/null; then
|
|
||||||
rmsg 255 "Unrecognized $progname subcommand: $cmd (and $xbpscmd does not exist) - Try: $progname help"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# xbps-<subcommand> found
|
|
||||||
msg "relaying to ${colorpkgcount}XBPS${colorgray}: "
|
|
||||||
wrapcommand "$xbpscmd" "$@"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
# enjoy and make better if you can...
|
|
|
@ -0,0 +1,590 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# vim: ft=sh ts=2 sw=2 sts=2 et
|
||||||
|
# vpm - void package management utility for
|
||||||
|
# XBPS, the X Binary Package System
|
||||||
|
# Copyright (c) 2016 Armin Jenewein <a@m2m.pm>, GitHub: @netzverweigerer
|
||||||
|
# Copyright (c) 2019 Dave Eddy <dave@daveeddy.com>, GitHub: @bahamas10
|
||||||
|
# Copyright (c) 2021 oSoWoSo <osowoso@protonmail.com>, codeberg.org: @oSoWoSo
|
||||||
|
# For more information about XBPS, see:
|
||||||
|
# https://github.com/voidlinux/xbps
|
||||||
|
# Released under the terms of the GNU general public license, version 3+
|
||||||
|
# see LICENSE file for license information.
|
||||||
|
# set version number
|
||||||
|
version="1.3.1"
|
||||||
|
# disable verbosity, by default
|
||||||
|
# verbose=false
|
||||||
|
# VPM color definitions
|
||||||
|
numcolorok=2
|
||||||
|
numcolorfail=1
|
||||||
|
numcolorlogo=5
|
||||||
|
numcolorheader=3
|
||||||
|
numcolortext=4
|
||||||
|
numcolorgray=2
|
||||||
|
numcolorpkgcount=8
|
||||||
|
numcolordarkgray=11
|
||||||
|
numcolorbrackets=6
|
||||||
|
progname=${0##*/}
|
||||||
|
# enable or disable colors based on the argument given, i.e.:
|
||||||
|
# setcolors on # colors on
|
||||||
|
# setcolors off # colors off
|
||||||
|
# setcolors auto # colors on or off depending on environment
|
||||||
|
declare -A COLORS
|
||||||
|
setcolors () {
|
||||||
|
local opt=$1
|
||||||
|
|
||||||
|
# determine if colors should be enabled or not
|
||||||
|
if [[ $opt == auto ]]; then
|
||||||
|
# if stdout is a TTY and the TERM looks like it supports color enable colors
|
||||||
|
if [[ -t 1 && $TERM == *color* ]]; then
|
||||||
|
opt='on'
|
||||||
|
else
|
||||||
|
opt='off'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$opt" in
|
||||||
|
on)
|
||||||
|
local i
|
||||||
|
for i in {1..11}; do
|
||||||
|
if [[ -n ${COLORS[$i]} ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
COLORS[$i]=$(tput setaf "$i")
|
||||||
|
done
|
||||||
|
colorbrackets=${COLORS[$numcolorbrackets]}
|
||||||
|
colordarkgray=${COLORS[$numcolordarkgray]}
|
||||||
|
colorfail=${COLORS[$numcolorfail]}
|
||||||
|
colorgray=${COLORS[$numcolorgray]}
|
||||||
|
colorheader=${COLORS[$numcolorheader]}
|
||||||
|
colorlogo=${COLORS[$numcolorlogo]}
|
||||||
|
colorok=${COLORS[$numcolorok]}
|
||||||
|
colorpkgcount=${COLORS[$numcolorpkgcount]}
|
||||||
|
colortext=${COLORS[$numcolortext]}
|
||||||
|
colorreset=$(tput sgr0)
|
||||||
|
;;
|
||||||
|
off)
|
||||||
|
colorbrackets=
|
||||||
|
colordarkgray=
|
||||||
|
colorfail=
|
||||||
|
colorgray=
|
||||||
|
colorheader=
|
||||||
|
colorlogo=
|
||||||
|
colorok=
|
||||||
|
colorpkgcount=
|
||||||
|
colortext=
|
||||||
|
colorreset=
|
||||||
|
unset COLORS
|
||||||
|
declare -A COLORS
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
rmsg 255 "unknown color option: '$opt'"
|
||||||
|
exit 255
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# print the logo with brackets colorized
|
||||||
|
getlogo () {
|
||||||
|
printf '%s[%s%s%s]%s' \
|
||||||
|
"$colorbrackets" \
|
||||||
|
"$colorlogo" "$progname" \
|
||||||
|
"$colorbrackets" \
|
||||||
|
"$colorreset"
|
||||||
|
}
|
||||||
|
|
||||||
|
# prints a message (with vpm-prefix)
|
||||||
|
msg () {
|
||||||
|
local logo=$(getlogo)
|
||||||
|
local newline=true
|
||||||
|
|
||||||
|
if [[ $1 == '-n' ]]; then
|
||||||
|
newline=false
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '%s %s%s%s' "$logo" "$colortext" "$*" "$colorreset"
|
||||||
|
$newline && echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# rmsg - same (but colorized based on return status passed via $1)
|
||||||
|
rmsg () {
|
||||||
|
local code=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
local logo=$(getlogo)
|
||||||
|
local statuscolor
|
||||||
|
|
||||||
|
if ((code == 0)); then
|
||||||
|
statuscolor=$colorok
|
||||||
|
else
|
||||||
|
statuscolor=$colorfail
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '%s %s%s%s\n' "$logo" "$statuscolor" "$*" "$colorreset"
|
||||||
|
}
|
||||||
|
|
||||||
|
banner () {
|
||||||
|
echo -n "$colorlogo"
|
||||||
|
echo ' __ ___ __ _ __ '
|
||||||
|
|
||||||
|
printf " \\ V / '_ \\ ' \ "
|
||||||
|
echo -n "$colorgray"
|
||||||
|
echo " $progname - void package management utility for XBPS"
|
||||||
|
echo -n "$colorlogo"
|
||||||
|
echo -n ' \_/| .__/_|_|_|'
|
||||||
|
echo -n "$colorgray"
|
||||||
|
echo ' Source: https://codeberg.org/oSoWoSo/vpm'
|
||||||
|
echo -n "$colorlogo"
|
||||||
|
echo ' |/ '
|
||||||
|
echo ' ´ '
|
||||||
|
echo -n "$colorreset"
|
||||||
|
}
|
||||||
|
|
||||||
|
version () {
|
||||||
|
banner
|
||||||
|
msg "$progname - Version: $version"
|
||||||
|
msg "Copyright (c) 2016 Armin Jenewein <a@m2m.pm> (GPLv3+)"
|
||||||
|
msg "oSoWoSo <osowoso@protonmail.com>"
|
||||||
|
msg "XBPS version: $(xbps-query -v --version | sed 's/GIT: UNSET//')"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if we have UID 0, exit otherwise
|
||||||
|
rootcheck () {
|
||||||
|
if [[ $EUID -gt 0 ]]; then
|
||||||
|
msg "$(tput setaf 1)This operation needs super-user privileges.$(tput sgr 0)"
|
||||||
|
SUDO=sudo
|
||||||
|
else
|
||||||
|
SUDO=''
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
t () {
|
||||||
|
if [[ -n $show_translations ]]; then
|
||||||
|
tput setaf 242
|
||||||
|
echo ' ' "$@"
|
||||||
|
echo
|
||||||
|
tput setaf 109
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
wrapcommand() {
|
||||||
|
local cmd ret
|
||||||
|
cmd=("$@")
|
||||||
|
|
||||||
|
echo "$colortext(${cmd[*]}):$colorreset"
|
||||||
|
|
||||||
|
"${cmd[@]}"
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
rmsg "$ret" "[${cmd[*]}], return code was: $ret"
|
||||||
|
exit "$ret"
|
||||||
|
}
|
||||||
|
|
||||||
|
usage () {
|
||||||
|
echo
|
||||||
|
version
|
||||||
|
echo
|
||||||
|
echo -n "$colorheader"
|
||||||
|
echo "USAGE: "
|
||||||
|
echo -n "$colorgray"
|
||||||
|
echo "$progname [OPTIONS] [SUBCOMMANDS] [<ARGS>]"
|
||||||
|
echo
|
||||||
|
echo -n "$colorheader"
|
||||||
|
echo "OPTIONS: "
|
||||||
|
echo -n "$colorgray"
|
||||||
|
echo "--color=<yes|no|auto> - Enable/Disable colorized output (default: auto)"
|
||||||
|
echo "--help - (same as: help)"
|
||||||
|
echo "--help-pager - (same as: helppager)"
|
||||||
|
echo "--show-translations - Show XBPS command translations for $progname sub-commands"
|
||||||
|
echo "--verbose - Verbose mode (shows XBPS command translations during execution)"
|
||||||
|
echo
|
||||||
|
echo -n "$colorheader"
|
||||||
|
echo "SUBCOMMANDS: "
|
||||||
|
echo -n "$colorgray"
|
||||||
|
echo "sync (sy) - Synchronize remote repository data"
|
||||||
|
t "xbps-install -S"
|
||||||
|
echo "update (up) - Update the system"
|
||||||
|
t "xbps-install -Suv"
|
||||||
|
echo "listrepos (lr) - List configured repositories"
|
||||||
|
echo "repolist (rl) - Alias for listrepos"
|
||||||
|
t "xbps-query -v -L"
|
||||||
|
echo "addrepo (ad) <ARGS> - Add an additional repository"
|
||||||
|
t "xbps-install <ARGS>"
|
||||||
|
echo "about (a) <pkg> - Show information about <package>"
|
||||||
|
t "xbps-query -v -R"
|
||||||
|
echo "filelist (fl) <pkg> - Show file-list of <package>"
|
||||||
|
t "xbps-query -v -R -f"
|
||||||
|
echo "deps <pkg> - Show dependencies for <package>"
|
||||||
|
t "xbps-query -v -R -x"
|
||||||
|
echo "reverse (rv) <pkg> - Show reverse dependendies of <package> (see man xbps-query)"
|
||||||
|
t "xbps-query -v -R -X"
|
||||||
|
echo "search (s) <name> - Search for package by <name>"
|
||||||
|
t "xbps-query -v -Rs"
|
||||||
|
echo "searchfile (sf) <file> - Search for package containing <file> (local)"
|
||||||
|
t "xbps-query -v -o \"*/$1\""
|
||||||
|
echo "list (ls) - List installed packages"
|
||||||
|
t "xbps-query -v -l"
|
||||||
|
echo "install (i) <pkg(s)> - Install <package(s)>"
|
||||||
|
t "xbps-install"
|
||||||
|
echo "devinstall (di) <pkg(s)> - Install <package> (and corresponding <package>-devel package(s))"
|
||||||
|
t "xbps-install <package> <package>-devel"
|
||||||
|
echo "listalternatives (la) - List alternative candidates"
|
||||||
|
t "xbps-alternatives -l"
|
||||||
|
echo "setalternative (sa) <pkg(s) - Set alternative for <package>"
|
||||||
|
t "xbps-alternatives -s"
|
||||||
|
echo "reconfigure (rc) <pkg> - Re-configure installed <package>"
|
||||||
|
t "xbps-reconfigure -v"
|
||||||
|
echo "forceinstall (fi) <pkg(s)> - Force installation of <package(s)>"
|
||||||
|
t "xbps-install -f"
|
||||||
|
echo "remove (rm) <package(s)) - Remove <package(s)> from the system"
|
||||||
|
t "xbps-remove -v "
|
||||||
|
echo "removerecursive (rr) <pkg(s)> - Recursively remove package(s) (and its dependencies)"
|
||||||
|
t "xbps-remove -v -R"
|
||||||
|
echo "cleanup (cl) - Remove obsolete packages in cachedir"
|
||||||
|
t "xbps-remove -v -O"
|
||||||
|
echo "autoremove (ar) - Remove orphaned packages"
|
||||||
|
t "xbps-remove -v -o"
|
||||||
|
echo "whatprovides (wp) <file> - Search for package containing <file>"
|
||||||
|
t "xlocate <pkg>"
|
||||||
|
echo "help - Show usage information"
|
||||||
|
echo "helppager (hp) - Show usage information (will pipe output to less/more)"
|
||||||
|
echo
|
||||||
|
echo -n "$colorheader"
|
||||||
|
echo "XBPS COMPATIBILITY COOLNESS:"
|
||||||
|
echo -n "$colorgray"
|
||||||
|
f=(/usr/sbin/xbps-*)
|
||||||
|
echo "$progname also understands all unknown XBPS sub-commands, too:"
|
||||||
|
echo -n "Example: "
|
||||||
|
selected=${f[$RANDOM % ${#f[@]}]}
|
||||||
|
echo "$progname ${selected##*-} <ARGS> - see also: /usr/sbin/xbps-*"
|
||||||
|
echo
|
||||||
|
echo -n "$colorreset"
|
||||||
|
}
|
||||||
|
|
||||||
|
setcolors auto
|
||||||
|
case "$1" in
|
||||||
|
--color=true|--color=yes|--color=on)
|
||||||
|
setcolors on
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--color=auto)
|
||||||
|
setcolors auto
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--color=false|--color=off|--color=no)
|
||||||
|
setcolors off
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--verbose=true)
|
||||||
|
shift
|
||||||
|
verbose=true
|
||||||
|
;;
|
||||||
|
--show-translations)
|
||||||
|
shift
|
||||||
|
show_translations=1
|
||||||
|
;;
|
||||||
|
--help)
|
||||||
|
shift
|
||||||
|
usage
|
||||||
|
exit 255
|
||||||
|
;;
|
||||||
|
--help-pager)
|
||||||
|
shift
|
||||||
|
"$0" --color=off --help | less
|
||||||
|
;;
|
||||||
|
--*)
|
||||||
|
msg "Unknown option: $1 (try: $progname --help)"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmd=$1
|
||||||
|
if [[ $arg =~ --.* ]]; then
|
||||||
|
cmd=${arg:2}
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
|
||||||
|
case "$cmd" in
|
||||||
|
about|a)
|
||||||
|
wrapcommand xbps-query -v -R "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
filelist|fl|listfiles)
|
||||||
|
wrapcommand xbps-query -v -R -f "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
deps|dep|dependencies)
|
||||||
|
wrapcommand xbps-query -v -R -x "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
reverse|rv)
|
||||||
|
msg -n "Reverse dependencies for $* "
|
||||||
|
wrapcommand xbps-query -v -R -X "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
searchfile|sf)
|
||||||
|
msg -n 'searchfile '
|
||||||
|
wrapcommand xbps-query -v -o "*/$1"
|
||||||
|
;;
|
||||||
|
|
||||||
|
remotesearchfile|rsf)
|
||||||
|
msg -n 'remotesearchfile '
|
||||||
|
wrapcommand xbps-query -R -v -o "*/$1"
|
||||||
|
;;
|
||||||
|
|
||||||
|
list|ls)
|
||||||
|
msg -n 'Installed packages: '
|
||||||
|
|
||||||
|
count=0
|
||||||
|
while read -r _ pkg _; do
|
||||||
|
((count++))
|
||||||
|
pkgname=${pkg%-*}
|
||||||
|
version=${pkg##*-}
|
||||||
|
|
||||||
|
printf '%s%d %s%s %s (%s%s%s) [%s%s%s]%s\n' \
|
||||||
|
"$colorpkgcount" "$count" \
|
||||||
|
"$colortext" "$pkgname" \
|
||||||
|
"$colorbrackets" \
|
||||||
|
"$colorgray" "$version" \
|
||||||
|
"$colorbrackets" \
|
||||||
|
"$colordarkgray" "$pkg" \
|
||||||
|
"$colorbrackets" \
|
||||||
|
"$colorreset"
|
||||||
|
done < <(xbps-query -v -l)
|
||||||
|
;;
|
||||||
|
|
||||||
|
listalternative|listalternatives|la)
|
||||||
|
wrapcommand xbps-alternatives -l "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
setalternative|setalternatives|sa)
|
||||||
|
rootcheck
|
||||||
|
wrapcommand xbps-alternatives -s "$@"
|
||||||
|
echo
|
||||||
|
;;
|
||||||
|
|
||||||
|
repolist|listrepos|rl|lr)
|
||||||
|
code=0
|
||||||
|
msg -n "Configured repositories (xbps-query -v -L): "
|
||||||
|
|
||||||
|
xbps-query -v -L
|
||||||
|
ret=$?
|
||||||
|
((ret == 0)) || code=1
|
||||||
|
rmsg "$ret" "[xbps-query -v -L] return code: $ret"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
msg -n "Available sub-repositories (xbps-query -v -Rs void-repo): "
|
||||||
|
xbps-query -v -Rs void-repo
|
||||||
|
ret=$?
|
||||||
|
((ret == 0)) || code=1
|
||||||
|
rmsg "$ret" "[xbps-query -v -Rs void-repo] return code: $ret"
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
msg -n "Use \"$progname addrepo <repository>\" to add a sub-repository."
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit "$code"
|
||||||
|
;;
|
||||||
|
|
||||||
|
addrepo|ad)
|
||||||
|
rootcheck
|
||||||
|
echo
|
||||||
|
if (($# < 1)); then
|
||||||
|
rmsg 255 "ERROR: install: argument missing, try --help."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
code=0
|
||||||
|
for repo in "$@"; do
|
||||||
|
msg "Adding repository: $repo"
|
||||||
|
$SUDO xbps-install "$repo"
|
||||||
|
ret=$?
|
||||||
|
((ret == 0)) || code=1
|
||||||
|
rmsg "$ret" "[xbps-install $arg] return code: $ret"
|
||||||
|
|
||||||
|
msg "Synchronizing remote repository data (xbps-install -S): "
|
||||||
|
$SUDO xbps-install -S
|
||||||
|
ret=$?
|
||||||
|
((ret == 0)) || code=1
|
||||||
|
rmsg "$ret" "[xbps-install -S] return code: $ret"
|
||||||
|
done
|
||||||
|
|
||||||
|
exit "$code"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sync|sy)
|
||||||
|
rootcheck
|
||||||
|
msg -n 'Synchronizing remote repository data '
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-install -S
|
||||||
|
;;
|
||||||
|
|
||||||
|
install|i)
|
||||||
|
rootcheck
|
||||||
|
if (($# < 1)); then
|
||||||
|
rmsg 255 "ERROR: install: argument missing, try --help."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg -n "Installing packages: $* "
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-install "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
yesinstall)
|
||||||
|
rootcheck
|
||||||
|
if (($# < 1)); then
|
||||||
|
rmsg 255 "ERROR: install: argument missing, try --help."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
msg -n "Installing packages (assumed yes): $* "
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-install -y "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
devinstall)
|
||||||
|
rootcheck
|
||||||
|
if (($# < 1)); then
|
||||||
|
rmsg 255 "ERROR: devinstall: argument missing, try --help."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
args=("$@")
|
||||||
|
code=0
|
||||||
|
|
||||||
|
msg "devinstall: Packages will be installed one-by-one"
|
||||||
|
msg "Use \"forceinstall\" to override this if you know what you're doing."
|
||||||
|
msg "(Note: forceinstall won't install -devel packages)"
|
||||||
|
for arg in "${args[@]}"; do
|
||||||
|
msg "Installing package: $arg (xbps-install $arg) ..."
|
||||||
|
$SUDO xbps-install "$arg"
|
||||||
|
ret=$?
|
||||||
|
((ret == 0)) || code=1
|
||||||
|
rmsg "$ret" "[xbps-install $arg] return code: $ret"
|
||||||
|
|
||||||
|
msg "installing devel package (${arg}-devel):"
|
||||||
|
$SUDO xbps-install "${arg}-devel"
|
||||||
|
ret=$?
|
||||||
|
((ret == 0)) || code=1
|
||||||
|
rmsg "$ret" "[xbps-install ${arg}-devel] return code: $ret"
|
||||||
|
done
|
||||||
|
|
||||||
|
exit "$code"
|
||||||
|
;;
|
||||||
|
|
||||||
|
forceinstall|fi)
|
||||||
|
rootcheck
|
||||||
|
msg -n "Force-Installing Package(s): $* "
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-install -f "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
remove|rm)
|
||||||
|
rootcheck
|
||||||
|
msg -n "Removing package(s): $* "
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-remove -v "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
removerecursive|rr)
|
||||||
|
rootcheck
|
||||||
|
msg -n "Removing package(s) recursively: $* "
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-remove -v -R "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
reconfigure|rc)
|
||||||
|
rootcheck
|
||||||
|
msg -n 'reconfigure: Re-configuring package(s) '
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-reconfigure -v "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoremove|ar)
|
||||||
|
rootcheck
|
||||||
|
msg -n 'autoremove: Removing orphaned packages '
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-remove -v -o
|
||||||
|
;;
|
||||||
|
|
||||||
|
update|upgrade|up)
|
||||||
|
rootcheck
|
||||||
|
msg -n 'Running system update '
|
||||||
|
echo
|
||||||
|
$SUDO xbps-install -Suv
|
||||||
|
if [[ $? == 16 ]]; then
|
||||||
|
msg -n "$(tput setaf 1)Updating xbps $(tput sgr 0)"
|
||||||
|
$SUDO xbps-install -u xbps
|
||||||
|
wrapcommand $SUDO xbps-install -Suv
|
||||||
|
else
|
||||||
|
if [[ $? == 1 ]]; then
|
||||||
|
msg -n 'Your system is up to date.'
|
||||||
|
else
|
||||||
|
msg -n $? 'Something goes wrong!'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
msg -n 'Checking if something need restart...'
|
||||||
|
xcheckrestart
|
||||||
|
;;
|
||||||
|
|
||||||
|
search|s)
|
||||||
|
msg -n "Searching for: $* "
|
||||||
|
wrapcommand xbps-query -v -Rs "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
cleanup|clean|cl)
|
||||||
|
msg -n 'Remove obsolete packages in cachedir '
|
||||||
|
rootcheck
|
||||||
|
echo
|
||||||
|
wrapcommand $SUDO xbps-remove -v -O "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
h|help|-h|--help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
|
||||||
|
helppager|help-pager|hp)
|
||||||
|
pager=$PAGER
|
||||||
|
if [[ -z $pager ]]; then
|
||||||
|
if command -v less &>/dev/null; then
|
||||||
|
pager=less
|
||||||
|
else
|
||||||
|
pager=more
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$0" --color=off help | $pager
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
whatprovides|wp)
|
||||||
|
if ! command -v xlocate &>/dev/null; then
|
||||||
|
rmsg 255 "xlocate not found. Try installing the xtools package."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# msg -n "relaying to xlocate - use xlocate -S to (re-)build cached DB. "
|
||||||
|
wrapcommand xlocate -S && xlocate "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
''|*)
|
||||||
|
xbpscmd="xbps-$cmd"
|
||||||
|
if ! command -v "$xbpscmd" &>/dev/null; then
|
||||||
|
rmsg 255 "Unrecognized $progname subcommand: $cmd (and $xbpscmd does not exist) - Try: $progname help"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# xbps-<subcommand> found
|
||||||
|
msg -n 'relaying to XBPS: '
|
||||||
|
wrapcommand "$xbpscmd" "$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enjoy and make better if you can...
|
Loading…
Reference in New Issue