dotfiles/.bin/port

92 lines
2.1 KiB
Bash
Executable File

#!/bin/sh
usage() {
printf "Argument missing\n"
exit 2
}
[ -z $1 ] && usage
# MAKE SURE MARKFILE EXISTS
MARKFILE="/var/cache/pmark"
if [ ! -f "${MARKFILE}" ]
then
doas touch "${MARKFILE}"
doas sdk:sdk "${MARKFILE}"
fi
portmark() {
printf "%s" "${PWD}" > ${MARKFILE}
printf "marked.\n"
}
portsrcdir() {
printf "%s" "$(cat "${MARKFILE}")"
}
portobjdir() {
cd "$(cat "${MARKFILE}")" \
&& printf "%s" "$(make show=WRKSRC)"
}
portclean() {(
cd /usr/ports
doas rm -rf /usr/ports/{pobj/*,plist,logs,packages,bulk,update}
doas make fix-permissions > /dev/null
echo done
)}
portdiff() {
_opwd="$PWD"
_name="$(make show=PKGNAME)"
_epoch="$(make show=EPOCH)"
_rev="$(make show=REVISION)"
_patchname="${_name}${_epoch:+v$_epoch}${_rev:+p$_rev}"
cd /usr/ports \
&& doas cvs -d sdk@cvs.openbsd.org:/cvs diff -uNp $(echo "$_opwd" \
| sed 's,/data/cvs/ports/,,g' \
| sed 's,/usr/ports/,,g') \
> /home/sdk/diffs/${_patchname}.diff
grep '^?' /home/sdk/diffs/${_patchname}.diff
cd "$_opwd"
printf "Patch created: /home/sdk/diffs/%s.diff\n" "$_patchname"
}
portpack() {
_dir="$(basename "$(readlink -f .)")"
cd ..
doas tar czvf "${_dir}.tgz" "${_dir}" \
&& readlink -f "${_dir}.tgz"
cd -
}
portjump() {
if [ -z $1 ]
then
echo /usr/ports
exit 0
fi
_dirs="archivers astro audio benchmarks biology books bulk \
cad chinese comms converters databases devel editors \
education emulators fonts games geo graphics inputmethods \
japanese java korean lang mail math meta misc multimedia \
net news plan9 print productivity security shells sysutils \
telephony textproc wayland www x11"
for d in $_dirs
do
if [ -d /usr/ports/$d/$1 ]
then
echo /usr/ports/$d/$1
fi
done
}
case $1 in
mark) portmark; ;;
src) portsrcdir; ;;
obj) portobjdir; ;;
clean) portclean; ;;
diff) portdiff; ;;
pack) portpack; ;;
jump) portjump $2; ;;
esac