Improve aurfetch utility
parent
0a583cf540
commit
8c1476e669
|
@ -1,32 +1,223 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Quick install flag
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
quick=
|
. ~/.config/sh-utils/echo.sh
|
||||||
|
|
||||||
while getopts q name
|
usage () {
|
||||||
do
|
case $1 in
|
||||||
case $name in
|
install)
|
||||||
q) quick=1;;
|
usage_install; exit 0 ;;
|
||||||
?) echo "Usage: aurfetch [-q] packagename\n"
|
uninstall)
|
||||||
exit 2;;
|
usage_uninstall; exit 0 ;;
|
||||||
|
update)
|
||||||
|
usage_update; exit 0 ;;
|
||||||
|
esac
|
||||||
|
if [ ! -z "$1" ]; then
|
||||||
|
echo -e "Unknown command: $1 \n"
|
||||||
|
fi
|
||||||
|
echo "Basic AUR (Arch User Repository) manager."
|
||||||
|
echo "Enables easy cloning of AUR packages into known location ($AUR_INSTALL_HOME) and installation using makepkg"
|
||||||
|
echo -e "\nUsage: aurfetch COMMAND [options] [arguments] \n"
|
||||||
|
echo "Commands:"
|
||||||
|
echo " install - installs a new AUR package, no-op if already installed"
|
||||||
|
echo " update - updates a previously installed AUR package, fails if not found"
|
||||||
|
echo " uninstall - uninstalls an AUR package"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h --help - prints this help message (if one of commands is passed, prints help message for that command)"
|
||||||
|
echo " -v --verbose - enables verbose logging"
|
||||||
|
if [ ! -z "$1" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
usage_install () {
|
||||||
|
echo "Aurfetch Install"
|
||||||
|
echo "Installs a new AUR package. If the pacakge is already installed, then nothing happens."
|
||||||
|
echo -e "\nUsage: aurfetch install [options] <package-name>\n"
|
||||||
|
echo "Arguments:"
|
||||||
|
echo " package-name - name of the package, use 'aursearch' to find packages"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -q --quick - skip PKGBUILD preview and install the package directly"
|
||||||
|
echo " -h --help - prints this help message"
|
||||||
|
echo " -v --verbose - enables verbose logging"
|
||||||
|
echov "Examples:"
|
||||||
|
echov " > aurfetch install neovim-rpc-api-explorer"
|
||||||
|
echov ""
|
||||||
|
}
|
||||||
|
|
||||||
|
usage_uninstall () {
|
||||||
|
echo "Aurfetch Uninstall"
|
||||||
|
echo "Uninstalls an AUR package. Fails if package was not found, but tries to clear cached download regardless."
|
||||||
|
echo -e "\nUsage: aurfetch uninstall [options] <package-name>\n"
|
||||||
|
echo "Arguments:"
|
||||||
|
echo " package-name - name of the package, use 'pacman -Qm' to find installed packages"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -k --keep-cache - keeps the repository in AUR download location, for quicker installation"
|
||||||
|
echo " -h --help - prints this help message"
|
||||||
|
echo " -v --verbose - enables verbose logging"
|
||||||
|
echov "Examples:"
|
||||||
|
echov " > aurfetch uninstall neovim-rpc-api-explorer"
|
||||||
|
echov ""
|
||||||
|
}
|
||||||
|
|
||||||
|
usage_update () {
|
||||||
|
echo "Aurfetch Update"
|
||||||
|
echo "Updates an AUR package. Fails if package is not installed (even if cache is present)."
|
||||||
|
echo -e "\nUsage: aurfetch update [options] <package-name>\n"
|
||||||
|
echo "Arguments:"
|
||||||
|
echo " package-name - name of the package, use 'pacman -Qm' to find installed packages"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -q --quick - skips diff previews"
|
||||||
|
echo " -h --help - prints this help message"
|
||||||
|
echo " -v --verbose - enables verbose logging"
|
||||||
|
echov "Examples:"
|
||||||
|
echov " > aurfetch update neovim-rpc-api-explorer"
|
||||||
|
echov ""
|
||||||
|
}
|
||||||
|
|
||||||
|
POSITIONAL=()
|
||||||
|
QUICK=
|
||||||
|
HELP=0
|
||||||
|
VERBOSE=0
|
||||||
|
ALL=0
|
||||||
|
KEEP_CACHE=0
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
key="$1"
|
||||||
|
|
||||||
|
case $key in
|
||||||
|
-h|--help)
|
||||||
|
HELP=1
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
-v|--verbose)
|
||||||
|
VERBOSE=1
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
-q|--quick)
|
||||||
|
QUICK=1
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
-k|--keep-cache)
|
||||||
|
KEEP_CACHE=1
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
*) # unknown option
|
||||||
|
POSITIONAL+=("$1") # save it in an array for later
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# Move away from options
|
COMMAND="${POSITIONAL[0]}"
|
||||||
shift $(($OPTIND - 1))
|
|
||||||
|
|
||||||
if [ -z "$1" ]; then
|
echov "Detected command: $COMMAND"
|
||||||
echo "Missing package name!"
|
|
||||||
else
|
if [ $HELP -eq 1 ]; then
|
||||||
|
usage $COMMAND
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
PACKAGE="${POSITIONAL[1]}"
|
||||||
|
|
||||||
|
echov "Detected package: $PACKAGE"
|
||||||
|
|
||||||
|
install() {
|
||||||
|
if [ "$PACKAGE" = "pacman -Qm $PACKAGE" ]; then
|
||||||
|
echo "$PACKAGE is already installed, exiting!"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
LOC=$PWD
|
||||||
|
if [ ! -d "$AUR_INSTALL_HOME/$PACKAGE" ]; then
|
||||||
|
echov "Cloning package $PACKAGE to $AUR_INSTALL_HOME/$PACKAGE"
|
||||||
|
git clone https://aur.archlinux.org/$PACKAGE.git $AUR_INSTALL_HOME/$PACKAGE
|
||||||
|
fi
|
||||||
|
echov "Changing CWD to $AUR_INSTALL_HOME/$PACKAGE"
|
||||||
|
cd $AUR_INSTALL_HOME/$PACKAGE
|
||||||
|
if [ -z "$QUICK" ]; then
|
||||||
|
nvim PKGBUILD -c 'lua vim.notify("Exit with :q to accept this installation, or with :cq to abort")'
|
||||||
|
fi
|
||||||
|
echov "Running makepkg -si"
|
||||||
|
makepkg -si
|
||||||
|
echov "Coming back to $LOC"
|
||||||
|
cd $LOC
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
if [ ! "$PACKAGE" = "pacman -Qm $PACKAGE" ]; then
|
||||||
|
echo "$PACKAGE is not installed!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
LOC=$PWD
|
LOC=$PWD
|
||||||
PKG_NAME=$1
|
PKG_NAME=$1
|
||||||
git clone https://aur.archlinux.org/$PKG_NAME.git $AUR_INSTALL_HOME/$PKG_NAME
|
EXISTING=1
|
||||||
|
if [ ! -d "$AUR_INSTALL_HOME/$PACKAGE" ]; then
|
||||||
|
EXISTING=0
|
||||||
|
echov "Cloning package $PACKAGE to $AUR_INSTALL_HOME/$PACKAGE"
|
||||||
|
git clone https://aur.archlinux.org/$PACKAGE.git $AUR_INSTALL_HOME/$PACKAGE
|
||||||
|
fi
|
||||||
|
echov "Changing CWD to $AUR_INSTALL_HOME/$PKG_NAME"
|
||||||
cd $AUR_INSTALL_HOME/$PKG_NAME
|
cd $AUR_INSTALL_HOME/$PKG_NAME
|
||||||
if [ -z "$quick" ]; then
|
PREV_HEAD=$(git rev-parse HEAD)
|
||||||
vim PKGBUILD
|
git pull
|
||||||
|
if [ -z "$QUICK" ]; then
|
||||||
|
if [ $EXISTING -eq 1 ]; then
|
||||||
|
git difftool $PREV_HEAD
|
||||||
|
read -p "Accept these updates? [y/n]" ACCEPTED
|
||||||
|
if [ ! "$ACCEPTED" = "y" ]; then
|
||||||
|
echo "Exiting"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
nvim PKGBUILD -c 'lua vim.notify("Exit with :q to accept this installation, or with :cq to abort")'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echov "Running makepkg -si"
|
||||||
makepkg -si
|
makepkg -si
|
||||||
|
echov "Coming back to $LOC"
|
||||||
cd $LOC
|
cd $LOC
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall() {
|
||||||
|
if [ ! "$PACKAGE" = "pacman -Qm $PACKAGE" ]; then
|
||||||
|
echo "$PACKAGE is not installed!"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
echov "Removing package with pacman -Rns $PACKAGE"
|
||||||
|
sudo pacman -Rns $PACKAGE
|
||||||
|
if [ $KEEP_CACHE -eq 0 ]; then
|
||||||
|
echov "Deleting cache - $AUR_INSTALL_HOME/$PACKAGE"
|
||||||
|
if [ -d "$AUR_INSTALL_HOME/$PACKAGE" ]; then
|
||||||
|
rm -r "$AUR_INSTALL_HOME/$PACKAGE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$PACKAGE" ]; then
|
||||||
|
echo "Missing package name!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! type pacman > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "Pacman is not installed. This tool should only be used on Arch Linux!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $COMMAND in
|
||||||
|
install)
|
||||||
|
install
|
||||||
|
;;
|
||||||
|
update)
|
||||||
|
update
|
||||||
|
;;
|
||||||
|
uninstall)
|
||||||
|
uninstall
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage $COMMAND; exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
|
@ -10,7 +10,7 @@ then
|
||||||
|
|
||||||
echo "Installing packages from AUR using aurfetch..."
|
echo "Installing packages from AUR using aurfetch..."
|
||||||
while read p; do
|
while read p; do
|
||||||
aurfetch -q $p
|
aurfetch install -q $p
|
||||||
done <$SELECTED_INSTALL_DIR/AUR
|
done <$SELECTED_INSTALL_DIR/AUR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,7 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echov () {
|
. ~/.config/sh-utils/echo.sh
|
||||||
if [ $VERBOSE -eq 1 ]; then
|
|
||||||
echo "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
usage () {
|
usage () {
|
||||||
case $1 in
|
case $1 in
|
||||||
|
@ -101,7 +97,8 @@ usage_status () {
|
||||||
echo " -v --verbose - enables verbose logging"
|
echo " -v --verbose - enables verbose logging"
|
||||||
echov ""
|
echov ""
|
||||||
echov "Examples:"
|
echov "Examples:"
|
||||||
echov " > lsp status java
"
|
echov " > lsp status java
|
||||||
|
"
|
||||||
echov " Language java:"
|
echov " Language java:"
|
||||||
echov " Server google-java-format (UNKNOWN):"
|
echov " Server google-java-format (UNKNOWN):"
|
||||||
echov " Installed: true"
|
echov " Installed: true"
|
||||||
|
@ -109,7 +106,8 @@ usage_status () {
|
||||||
echov " Location: /Users/ensar.sarajcic/lsp/java/google-java-format"
|
echov " Location: /Users/ensar.sarajcic/lsp/java/google-java-format"
|
||||||
echov " On path: false"
|
echov " On path: false"
|
||||||
echov ""
|
echov ""
|
||||||
echov " > lsp status java --all
"
|
echov " > lsp status java --all
|
||||||
|
"
|
||||||
echov " Language java:"
|
echov " Language java:"
|
||||||
echov " Server google-java-format (UNKNOWN):"
|
echov " Server google-java-format (UNKNOWN):"
|
||||||
echov " Installed: true"
|
echov " Installed: true"
|
||||||
|
|
|
@ -1,6 +1,26 @@
|
||||||
function __fish-aurfetch-list-plugins
|
function __fish-aurfetch-list-installable
|
||||||
set -l search_string (commandline -t)
|
set -l search_string (commandline -t)
|
||||||
aursearch $search_string
|
aursearch $search_string
|
||||||
end
|
end
|
||||||
|
|
||||||
complete -c aurfetch -x -a '(__fish-aurfetch-list-plugins)'
|
function __fish-aurfetch-list-installed
|
||||||
|
pacman -Qm
|
||||||
|
end
|
||||||
|
|
||||||
|
complete -c aurfetch -x -l help -s h -d "print usage help"
|
||||||
|
complete -c aurfetch -x -l verbose -s v -d "verbose output"
|
||||||
|
complete -c aurfetch -x -n "__fish_use_subcommand" -a update -d "update an installed package"
|
||||||
|
complete -c aurfetch -x -n "__fish_use_subcommand" -a install -d "install a new package"
|
||||||
|
complete -c aurfetch -x -n "__fish_use_subcommand" -a uninstall -d "uninstall an installed package"
|
||||||
|
|
||||||
|
# Install
|
||||||
|
complete -c aurfetch -x -n "__fish_seen_subcommand_from install" -l quick -s q -d "install without checking PKGBUILD"
|
||||||
|
complete -c aurfetch -x -n "__fish_seen_subcommand_from install" -a '(__fish-aurfetch-list-installable)'
|
||||||
|
|
||||||
|
# Update
|
||||||
|
complete -c aurfetch -x -n "__fish_seen_subcommand_from update" -l quick -s q -d "update without checking diff"
|
||||||
|
complete -c aurfetch -x -n "__fish_seen_subcommand_from update" -a '(__fish-lsp-installed-servers)'
|
||||||
|
|
||||||
|
# Uninstall
|
||||||
|
complete -c aurfetch -x -n "__fish_seen_subcommand_from uninstall" -l keep-cache -s k -d "keep AUR cache for quicker reinstall"
|
||||||
|
complete -c aurfetch -x -n "__fish_seen_subcommand_from uninstall" -a '(__fish-lsp-installed-servers)'
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
set -l commands status link install uninstall
|
|
||||||
|
|
||||||
function __fish-lsp-available-servers
|
function __fish-lsp-available-servers
|
||||||
lsp status --all | grep 'Server.*:' | awk '{print $2}' | sed 's/[:,]//g' | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
|
lsp status --all | grep 'Server.*:' | awk '{print $2}' | sed 's/[:,]//g' | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue