Commits

Javier Aravena committed 497acb7

Updated to the pacman 3.5 database format

Comments (0)

Files changed (1)

-#compdef yaourt
+#compdef yaourt yaourt.static=yaourt
 
-# copy this file to /usr/share/zsh/site-functions/_yaourt
+# copy this file to /usr/share/zsh/site-functions/_pacman
 
 typeset -A opt_args
 
 # options for passing to _arguments: main pacman commands
 _yaourt_opts_commands=(
-	'-A[Add a package to the system]'
-	'-Q[Query the package database]'
-	'-R[Remove a package from the system]'
-	'-S[Synchronize packages]'
-	'-U[Upgrade a package]'
-	'-V[Display version and exit]'
-	'-h[Display usage]'
+    '-Q[Query the package database]'
+    '-R[Remove a package from the system]'
+    '-S[Synchronize packages]'
+    '-U[Upgrade a package]'
+    '-V[Display version and exit]'
+    '-h[Display usage]'
     '-B[backup pacman database]'
     '-G[Get PKGBUILD]'
+    '-C[Clean backup files]'
+    '--stats[Package Statistics]'
 )
 
 # options for passing to _arguments: options common to all commands
 _yaourt_opts_common=(
-	'-b[Alternate database location]:database_location:_files -/'
-	'-h[Display syntax for the given operation]'
-	'-r[Set alternate installation root]:installation root:_files -/'
-	'-v[Be more verbose]'
-	'--cachedir[Alternate package cache location]:cache_location:_files -/'
-	'--config[An alternate configuration file]:config file:_files'
-	'--logfile[An alternate log file]:config file:_files'
-	'--noconfirm[Do not ask for confirmation]'
-	'--noprogressbar[Do not show a progress bar when downloading files]'
-	'--noscriptlet[Do not execute the install scriptlet if one exists]'
+    '-b[Alternate database location]:database_location:_files -/'
+    '-h[Display syntax for the given operation]'
+    '-r[Set alternate installation root]:installation root:_files -/'
+    '-v[Be more verbose]'
+    '--cachedir[Alternate package cache location]:cache_location:_files -/'
+    '--config[An alternate configuration file]:config file:_files'
+    '--logfile[An alternate log file]:config file:_files'
+    '--noconfirm[Do not ask for confirmation]'
+    '--noprogressbar[Do not show a progress bar when downloading files]'
+    '--noscriptlet[Do not execute the install scriptlet if one exists]'
+    '--print[Only print the targets instead of performing the operation]'
 )
 
-# options for passing to _arguments: options for --add and --update commands
+# options for passing to _arguments: options for --upgrade commands
 _yaourt_opts_pkgfile=(
-	'-d[Skip dependency checks]'
-	'-f[Overwrite conflicting files]'
-	'*:package file:_files -g "*.pkg.tar.*"'
+    '-d[Skip dependency checks]'
+    '-f[Overwrite conflicting files]'
+    '*:package file:_files -g "*.pkg.tar.*(.)"'
 )
 
 # options for passing to _arguments: subactions for --query command
 _yaourt_opts_query_actions=(
-	'-g[View all members of a package group]:*:package groups:->query_group'
-	'-o[Query the package that owns a file]:file:_files'
-	'-p[Package file to query]:*:package file:->query_file'
-	'-s[Search package names and descriptions]:*:search text:->query_search'
+    '-g[View all members of a package group]:*:package groups:->query_group'
+    '-o[Query the package that owns a file]:file:_files'
+    '-p[Package file to query]:*:package file:->query_file'
+    '-s[Search package names and descriptions]:*:search text:->query_search'
 )
 
 # options for passing to _arguments: options for --query and subcommands
 _yaourt_opts_query_modifiers=(
-	'-c[List package changelog]'
-	'-d[List packages installed as dependencies]'
-	'-e[List packages explicitly installed]'
-	'-i[View package information]'
-	'-ii[View package information including backup files]'
-	'-l[List package contents]'
-	'-m[List installed packages not found in sync db(s)]'
-	'-t[List packages not required by any package]'
-	'-u[List packages that can be upgraded]'
+    '-c[List package changelog]'
+    '-d[List packages installed as dependencies]'
+    '-e[List packages explicitly installed]'
+    '-i[View package information]'
+    '-ii[View package information including backup files]'
+    '-k[Check package files]'
+    '-l[List package contents]'
+    '-m[List installed packages not found in sync db(s)]'
+    '-t[List packages not required by any package]'
+    '-u[List packages that can be upgraded]'
+	'--aur[Install packages from aur, even if they are in community, or, with the -u option, update packages installed from aur]'
+	'--devel[Used with -u updates all cvs/svn/git/hg/bzr packages]'
 )
 
 # options for passing to _arguments: options for --remove command
 _yaourt_opts_remove=(
-	'-c[Remove all dependent packages]'
-	'-d[Skip dependency checks]'
-	'-k[Only remove database entry, do not remove files]'
-	'-n[Remove protected configuration files]'
-	'-s[Remove dependencies not required by other packages]'
-	'*:installed package:_yaourt_completions_installed_packages'
+    '-c[Remove all dependent packages]'
+    '-d[Skip dependency checks]'
+    '-k[Only remove database entry, do not remove files]'
+    '-n[Remove protected configuration files]'
+    '-s[Remove dependencies not required by other packages]'
+    '*:installed package:_yaourt_completions_installed_packages'
 )
 
 # options for passing to _arguments: options for --sync command
 _yaourt_opts_sync_actions=(
-	'*-c[Remove old packages from cache]:*:clean:->sync_clean'
-	'*-cc[Remove all packages from cache]:*:clean:->sync_clean'
-	'-g[View all members of a package group]:*:package groups:->sync_group'
-	'-s[Search package names and descriptions]:*:search text:->sync_search'
+    '*-c[Remove old packages from cache]:*:clean:->sync_clean'
+    '*-cc[Remove all packages from cache]:*:clean:->sync_clean'
+    '-g[View all members of a package group]:*:package groups:->sync_group'
+    '-s[Search package names and descriptions]:*:search text:->sync_search'
 )
 
 # options for passing to _arguments: options for --sync command
 _yaourt_opts_sync_modifiers=(
-	'-d[Skip dependency checks]'
-	'-e[Install dependencies only]'
-	'-f[Overwrite conflicting files]'
-	'-i[View package information]'
-	'-l[List all packages in a repository]'
-	'-p[Print download URIs for each package to be installed]'
-	'-u[Upgrade all out-of-date packages]'
-	'-w[Download packages only]'
-	'-y[Download fresh package databases]'
-	'*--ignore[Ignore a package upgrade]:package:
-		_yaourt_completions_all_packages'
-	'*--ignoregroup[Ignore a group upgrade]:package group:
-		_yaourt_completions_all_groups'
-	'--asdeps[Install packages as non-explicitly installed]'
-	'--aur[Install packages from aur, even if they are in community, or, with the -u option, update packages installed from aur]'
-	'--devel[Used with -u updates all cvs/svn/git/hg/bzr packages]'
+    '-d[Skip dependency checks]'
+    '-f[Overwrite conflicting files]'
+    '-i[View package information]'
+    '-l[List all packages in a repository]'
+    '-p[Print download URIs for each package to be installed]'
+    '-u[Upgrade all out-of-date packages]'
+    '-w[Download packages only]'
+    '-y[Download fresh package databases]'
+    '*--ignore[Ignore a package upgrade]:package:
+        _yaourt_completions_all_packages'
+    '*--ignoregroup[Ignore a group upgrade]:package group:
+        _yaourt_completions_all_groups'
+    '--asdeps[Install packages as non-explicitly installed]'
+    '--asexplicit[Install packages as explicitly installed]'
 )
 
-# handles --action subcommand
-_yaourt_action_add() {
-	_arguments -s : \
-		"$_yaourt_opts_common[@]" \
-		"$_yaourt_opts_pkgfile[@]"
-}
-
 # handles --help subcommand
 _yaourt_action_help() {
-	_arguments -s : \
-		"$_yaourt_opts_commands[@]"
+    _arguments -s : \
+        "$_yaourt_opts_commands[@]"
 }
 
 # handles cases where no subcommand has yet been given
 _yaourt_action_none() {
-	_arguments -s : \
-		"$_yaourt_opts_commands[@]"
+    _arguments -s : \
+        "$_yaourt_opts_commands[@]"
 }
 
 # handles --query subcommand
 _yaourt_action_query() {
-	local context state line
-	typeset -A opt_args
-	
-#	_arguments -s : \
-#		"$_yaourt_opts_common[@]" \
-#		"$_yaourt_opts_query_actions[@]" \
-#		"$_yaourt_opts_query_modifiers[@]"
-		
-	case $state in
-		query_file)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:package file:_files -g "*.pkg.tar.*"'
-				;;
-		query_group)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:groups:_yaourt_completions_installed_groups'
-				;;
-		query_owner)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:file:_files'
-				;;
-		query_search)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:search text: '
-				;;
-		*)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_actions[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:package:_yaourt_completions_installed_packages'
-				;;
-	esac
+    local context state line
+    typeset -A opt_args
+    
+#   _arguments -s : \
+#       "$_yaourt_opts_common[@]" \
+#       "$_yaourt_opts_query_actions[@]" \
+#       "$_yaourt_opts_query_modifiers[@]"
+        
+    case $state in
+        query_file)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:package file:_files -g "*.pkg.tar.*"'
+                ;;
+        query_group)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:groups:_yaourt_completions_installed_groups'
+                ;;
+        query_owner)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:file:_files'
+                ;;
+        query_search)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:search text: '
+                ;;
+        *)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_actions[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:package:_yaourt_completions_installed_packages'
+                ;;
+    esac
 }
 
 # handles --remove subcommand
 _yaourt_action_remove() {
-	_arguments -s : \
-		"$_yaourt_opts_common[@]" \
-		"$_yaourt_opts_remove[@]"
+    _arguments -s : \
+        "$_yaourt_opts_common[@]" \
+        "$_yaourt_opts_remove[@]"
 }
 
 # handles --sync subcommand
 _yaourt_action_sync() {
-	local context state line
-	typeset -A opt_args
-	
-#	_arguments -s : \
-#		"$_yaourt_opts_common[@]" \
-#		"$_yaourt_opts_sync_actions[@]" #\
-#		#"$_yaourt_opts_sync_modifiers[@]"
-		
-	case $state in
-		sync_clean)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_sync_modifiers[@]" \
-				'*-c[Remove old packages from cache]' \
-				;;
-		sync_group)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_sync_modifiers[@]" \
-				'*:package group:_yaourt_completions_all_groups'
-				;;
-		sync_search)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_sync_modifiers[@]" \
-				'*:search text: '
-				;;
-		*)
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_sync_modifiers[@]" \
-				'*:package:_yaourt_completions_all_packages'
-				;;
-		esac
+    local context state line
+    typeset -A opt_args
+    
+#   _arguments -s : \
+#       "$_yaourt_opts_common[@]" \
+#       "$_yaourt_opts_sync_actions[@]" #\
+#       #"$_yaourt_opts_sync_modifiers[@]"
+        
+    case $state in
+        sync_clean)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_sync_modifiers[@]" \
+                '*-c[Remove old packages from cache]' \
+                ;;
+        sync_group)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_sync_modifiers[@]" \
+                '*:package group:_yaourt_completions_all_groups'
+                ;;
+        sync_search)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_sync_modifiers[@]" \
+                '*:search text: '
+                ;;
+        *)
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_sync_modifiers[@]" \
+                '*:package:_yaourt_completions_all_packages'
+                ;;
+        esac
 }
 
 # handles --upgrade subcommand
 _yaourt_action_upgrade() {
-	_arguments -s : \
-		"$_yaourt_opts_common[@]" \
-		"$_yaourt_opts_pkgfile[@]"
+    _arguments -s : \
+        "$_yaourt_opts_common[@]" \
+        "$_yaourt_opts_pkgfile[@]"
 }
 
 # handles --version subcommand
 _yaourt_action_version() {
-	# no further arguments
-	return 0
+    # no further arguments
+    return 0
 }
 
 # provides completions for package groups
 _yaourt_completions_all_groups() {
-	local -a cmd groups
-	_yaourt_get_command
-	groups=( $(_call_program groups $cmd[@] -Sg) )
-	compadd "$@" -a groups
+    local -a cmd groups
+    _yaourt_get_command
+    groups=( $(_call_program groups $cmd[@] -Sg) )
+    typeset -U groups
+    compadd "$@" -a groups
 }
 
 # provides completions for packages available from repositories
 # these can be specified as either 'package' or 'repository/package'
 _yaourt_completions_all_packages() {
-	local -a cmd packages repositories packages_long
+    local -a cmd packages repositories packages_long
+    _yaourt_get_command
 
-	repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
-	typeset -U repositories
-	packages_long=(/var/lib/pacman/sync/${^repositories}/*(/))
-	packages=(${(o)${${packages_long/\/var\/lib\/pacman\/sync\//}#*/}%-*-*} )
-	typeset -U packages
-	_wanted packages expl "packages" compadd - "${(@)packages}"
-	if [[ $PREFIX != */* ]] ; then
-		repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
-		typeset -U repositories
-		_wanted repo_packages expl "repository/package" compadd -S "/" $repositories
-	else
-		compset -P '*/'
-		packages_long=(/var/lib/pacman/sync/$IPREFIX*(/))
-		packages=(${(o)${${packages_long/\/var\/lib\/pacman\/sync\//}#*/}%-*-*} )
-		typeset -U packages
-		_wanted repo_packages expl "repository/package" compadd ${(@)packages}
-	fi
+    if compset -P1 '*/*'; then
+        packages=( $(_call_program packages $cmd[@] -Sql ${words[CURRENT]%/*}) )
+        typeset -U packages
+        _wanted repo_packages expl "repository/package" compadd ${(@)packages}
+    else
+        packages=( $(_call_program packages $cmd[@] -Sql) )
+        typeset -U packages
+        _wanted packages expl "packages" compadd - "${(@)packages}"
+
+        repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
+        typeset -U repositories
+        _wanted repo_packages expl "repository/package" compadd -S "/" $repositories
+    fi
 }
 
 # provides completions for package groups
 _yaourt_completions_installed_groups() {
-	local -a cmd groups
-	_yaourt_get_command
-	groups=(${(o)${(f)"$(pacman -Qg)"}% *})
-	typeset -U groups
-	compadd "$@" -a groups
+    local -a cmd groups
+    _yaourt_get_command
+    groups=(${(o)${(f)"$(_call_program groups $cmd[@] -Qg)"}% *})
+    typeset -U groups
+    compadd "$@" -a groups
 }
 
 # provides completions for installed packages
 _yaourt_completions_installed_packages() {
-	local -a cmd packages packages_long
-	packages_long=(/var/lib/pacman/local/*(/))
-	packages=( ${${packages_long/\/var\/lib\/pacman\/local\//}%-*-*} )
-	compadd "$@" -a packages
+    local -a cmd packages packages_long
+    packages_long=(/var/lib/pacman/local/*(/))
+    packages=( ${${packages_long#/var/lib/pacman/local/}%-*-*} )
+    compadd "$@" -a packages
 }
 
 # provides completions for repository names
 _yaourt_completions_repositories() {
-	local -a cmd repositories
-	repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
-	# Uniq the array
-	typeset -U repositories
-	compadd "$@" -a repositories
+    local -a cmd repositories
+    repositories=(${(o)${${${(M)${(f)"$(</etc/pacman.conf)"}:#\[*}/\[/}/\]/}:#options})
+    # Uniq the array
+    typeset -U repositories
+    compadd "$@" -a repositories
 }
 
 # builds command for invoking pacman in a _call_program command - extracts
 # relevant options already specified (config file, etc)
 # $cmd must be declared by calling function
 _yaourt_get_command() {
-	# this is mostly nicked from _perforce
-	cmd=( "pacman" )
-	integer i
-	for (( i = 2; i < CURRENT - 1; i++ )); do
-		if [[ ${words[i]} = "--config" || ${words[i]} = "--root" ]]; then
-			cmd+=( ${words[i,i+1]} )
-		fi
-	done
+    # this is mostly nicked from _perforce
+    cmd=( "pacman" )
+    integer i
+    for (( i = 2; i < CURRENT - 1; i++ )); do
+        if [[ ${words[i]} = "--config" || ${words[i]} = "--root" ]]; then
+            cmd+=( ${words[i,i+1]} )
+        fi
+    done
 }
 
 # main dispatcher
-_yaourt() {
-	case $words[2] in
-		-A*)  _yaourt_action_add      ;;
-		-Q*g*) # ipkg groups
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:groups:_yaourt_completions_installed_groups'
-				;;
-		-Q*o*) # file
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:package file:_files'
-				;;
-		-Q*p*) # file *.pkg.tar.*
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_query_modifiers[@]" \
-				'*:package file:_files -g "*.pkg.tar.*"'
-				;;
-		-Q*)  _yaourt_action_query    ;;
-		-R*)  _yaourt_action_remove   ;;
-		-S*c*) # no completion
-			return 0
-			;;
-		-S*l*) # repos
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_sync_modifiers[@]" \
-				'*:package repo:_yaourt_completions_repositories' \
-				;;
-		-S*g*) # pkg groups
-			_arguments -s : \
-				"$_yaourt_opts_common[@]" \
-				"$_yaourt_opts_sync_modifiers[@]" \
-				'*:package group:_yaourt_completions_all_groups'
-				;;
-		-S*)  _yaourt_action_sync     ;;
-		-U*)  _yaourt_action_upgrade  ;;
-		-V*)  _yaourt_action_version  ;;
-		-h*)  _yaourt_action_help     ;;
-		-  )  _yaourt_action_none     ;;
-		*  )  return 1                ;;
-	esac
+_pacman() {
+    case $words[2] in
+        -Q*g*) # ipkg groups
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:groups:_yaourt_completions_installed_groups'
+                ;;
+        -Q*o*) # file
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:package file:_files'
+                ;;
+        -Q*p*) # file *.pkg.tar.*
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_query_modifiers[@]" \
+                '*:package file:_files -g "*.pkg.tar.*"'
+                ;;
+        -Q*)  _yaourt_action_query    ;;
+        -R*)  _yaourt_action_remove   ;;
+        -S*c*) # no completion
+            return 0
+            ;;
+        -S*l*) # repos
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_sync_modifiers[@]" \
+                '*:package repo:_yaourt_completions_repositories' \
+                ;;
+        -S*g*) # pkg groups
+            _arguments -s : \
+                "$_yaourt_opts_common[@]" \
+                "$_yaourt_opts_sync_modifiers[@]" \
+                '*:package group:_yaourt_completions_all_groups'
+                ;;
+        -S*)  _yaourt_action_sync     ;;
+        -U*)  _yaourt_action_upgrade  ;;
+        -V*)  _yaourt_action_version  ;;
+        -h*)  _yaourt_action_help     ;;
+        -  )  _yaourt_action_none     ;;
+        *  )  return 1                ;;
+    esac
 }
 
 # run the main dispatcher
-_yaourt "$@"
-
+_pacman "$@"