92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 |