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
 | 
