57 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/zsh
 | |
| 
 | |
| zparseopts -D -E i=installed -installed=installed h=help -help=help
 | |
| 
 | |
| if [[ $help ]]; then
 | |
| 	<<-HELP
 | |
| 	xqq: interactive xbps-query
 | |
| 	
 | |
| 	Options:
 | |
| 		-i, --installed: only show installed packages
 | |
| 	HELP
 | |
| 	exit
 | |
| fi
 | |
| 
 | |
| if [[ $installed ]]; then
 | |
| 	filter-installed() {
 | |
| 		grep -e '^\[\*\]'
 | |
| 	}
 | |
| else
 | |
| 	filter-installed() {
 | |
| 		cat
 | |
| 	}
 | |
| fi
 | |
| 
 | |
| package=$(
 | |
| 	xbps-query -Rs "$*" \
 | |
| 		| filter-installed \
 | |
| 		| fzf \
 | |
| 		| cut -d' ' -f 2 \
 | |
| 		)
 | |
| 
 | |
| description=$(xbps-query -R $package)
 | |
| colored_description=$(mktemp)
 | |
| { 
 | |
| 	grep '^pkgname:' <<<$description
 | |
| 	grep '^pkgver:' <<<$description
 | |
| 	grep '^short_desc:' <<<$description
 | |
| 	grep -v '^pkgname:\|^pkgver:\|^short_desc:' <<<$description
 | |
| 
 | |
| }| sed -e 's/^\([^:]*:\)/\x1B[33m\1\x1B[0m/' > $colored_description
 | |
| 
 | |
| action=$(
 | |
| 	printf "%s\n" details install remove hold unhold 'list files' 'open homepage' 'set to auto' 'set to manual'| fzf --header "Actions for $package" --preview "cat $colored_description"
 | |
| )
 | |
| 
 | |
| case $action in
 | |
| 	details) cat $colored_description ;;
 | |
| 	install) sudo xbps-install $package ;;
 | |
| 	remove) sudo xbps-remove $package ;;
 | |
| 	hold) sudo xbps-pkgdb -m hold $package ;;
 | |
| 	unhold) sudo xbps-pkgdb -m unhold $package ;;
 | |
| 	'list files') xbps-query -Rf $package ;;
 | |
| 	'open homepage') xbps-query -Rp homepage $package | xargs xdg-open;;
 | |
| 	'set to auto') sudo xbps-pkgdb -m auto $package ;;
 | |
| 	'set to manual') sudo xbps-pkgdb -m manual $package ;;
 | |
| 	*) echo "unknown action: $action"
 | |
| esac
 | 
