59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
cd /usr/ports
 | 
						|
 | 
						|
# CHECK COMMAND LINE ARGUMENT
 | 
						|
if [ ! -z "$1" ]; then
 | 
						|
    INPUT="$1"
 | 
						|
    if [ -f "/usr/ports/$INPUT/pkg/DESCR" ]; then
 | 
						|
        DIR="$INPUT"
 | 
						|
    fi
 | 
						|
fi
 | 
						|
 | 
						|
# CHECK CLIPBOARD
 | 
						|
if [ -z "$1" ]; then
 | 
						|
    INPUT="$(xclip -o|head -1|col -b)"
 | 
						|
    if [ -f "/usr/ports/$INPUT/pkg/DESCR" ]; then
 | 
						|
        DIR="$INPUT"
 | 
						|
    fi
 | 
						|
fi
 | 
						|
 | 
						|
# ASK USER
 | 
						|
if [ -z "$DIR" ]; then
 | 
						|
    DIR=$(ls -1d */* mystuff/*/* \
 | 
						|
            | egrep -v '^pobj|^distfiles|^log|^plist|^packages|CVS|Makefile|\.tgz$' \
 | 
						|
            | fzf -e);
 | 
						|
fi
 | 
						|
 | 
						|
# Nothing selected.
 | 
						|
[ -z "$DIR" ] && exit 0
 | 
						|
 | 
						|
# Move to chosen dir
 | 
						|
cd "/usr/ports/$DIR"
 | 
						|
 | 
						|
# Gather port details and show them
 | 
						|
DETAILS=$(printf "%s\n\n%s\n%s\n%s\n\nCVS %s\n" \
 | 
						|
            "/usr/ports/$DIR" \
 | 
						|
            "Package:    $(make show=FULLPKGNAME)" \
 | 
						|
            "Maintainer: $(make show=MAINTAINER)" \
 | 
						|
            "Homepage:   $(make show=HOMEPAGE)" \
 | 
						|
            "$(cvs log -Nl -rHEAD 2>&1 \
 | 
						|
                | awk '{
 | 
						|
                    if ($0 ~ /^===/) p++;
 | 
						|
                    if (p == 1) print $0;
 | 
						|
                    if ($0 ~ /^---/) p++;
 | 
						|
                    }' \
 | 
						|
            )" \
 | 
						|
            | fzf -e)
 | 
						|
 | 
						|
# Nothing selected.
 | 
						|
[ -z "$DETAILS" ] && exit 0
 | 
						|
 | 
						|
# Do whatever.
 | 
						|
case "$DETAILS" in
 | 
						|
    Package*)    make show=FULLPKGNAME | xclip -r; ;;
 | 
						|
    Maintainer*) make show=MAINTAINER | xclip -r; ;;
 | 
						|
    Homepage*)   firefox "$(make show=HOMEPAGE)" & ;;
 | 
						|
    *)           cd "$DETAILS"; port mark; ksh; ;;
 | 
						|
esac
 |