101 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| #compdef pixz
 | |
| # ------------------------------------------------------------------------------
 | |
| # Copyright (c) 2016 Github zsh-users - http://github.com/zsh-users
 | |
| # All rights reserved.
 | |
| #
 | |
| # Redistribution and use in source and binary forms, with or without
 | |
| # modification, are permitted provided that the following conditions are met:
 | |
| #     * Redistributions of source code must retain the above copyright
 | |
| #       notice, this list of conditions and the following disclaimer.
 | |
| #     * Redistributions in binary form must reproduce the above copyright
 | |
| #       notice, this list of conditions and the following disclaimer in the
 | |
| #       documentation and/or other materials provided with the distribution.
 | |
| #     * Neither the name of the zsh-users nor the
 | |
| #       names of its contributors may be used to endorse or promote products
 | |
| #       derived from this software without specific prior written permission.
 | |
| #
 | |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 | |
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | |
| # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | |
| # DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
 | |
| # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | |
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | |
| # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | |
| # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | |
| # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| # ------------------------------------------------------------------------------
 | |
| # Description
 | |
| # -----------
 | |
| #
 | |
| #  Completion script for pixz a parallel, indexing version of xz. (https://github.com/vasi/pixz).
 | |
| #
 | |
| # ------------------------------------------------------------------------------
 | |
| # Authors
 | |
| # -------
 | |
| #
 | |
| #  * Jindřich Pilař (https://github.com/JindrichPilar)
 | |
| #
 | |
| # ------------------------------------------------------------------------------
 | |
| 
 | |
| local -a files index
 | |
| files=()
 | |
| index=()
 | |
| 
 | |
| _pixz_compressed_files() {
 | |
|     files=("${(f)$(ls -l | grep '.tpxz$\|.xz$' | rev | cut -d' ' -f1 | rev)}")
 | |
| }
 | |
| 
 | |
| _pixz_load_file_index() {
 | |
|     index=("${(f)$(pixz -l $1)}")
 | |
| }
 | |
| 
 | |
| _pixz() {
 | |
| 
 | |
|     _arguments -C \
 | |
|       '(- 1 *)'-h"[Show help and exit]" \
 | |
|       '(- 1 *)'-l"[List tarball contents very fast]:file:->xzfiles" \
 | |
|       '(- 1 *)'-x"[Extract one file very fast]:filepath:->filepath" \
 | |
|       '(- 1 *)'-d"[Decompress]:file:->xzfiles" \
 | |
|       "-i[Input]:file:->files" \
 | |
|       "-o[Output]:output:->outputxz" \
 | |
|       "-p[Use a maximum of NUM CPU-intensive threads]:cpu:->cpus" \
 | |
|       "-t[Don't assume input is in tar format]" \
 | |
|       "-k[Keep original input (do not remove it)]" \
 | |
|       "-e[Use "extreme" compression, which is much slower]" \
 | |
|       "-f[Set the size of each compression block, relative to the LZMA dictionary size (default is 2.0)]:num" \
 | |
|       "-q[Set the number of blocks to allocate for the compression queue (default is 1.3 * cores + 2)]:num" \
 | |
|       '1:inputfile:->files' \
 | |
|       '2:outputfile' \
 | |
|       '*: : :->args' \
 | |
| 
 | |
|     case "$state" in
 | |
|       (cmds)
 | |
|             _describe -t commands 'commands' commands
 | |
|       ;;
 | |
|       (xzfiles)
 | |
|             _pixz_compressed_files
 | |
|             _describe -t files 'files' files
 | |
|       ;;
 | |
|       (files)
 | |
|           _files
 | |
|       ;;
 | |
|       (cpus)
 | |
|           local num_cpus cores
 | |
|           num_cpus=$(nproc)
 | |
|           cores=()
 | |
|           for i in {1..$num_cpus}; do
 | |
|               cores+=($i)
 | |
|           done
 | |
|           _describe -t cores 'cores' cores
 | |
|       ;;
 | |
|       (filepath)
 | |
|       ;;
 | |
|       (*)
 | |
|       ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| _pixz
 | |
| 
 |