===================================================================== --- Changes ------------------------------ - split up environment files per scwrypts group - updated i3/launch-or-show to provide some new options --- Bug Fixes ---------------------------- - utils/io commands like 'STATUS' no longer throw errors '%' characters - fixed ERROR_CHECK function calls to CHECK_ERRORS
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/zsh
 | 
						|
DEPENDENCIES+=()
 | 
						|
REQUIRED_ENV+=()
 | 
						|
 | 
						|
use system/packages/git
 | 
						|
 | 
						|
CHECK_ENVIRONMENT
 | 
						|
#####################################################################
 | 
						|
 | 
						|
INSTALL() {
 | 
						|
	local USAGE="
 | 
						|
		usage: [...options...]
 | 
						|
 | 
						|
		options
 | 
						|
		  -t, --target-url <string>   target URL; required for first-time download
 | 
						|
		  -n, --local-name <string>   local name for package (optional)
 | 
						|
 | 
						|
		  -u, --update                if package exists, update without prompt
 | 
						|
		  -b, --only-build            if package exists, skip update step and only build
 | 
						|
		  -p, --only-pull             skip the automated build step
 | 
						|
		  -c, --clean                 for make, run make clean before build
 | 
						|
 | 
						|
		  -h, --help                  print this message and exit
 | 
						|
	"
 | 
						|
	local NAME
 | 
						|
	local TARGET
 | 
						|
 | 
						|
	local SKIP_BUILD=0
 | 
						|
	local SKIP_PULL=0
 | 
						|
	local UPDATE=0
 | 
						|
	local CLEAN=0
 | 
						|
 | 
						|
	while [[ $# -gt 0 ]]
 | 
						|
	do
 | 
						|
		case $1 in
 | 
						|
			-t | --target-url ) TARGET="$2"; shift 1 ;;
 | 
						|
			-n | --local-name ) NAME="$2"; shift 1 ;;
 | 
						|
 | 
						|
			-u | --update     ) UPDATE=1 ;;
 | 
						|
			-b | --only-build ) SKIP_PULL=1 ;;
 | 
						|
			-p | --only-pull  ) SKIP_BUILD=1 ;;
 | 
						|
			-c | --clean      ) CLEAN=1 ;;
 | 
						|
 | 
						|
			-h | --help ) USAGE; exit 0 ;;
 | 
						|
 | 
						|
			-* ) ERROR "unknown argument '$1'" ;;
 | 
						|
 | 
						|
			* ) [ ! $TARGET ] && TARGET="$1" \
 | 
						|
					|| ERROR "extra positional argument '$1'" \
 | 
						|
					;
 | 
						|
				;;
 | 
						|
		esac
 | 
						|
		shift 1
 | 
						|
	done
 | 
						|
 | 
						|
	[[ $SKIP_PULL -eq 1 ]] && [[ $SKIP_BUILD -eq 1 ]] && ERROR 'only one of [-b | -p] can be specified'
 | 
						|
 | 
						|
	[ ! $TARGET ] && [ ! $NAME ] && {
 | 
						|
		[[ $SKIP_BUILD -eq 1 ]] && {
 | 
						|
			ERROR 'cannot skip build without specifying package local-name'
 | 
						|
		} || {
 | 
						|
			UPDATE=1
 | 
						|
			NAME=$(ls "$PACKAGE_INSTALL_DIR" | FZF 'select a package to update')
 | 
						|
			[ ! $NAME ] && ERROR 'target-url required'
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	CHECK_ERRORS
 | 
						|
 | 
						|
	####################################################
 | 
						|
 | 
						|
	[ ! $NAME ] && {
 | 
						|
		NAME=$(echo $TARGET | sed 's/.*\///; s/\.git$//')
 | 
						|
		INFO "using default name '$NAME'"
 | 
						|
	}
 | 
						|
 | 
						|
	[ -d "$PACKAGE_INSTALL_DIR/$NAME" ] && [[ $SKIP_PULL -eq 0 ]] && {
 | 
						|
		[[ $UPDATE -eq 0 ]] && Yn "package '$NAME' already exists; update now?" && UPDATE=1
 | 
						|
		[[ $UPDATE -eq 1 ]] && PULL || return 1
 | 
						|
	}
 | 
						|
 | 
						|
	[ ! -d "$PACKAGE_INSTALL_DIR/$NAME" ] && {
 | 
						|
		CLONE || return 2
 | 
						|
	}
 | 
						|
 | 
						|
	[[ $SKIP_BUILD -eq 1 ]] && return 0
 | 
						|
	BUILD
 | 
						|
}
 | 
						|
 | 
						|
#####################################################################
 | 
						|
INSTALL $@
 |