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
 | 
