mirror of
https://github.com/outbackdingo/scratchpkg.git
synced 2026-02-06 01:16:34 +00:00
109 lines
2.2 KiB
Bash
Executable File
109 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
msg() {
|
|
echo "$CMD: $*"
|
|
}
|
|
|
|
get_info() {
|
|
echo -ne "$1 "
|
|
grep -e ^version -e ^release "$INDEX_DIR"/$1/.pkginfo | awk '{print $3}' | tr '\n' '-' | sed 's:\-$::'
|
|
echo
|
|
}
|
|
|
|
pkg_installed() {
|
|
for pkg in $(grep ^name "$INDEX_DIR"/*/.pkginfo | awk '{print $3}'); do
|
|
get_info $pkg
|
|
done
|
|
}
|
|
|
|
pkg_listfiles() {
|
|
[ "$1" ] || return
|
|
if [ ! -f "$INDEX_DIR"/$1/.files ]; then
|
|
msg "port '$1' not installed."
|
|
exit 1
|
|
fi
|
|
cat "$INDEX_DIR"/$1/.files
|
|
}
|
|
|
|
pkg_own() {
|
|
[ "$1" ] || return
|
|
local arg
|
|
arg=$(echo $1 | sed "s/^\///")
|
|
grep "$arg" $INDEX_DIR/*/.files | sed "s:$INDEX_DIR/::" | sed "s:/.files::" | tr : " " | column -t
|
|
}
|
|
|
|
pkg_port() {
|
|
find ${PORT_REPO[@]} -name spkgbuild -follow -printf "%h\n"
|
|
}
|
|
|
|
pkg_diff() {
|
|
for pkg in $(pkg_installed | awk '{print $1}'); do
|
|
installed_ver=$(grep -e ^version -e ^release /var/lib/scratchpkg/index/$pkg/.pkginfo | awk '{print $3}' | tr '\n' '-' | sed 's/-$//')
|
|
port_ver=$(pkg_query $pkg | awk '{print $2,$3}' | tr ' ' '-')
|
|
[ "$installed_ver" ] || continue
|
|
[ "$port_ver" ] || continue
|
|
if [ "$installed_ver" != "$port_ver" ]; then
|
|
echo "$pkg: $installed_ver -> $port_ver"
|
|
fi
|
|
done
|
|
}
|
|
|
|
pkg_query() {
|
|
[ "$1" ] || return
|
|
. $(pkg_port | grep "/$1$")/spkgbuild 2>/dev/null && \
|
|
echo "$name $version $release" || \
|
|
return
|
|
}
|
|
|
|
get_repo() {
|
|
if [ ! -f "$REPOFILE" ]; then
|
|
msg "repo file not exist. ($REPOFILE)"
|
|
exit 1
|
|
else
|
|
while read -r repodir repourl junk; do
|
|
case $repodir in
|
|
""|"#"*) continue ;;
|
|
esac
|
|
PORT_REPO+=($repodir)
|
|
done < "$REPOFILE"
|
|
fi
|
|
}
|
|
|
|
usage() {
|
|
cat << EOF
|
|
Usage:
|
|
$(basename $0) <option> [arg]
|
|
|
|
Options:
|
|
-i,--installed print all installed ports
|
|
-p,--ports print all existing ports
|
|
-d,--diff print outdate ports
|
|
-l,--listfiles <port> print files for ports
|
|
-o,--owner <file> print files owner
|
|
-q,--query <port> print ports details
|
|
|
|
EOF
|
|
}
|
|
|
|
main() {
|
|
get_repo
|
|
|
|
case $1 in
|
|
-i|--installed) pkg_installed ;;
|
|
-l|--listfiles) pkg_listfiles $2 ;;
|
|
-o|--owner) pkg_own $2 ;;
|
|
-p|--ports) pkg_port ;;
|
|
-d|--diff) pkg_diff ;;
|
|
-q|--query) pkg_query $2 ;;
|
|
*) usage ;;
|
|
esac
|
|
}
|
|
|
|
INDEX_DIR="/var/lib/scratchpkg/index"
|
|
REPOFILE="/etc/scratchpkg.repo"
|
|
CMD=$(basename $0)
|
|
|
|
main $@
|
|
|
|
exit 0
|