initial upload
create script
This commit is contained in:
parent
ad7205861d
commit
0af2552546
1 changed files with 103 additions and 0 deletions
103
u8-pacman
Normal file
103
u8-pacman
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
# This is a simple wrapper for pacman to install packages at userspace.
|
||||||
|
# Everytime you execute this wrapper it will create ~/.local/var/pkglist.
|
||||||
|
# This dir is need to dump files which package is installed and which files are extracted to ~/.local/
|
||||||
|
# With the -i argument you install packages like:
|
||||||
|
# $ u8-pacman -i zola
|
||||||
|
# This will download zola from the repository and pipe the tar.zst to extract the files into ~/.local/
|
||||||
|
# also all exracted files will be documented at ~/.local/var/pkglist/zola.lst
|
||||||
|
# This wrapper need this file, to list installed packages, update all packages or remove the files.
|
||||||
|
#
|
||||||
|
# With the -l option you list all packages which are installed via this wrapper by list all files from ~/.local/bin/var/pkglist/
|
||||||
|
#
|
||||||
|
# The remove option -r $PACKAGENME will read the extracted files from ~/.local/bin/var/pkglist/$PACKAGENAME.lst and remove all this files.
|
||||||
|
# Also it will remove it self
|
||||||
|
#
|
||||||
|
# The -u option will read all ~/.local/bin/var/pkglist/*.lst files to gether the installed packages and reinstall them with the current package from the repository.
|
||||||
|
|
||||||
|
PACKAGE=$2
|
||||||
|
mkdir -p ~/.local/var/pkglist
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename $0) [options]
|
||||||
|
Options:
|
||||||
|
-h show this help page
|
||||||
|
-i $PACKAGENAME install package
|
||||||
|
-l list installed packages
|
||||||
|
-r $PACKAGENAME remove packagename
|
||||||
|
-u update all installed packages
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
while [ "$1" ]; do
|
||||||
|
case "$1" in
|
||||||
|
-i)
|
||||||
|
shift
|
||||||
|
source="install"
|
||||||
|
;;
|
||||||
|
-r)
|
||||||
|
shift
|
||||||
|
source="remove"
|
||||||
|
;;
|
||||||
|
-u)
|
||||||
|
shift
|
||||||
|
source="update"
|
||||||
|
;;
|
||||||
|
-l)
|
||||||
|
shift
|
||||||
|
source="list"
|
||||||
|
;;
|
||||||
|
-h)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "see -h for usage"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
function install() {
|
||||||
|
curl -L $(pacman -Swpdd $1) -o - | tar --exclude='.*' --zstd -xvf - -C ~/.local/
|
||||||
|
curl -s -L $(pacman -Swpdd $1) -o - | tar --zstd --exclude='.*' -tf - | grep -v '/$' > ~/.local/var/pkglist/$1.lst
|
||||||
|
echo $1 is installed at $HOME/.local/
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove() {
|
||||||
|
while read files; do rm ~/.local/$files; done < ~/.local/var/pkglist/$1.lst
|
||||||
|
rm ~/.local/var/pkglist/$1.lst
|
||||||
|
echo removed files from $HOME/.local/ and $HOME/var/pkglist/$1.lst
|
||||||
|
}
|
||||||
|
|
||||||
|
function update() {
|
||||||
|
while read list; do install $list; done < <(ls ~/.local/var/pkglist/*.lst | awk -F "/" '{print $NF}' | sed 's/\.lst//g')
|
||||||
|
}
|
||||||
|
|
||||||
|
function list() {
|
||||||
|
ls ~/.local/var/pkglist/*.lst | awk -F "/" '{print $NF}' | sed 's/\.lst//g'
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ "$source" == "install" ]]; then
|
||||||
|
if [ -z "$PACKAGE" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
install $PACKAGE
|
||||||
|
elif [[ "$source" == "remove" ]]; then
|
||||||
|
if [ -z "$PACKAGE" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
remove $PACKAGE
|
||||||
|
elif [[ "$source" == "list" ]]; then
|
||||||
|
if [ -z "$( ls -A ~/.local/var/pkglist )" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
list
|
||||||
|
elif [[ "$source" == "update" ]]; then
|
||||||
|
update
|
||||||
|
fi
|
||||||
Loading…
Add table
Add a link
Reference in a new issue