Compare commits
	
		
			8 Commits
		
	
	
		
			v4.1.4
			...
			aefd575539
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| aefd575539 | |||
| 26992d2f01 | |||
| 487fa65d38 | |||
| 3ff44f8e58 | |||
| f0a6b16a0c | |||
| 74fe48cc4a | |||
| 6fe5b8e26a | |||
| 3d1eb9e03d | 
| @@ -4,7 +4,14 @@ version: 2.1 | ||||
| orbs: | ||||
|   python: circleci/python@2.1.1 | ||||
|  | ||||
|  | ||||
| executors: | ||||
|   archlinux: | ||||
|     docker: | ||||
|       - image: archlinux:base-devel | ||||
|     resource_class: small | ||||
|     working_directory: / | ||||
|  | ||||
|   python: | ||||
|     docker: | ||||
|       - image: cimg/python:3.11 | ||||
| @@ -16,30 +23,124 @@ executors: | ||||
|     resource_class: medium | ||||
|  | ||||
|  | ||||
| jobs: | ||||
|   python-test: | ||||
|     executor: python | ||||
|     working_directory: ~/scwrypts/py/lib | ||||
| commands: | ||||
|   archlinux-run: | ||||
|     description: execute command steps in the archlinux container from the CI user | ||||
|     parameters: | ||||
|       _name: | ||||
|         type: string | ||||
|       command: | ||||
|         type: string | ||||
|       working_directory: | ||||
|         type: string | ||||
|         default: /home/ci | ||||
|     steps: | ||||
|       - checkout: | ||||
|           path: ~/scwrypts | ||||
|       - run: | ||||
|           name: pytest | ||||
|           name: << parameters._name >> | ||||
|           working_directory: << parameters.working_directory >> | ||||
|           command: su ci -c '<< parameters.command >>' | ||||
|  | ||||
|  | ||||
| custom: | ||||
|   archlinux: | ||||
|     prepare: | ||||
|       - &archlinux-prepare | ||||
|         run: | ||||
|           name: prepare archlinux dependencies | ||||
|           command: | | ||||
|             pacman --noconfirm -Syu git openssh ca-certificates-utils | ||||
|             useradd -m ci | ||||
|             echo "ci ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers | ||||
|  | ||||
|     clone-aur: | ||||
|       - &archlinux-clone-aur | ||||
|         archlinux-run: | ||||
|           _name: clone aur/scwrypts | ||||
|           command: git clone https://aur.archlinux.org/scwrypts.git aur | ||||
|  | ||||
|     clone-scwrypts: | ||||
|       - &archlinux-clone-scwrypts | ||||
|         run: | ||||
|           name: clone wrynegade/scwrypts | ||||
|           working_directory: /home/ci | ||||
|           command: | | ||||
|             GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone -b "$(echo $CIRCLE_BRANCH | grep . || echo $CIRCLE_TAG)" "$CIRCLE_REPOSITORY_URL" scwrypts | ||||
|             chown -R ci:ci  ./scwrypts | ||||
|  | ||||
|  | ||||
| jobs: | ||||
|   require-full-semver: | ||||
|     executor: python | ||||
|     steps: | ||||
|       - run: | ||||
|           name: check CIRCLE_TAG for full semantic version | ||||
|           command: | | ||||
|             : \ | ||||
|               && pip install . .[test] \ | ||||
|               && pytest \ | ||||
|               ; | ||||
|       - run: pip install build && python -m build | ||||
|                 && [ $CIRCLE_TAG ] \ | ||||
|                 && [[ $CIRCLE_TAG =~ ^v[0-9]*.[0-9]*.[0-9]*$ ]] \ | ||||
|                 ; | ||||
|  | ||||
|   python-publish: | ||||
|     executor: python | ||||
|     working_directory: ~/scwrypts/py/lib | ||||
|   aur-test: | ||||
|     executor: archlinux | ||||
|     steps: | ||||
|       - checkout: | ||||
|           path: ~/scwrypts | ||||
|       - run: pip install build && python -m build | ||||
|       - run: pip install twine && twine upload dist/* | ||||
|       - *archlinux-prepare | ||||
|       - *archlinux-clone-aur | ||||
|       - *archlinux-clone-scwrypts | ||||
|       - archlinux-run: | ||||
|           _name: test aur build on current source | ||||
|           working_directory: /home/ci/aur | ||||
|           command: >- | ||||
|             : | ||||
|             && PKGVER=$(sed -n "s/^pkgver=//p" ./PKGBUILD) | ||||
|             && cp -r ../scwrypts ../scwrypts-$PKGVER | ||||
|             && rm -rf ../scwrypts-$PKGVER/.circleci | ||||
|             && rm -rf ../scwrypts-$PKGVER/.git | ||||
|             && rm -rf ../scwrypts-$PKGVER/.gitattributes | ||||
|             && rm -rf ../scwrypts-$PKGVER/.gitignore | ||||
|             && rm -rf ../scwrypts-$PKGVER/.github | ||||
|             && tar -czf scwrypts.tar.gz ../scwrypts-$PKGVER | ||||
|             && echo "source=(scwrypts.tar.gz)" >> PKGBUILD | ||||
|             && echo "sha256sums=(SKIP)" >> PKGBUILD | ||||
|             && makepkg --noconfirm -si | ||||
|             && scwrypts --version | grep "^scwrypts v$PKGVER$" | ||||
|             ; | ||||
|  | ||||
|   aur-publish: | ||||
|     executor: archlinux | ||||
|     steps: | ||||
|       - *archlinux-prepare | ||||
|       - *archlinux-clone-aur | ||||
|       - archlinux-run: | ||||
|           _name: update PKGBUILD and .SRCINFO | ||||
|           working_directory: /home/ci/aur | ||||
|           command: >- | ||||
|             : | ||||
|             && NEW_VERSION=$(echo $CIRCLE_TAG | sed 's/^v//') | ||||
|             && sed "s/pkgver=.*/pkgver=$NEW_VERSION/; s/^pkgrel=.*/pkgrel=1/; /sha256sums/d" PKGBUILD -i | ||||
|             && makepkg -g >> PKGBUILD | ||||
|             && makepkg --printsrcinfo > .SRCINFO | ||||
|             ; | ||||
|       - archlinux-run: | ||||
|           _name: sanity check for version build | ||||
|           working_directory: /home/ci/aur | ||||
|           command: >- | ||||
|             : | ||||
|             && makepkg --noconfirm -si | ||||
|             && scwrypts --version | ||||
|             && scwrypts --version | grep -q "^scwrypts $CIRCLE_TAG\$" | ||||
|             ; | ||||
|       - archlinux-run: | ||||
|           _name: publish new version | ||||
|           working_directory: /home/ci/aur | ||||
|           command: >- | ||||
|             : | ||||
|             && git add PKGBUILD .SRCINFO | ||||
|             && git -c user.email=yage@yage.io -c user.name=yage commit -am "$CIRCLE_TAG" | ||||
|             && eval $(ssh-agent) | ||||
|             && echo -e $SSH_KEY_PRIVATE__AUR | ssh-add - | ||||
|             && git remote add upstream ssh://aur@aur.archlinux.org/scwrypts.git | ||||
|             && GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git push upstream | ||||
|             ; | ||||
|  | ||||
|   nodejs-test: | ||||
|     executor: nodejs | ||||
| @@ -108,51 +209,83 @@ jobs: | ||||
|               && pnpm publish --no-git-checks \ | ||||
|               ; | ||||
|  | ||||
|   python-test: | ||||
|     executor: python | ||||
|     working_directory: ~/scwrypts/py/lib | ||||
|     steps: | ||||
|       - checkout: | ||||
|           path: ~/scwrypts | ||||
|       - run: | ||||
|           name: pytest | ||||
|           command: | | ||||
|             : \ | ||||
|               && pip install . .[test] \ | ||||
|               && pytest \ | ||||
|               ; | ||||
|       - run: pip install build && python -m build | ||||
|  | ||||
|   python-publish: | ||||
|     executor: python | ||||
|     working_directory: ~/scwrypts/py/lib | ||||
|     steps: | ||||
|       - checkout: | ||||
|           path: ~/scwrypts | ||||
|       - run: pip install build && python -m build | ||||
|       - run: pip install twine && twine upload dist/* | ||||
|  | ||||
|  | ||||
| workflows: | ||||
|   python-dev: | ||||
|   test: | ||||
|     jobs: | ||||
|       - python-test: | ||||
|       - aur-test: | ||||
|           &dev-filters | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: /^main$/ | ||||
|  | ||||
|   python: | ||||
|       - python-test: *dev-filters | ||||
|       - nodejs-test: *dev-filters | ||||
|  | ||||
|   publish: | ||||
|     jobs: | ||||
|       - python-test: | ||||
|       - require-full-semver: | ||||
|           filters: | ||||
|             &only-run-on-full-semver-tag-filters | ||||
|             tags: | ||||
|               only: /^v\d+\.\d+\.\d+.*$/ | ||||
|             branches: | ||||
|               ignore: /^.*$/ | ||||
|  | ||||
|       - aur-test: | ||||
|           &only-publish-for-full-semver | ||||
|           filters: *only-run-on-full-semver-tag-filters | ||||
|           requires: | ||||
|             - require-full-semver | ||||
|       - aur-publish: | ||||
|           # | ||||
|           # there's a crazy-low-chance race-condition between this job and the GH Action '../.github/workflows/automatic-release.yaml' | ||||
|           #   - automatic-release creates the release artifact, but takes no more than 15-30 seconds (current avg:16s max:26s) | ||||
|           #   - this publish step requires the release artifact, but waits for all language-repository publishes to complete first (a few minutes at least) | ||||
|           # | ||||
|           # if something goes wrong, this step can be safely rerun after fixing the release artifact :) | ||||
|           # | ||||
|           filters: *only-run-on-full-semver-tag-filters | ||||
|           context: [aur-yage] | ||||
|           requires: | ||||
|             - aur-test | ||||
|             - python-publish | ||||
|             - nodejs-publish | ||||
|  | ||||
|       - python-test: *only-publish-for-full-semver | ||||
|       - python-publish: | ||||
|           requires: [python-test] | ||||
|           filters: *only-run-on-full-semver-tag-filters | ||||
|           context: [pypi-yage] | ||||
|           filters: | ||||
|             tags: | ||||
|               only: /^v\d+\.\d+\.\d+.*$/ | ||||
|             branches: | ||||
|               ignore: /^.*$/ | ||||
|           requires: | ||||
|             - python-test | ||||
|  | ||||
|   nodejs-dev: | ||||
|     jobs: | ||||
|       - nodejs-test: | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: /^main$/ | ||||
|  | ||||
|   nodejs: | ||||
|     jobs: | ||||
|       - nodejs-test: | ||||
|           filters: | ||||
|             tags: | ||||
|               only: /^v\d+\.\d+\.\d+.*$/ | ||||
|             branches: | ||||
|               ignore: /^.*$/ | ||||
|       - nodejs-test: *only-publish-for-full-semver | ||||
|       - nodejs-publish: | ||||
|           requires: [nodejs-test] | ||||
|           filters: *only-run-on-full-semver-tag-filters | ||||
|           context: [npm-wrynegade] | ||||
|           filters: | ||||
|             tags: | ||||
|               only: /^v\d+\.\d+\.\d+.*$/ | ||||
|             branches: | ||||
|               ignore: /^.*$/ | ||||
|           requires: | ||||
|             - nodejs-test | ||||
|   | ||||
| @@ -171,7 +171,7 @@ _SCWRYPTS_KUBECTL_DRIVER() { | ||||
| 
 | ||||
| 			[ $NAMESPACE ] && CLI_ARGS+=(--namespace $NAMESPACE) | ||||
| 			[[ $VERBOSE -eq 1 ]] && { | ||||
| 				INFO " | ||||
| 				REMINDER " | ||||
| 					context '$CONTEXT' | ||||
| 					namespace '$NAMESPACE' | ||||
| 					environment '$SCWRYPTS_ENV' | ||||
| @@ -180,7 +180,7 @@ _SCWRYPTS_KUBECTL_DRIVER() { | ||||
| 				STATUS "running $CLI ${CLI_ARGS[@]} ${USER_ARGS[@]}" | ||||
| 			} || { | ||||
| 				[[ $(_SCWRYPTS_KUBECTL_SETTINGS get context) =~ ^show$ ]] && { | ||||
| 					INFO "$SCWRYPTS_ENV.$SUBSESSION : $CLI ${CLI_ARGS[@]} ${USER_ARGS[@]}" | ||||
| 					REMINDER "$SCWRYPTS_ENV.$SUBSESSION : $CLI ${CLI_ARGS[@]} ${USER_ARGS[@]}" | ||||
| 				} | ||||
| 			} | ||||
| 			$CLI ${CLI_ARGS[@]} ${USER_ARGS[@]} | ||||
|   | ||||
| @@ -112,8 +112,8 @@ KUBECTL__SERVE() { | ||||
| 	SERVICE_PASSWORD="$(KUBECTL__GET_SERVICE_PASSWORD)" | ||||
| 	KUBECTL__SERVICE_PARSE | ||||
| 
 | ||||
| 	INFO "attempting to serve ${NAMESPACE}/${SERVICE_NAME}:${SERVICE_PORT}" | ||||
| 	[ $SERVICE_PASSWORD ] && INFO "password : $SERVICE_PASSWORD" | ||||
| 	REMINDER "attempting to serve ${NAMESPACE}/${SERVICE_NAME}:${SERVICE_PORT}" | ||||
| 	[ $SERVICE_PASSWORD ] && REMINDER "password : $SERVICE_PASSWORD" | ||||
| 
 | ||||
| 	KUBECTL port-forward service/$SERVICE_NAME $SERVICE_PORT | ||||
| } | ||||
|   | ||||
							
								
								
									
										113
									
								
								scwrypts
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								scwrypts
									
									
									
									
									
								
							| @@ -1,12 +1,17 @@ | ||||
| #!/bin/zsh | ||||
|  | ||||
| export EXECUTION_DIR=$(pwd) | ||||
| source "$(dirname $(readlink -f "$0"))/zsh/lib/import.driver.zsh" || exit 42 | ||||
|  | ||||
| ##################################################################### | ||||
| () { | ||||
| 	cd "$SCWRYPTS_ROOT__scwrypts" | ||||
| 	GIT_SCWRYPTS() { git -C "$SCWRYPTS_ROOT__scwrypts" $@; } | ||||
|  | ||||
| 	local INSTALLATION_TYPE | ||||
| 	[ ! -d "$SCWRYPTS_ROOT__scwrypts/.git" ] && [ ! -f "$SCWRYPTS_ROOT__scwrypts/.git" ] \ | ||||
| 		&& INSTALLATION_TYPE=$(cat "$SCWRYPTS_ROOT__scwrypts/MANAGED_BY" 2>/dev/null) \ | ||||
| 		|| INSTALLATION_TYPE=manual \ | ||||
| 		; | ||||
|  | ||||
| 	local ERRORS=0 | ||||
| 	local USAGE=' | ||||
| 		usage: scwrypts [...options...] [...patterns...] -- [...script options...] | ||||
| @@ -22,10 +27,10 @@ source "$(dirname $(readlink -f "$0"))/zsh/lib/import.driver.zsh" || exit 42 | ||||
| 		    -y, --yes              auto-accept all [yn] prompts through current scwrypt | ||||
| 		    -e, --env <env-name>   set environment; overwrites SCWRYPTS_ENV | ||||
| 		    -n                     shorthand for "--log-level 0" | ||||
| 		    -v, --log-level [0-4]  set scwrypts log level to one of the following: | ||||
| 		    -v, --log-level [0-4]  set incremental scwrypts log level to one of the following: | ||||
| 			                         0 : only command output and critical failures; skips logfile | ||||
| 			                         1 : add success / failure messages | ||||
| 									 2 : include status update messages | ||||
| 			                         1 : include success / failure messages | ||||
| 			                         2 : include status update messages | ||||
| 									 3 : (default) include warning messages | ||||
| 			                         4 : include debug messages | ||||
|  | ||||
| @@ -81,30 +86,51 @@ source "$(dirname $(readlink -f "$0"))/zsh/lib/import.driver.zsh" || exit 42 | ||||
| 				;; | ||||
|  | ||||
| 			--version ) | ||||
| 				echo scwrypts $(GIT_SCWRYPTS describe --tags) | ||||
| 				case $INSTALLATION_TYPE in | ||||
| 					manual ) echo "scwrypts $(GIT_SCWRYPTS describe --tags) (via GIT)" ;; | ||||
| 					     * ) echo scwrypts $(cat "$SCWRYPTS_ROOT__scwrypts/VERSION")   ;; | ||||
| 				esac | ||||
| 				return 0 | ||||
| 				;; | ||||
|  | ||||
| 			--update ) | ||||
| 				GIT_SCWRYPTS fetch --quiet origin main | ||||
| 				GIT_SCWRYPTS fetch --quiet origin main --tags | ||||
| 				local SYNC_STATUS=$? | ||||
| 				case $INSTALLATION_TYPE in | ||||
| 					aur ) | ||||
| 						SCWRYPTS_LOG_LEVEL=3 REMINDER "  | ||||
| 							This installation is built from the AUR. Update through 'makepkg' or use | ||||
| 							your preferred AUR package management tool (e.g. 'yay -Syu scwrypts') | ||||
| 							 " | ||||
| 						;; | ||||
|  | ||||
| 				GIT_SCWRYPTS diff --exit-code origin/main -- . >/dev/null 2>&1 | ||||
| 				local DIFF_STATUS=$? | ||||
| 					manual ) | ||||
| 						GIT_SCWRYPTS fetch --quiet origin main | ||||
| 						GIT_SCWRYPTS fetch --quiet origin main --tags | ||||
| 						local SYNC_STATUS=$? | ||||
|  | ||||
| 				[[ $SYNC_STATUS -eq 0 ]] && [[ $DIFF_STATUS -eq 0 ]] && { | ||||
| 					SUCCESS 'already up-to-date with origin/main' | ||||
| 				} || { | ||||
| 					GIT_SCWRYPTS rebase --autostash origin/main \ | ||||
| 						&& SUCCESS 'up-to-date with origin/main' \ | ||||
| 						&& GIT_SCWRYPTS log -n1 \ | ||||
| 						|| { | ||||
| 							GIT_SCWRYPTS rebase --abort | ||||
| 							ERROR 'unable to update scwrypts; please try manual upgrade' | ||||
| 							REMINDER "installation in '$(pwd)'" | ||||
| 						GIT_SCWRYPTS diff --exit-code origin/main -- . >/dev/null 2>&1 | ||||
| 						local DIFF_STATUS=$? | ||||
|  | ||||
| 						[[ $SYNC_STATUS -eq 0 ]] && [[ $DIFF_STATUS -eq 0 ]] && { | ||||
| 							SUCCESS 'already up-to-date with origin/main' | ||||
| 						} || { | ||||
| 							GIT_SCWRYPTS rebase --autostash origin/main \ | ||||
| 								&& SUCCESS 'up-to-date with origin/main' \ | ||||
| 								&& GIT_SCWRYPTS log -n1 \ | ||||
| 								|| { | ||||
| 									GIT_SCWRYPTS rebase --abort | ||||
| 									ERROR 'unable to update scwrypts; please try manual upgrade' | ||||
| 									REMINDER "installation in '$SCWRYPTS_ROOT__scwrypts'" | ||||
| 								} | ||||
| 						} | ||||
| 				} | ||||
| 						;; | ||||
|  | ||||
| 					* ) | ||||
| 						SCWRYPTS_LOG_LEVEL=3 REMINDER "  | ||||
| 							This is a managed installation of scwrypts. Please update through your | ||||
| 							system package manager. | ||||
| 							 " | ||||
| 						;; | ||||
| 				esac | ||||
| 				return 0 | ||||
| 				;; | ||||
|  | ||||
| @@ -292,30 +318,32 @@ source "$(dirname $(readlink -f "$0"))/zsh/lib/import.driver.zsh" || exit 42 | ||||
|  | ||||
| 	[ ! $SUBSCWRYPT ] && export SUBSCWRYPT=0 | ||||
|  | ||||
| 	[[ $SUBSCWRYPT -eq 0 ]] && [[ $ENV_NAME =~ prod ]] && [[ $SCWRYPTS_LOG_LEVEL -gt 0 ]] && { | ||||
| 		STATUS "on '$ENV_NAME'; checking diff against origin/main" | ||||
| 	[[ $INSTALLATION_TYPE =~ ^manual$ ]] && { | ||||
| 		[[ $SUBSCWRYPT -eq 0 ]] && [[ $ENV_NAME =~ prod ]] && [[ $SCWRYPTS_LOG_LEVEL -gt 0 ]] && { | ||||
| 			STATUS "on '$ENV_NAME'; checking diff against origin/main" | ||||
|  | ||||
| 		local WARNING_MESSAGE | ||||
| 			local WARNING_MESSAGE | ||||
|  | ||||
| 		[ ! $WARNING_MESSAGE ] && { | ||||
| 			GIT_SCWRYPTS fetch --quiet origin main \ | ||||
| 				|| WARNING_MESSAGE='I am unable to verify your scwrypts version' | ||||
| 		} | ||||
| 			[ ! $WARNING_MESSAGE ] && { | ||||
| 				GIT_SCWRYPTS fetch --quiet origin main \ | ||||
| 					|| WARNING_MESSAGE='I am unable to verify your scwrypts version' | ||||
| 			} | ||||
|  | ||||
| 		[ ! $WARNING_MESSAGE ] && { | ||||
| 			GIT_SCWRYPTS diff --exit-code origin/main -- . >/dev/null 2>&1 \ | ||||
| 				|| WARNING_MESSAGE='your scwrypts is currently out-of-date' | ||||
| 		} | ||||
| 			[ ! $WARNING_MESSAGE ] && { | ||||
| 				GIT_SCWRYPTS diff --exit-code origin/main -- . >/dev/null 2>&1 \ | ||||
| 					|| WARNING_MESSAGE='your scwrypts is currently out-of-date' | ||||
| 			} | ||||
|  | ||||
| 		[ $WARNING_MESSAGE ] && { | ||||
| 			[[ $SCWRYPTS_LOG_LEVEL -lt 3 ]] && { | ||||
| 				REMINDER "you are running in ${__BRIGHT_RED}production${__BRIGHT_MAGENTA} and $WARNING_MESSAGE" | ||||
| 			} || { | ||||
| 				GIT_SCWRYPTS diff --exit-code origin/main -- . >&2 | ||||
| 				WARNING "you are trying to run in ${__BRIGHT_RED}production${__YELLOW} but $WARNING_MESSAGE (relevant diffs and errors above)" | ||||
| 				yN 'continue?' || { | ||||
| 					REMINDER "you can use 'scwrypts --update' to quickly update scwrypts to latest" | ||||
| 					ABORT | ||||
| 			[ $WARNING_MESSAGE ] && { | ||||
| 				[[ $SCWRYPTS_LOG_LEVEL -lt 3 ]] && { | ||||
| 					REMINDER "you are running in ${__BRIGHT_RED}production${__BRIGHT_MAGENTA} and $WARNING_MESSAGE" | ||||
| 				} || { | ||||
| 					GIT_SCWRYPTS diff --exit-code origin/main -- . >&2 | ||||
| 					WARNING "you are trying to run in ${__BRIGHT_RED}production${__YELLOW} but $WARNING_MESSAGE (relevant diffs and errors above)" | ||||
| 					yN 'continue?' || { | ||||
| 						REMINDER "you can use 'scwrypts --update' to quickly update scwrypts to latest" | ||||
| 						ABORT | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| @@ -368,6 +396,7 @@ source "$(dirname $(readlink -f "$0"))/zsh/lib/import.driver.zsh" || exit 42 | ||||
| 	##################################################################### | ||||
| 	### run the scwrypt ################################################# | ||||
| 	##################################################################### | ||||
|  | ||||
| 	set -o pipefail | ||||
| 	{ | ||||
| 		[ $HEADER ] && echo $HEADER | ||||
|   | ||||
| @@ -1,8 +1,16 @@ | ||||
| ##################################################################### | ||||
| 
 | ||||
| command -v scwrypts &>/dev/null || { | ||||
| 	echo 'scwrypts is required in your PATH in order to use the zsh plugins; skipping' >&2 | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| NO_EXPORT_CONFIG=1 source "${0:a:h}/zsh/lib/import.driver.zsh" || return 42 | ||||
| 
 | ||||
| ##################################################################### | ||||
| 
 | ||||
| SCWRYPTS__ZSH_PLUGIN() { | ||||
| 	local SCWRYPT_SELECTION=$(SCWRYPTS__GET_AVAILABLE_SCWRYPTS | FZF 'select a script' --header-lines 1) | ||||
| 	local SCWRYPT_SELECTION=$(scwrypts --list | FZF 'select a script' --header-lines 1) | ||||
| 	local NAME | ||||
| 	local TYPE | ||||
| 	local GROUP | ||||
| @@ -22,8 +30,10 @@ zle -N scwrypts SCWRYPTS__ZSH_PLUGIN | ||||
| bindkey $SCWRYPTS_SHORTCUT scwrypts | ||||
| 
 | ||||
| ##################################################################### | ||||
| 
 | ||||
| SCWRYPTS__ZSH_BUILDER_PLUGIN() { | ||||
| 	local SCWRYPT_SELECTION=$(SCWRYPTS__GET_AVAILABLE_SCWRYPTS | FZF 'select a script' --header-lines 1) | ||||
| 	local SCWRYPT_SELECTION=$(scwrypts --list  | FZF 'select a script' --header-lines 1) | ||||
| 	echo $SCWRYPT_SELECTION >&2 | ||||
| 	local NAME | ||||
| 	local TYPE | ||||
| 	local GROUP | ||||
| @@ -32,7 +42,7 @@ SCWRYPTS__ZSH_BUILDER_PLUGIN() { | ||||
| 
 | ||||
| 	SCWRYPTS__SEPARATE_SCWRYPT_SELECTION $SCWRYPT_SELECTION | ||||
| 
 | ||||
| 	scwrypts --name $NAME --group $GROUP --type $TYPE -- --help >&2 || { | ||||
| 	scwrypts -n --name $NAME --group $GROUP --type $TYPE -- --help >&2 || { | ||||
| 		zle accept-line | ||||
| 		return 0 | ||||
| 	} | ||||
| @@ -49,6 +59,7 @@ zle -N scwrypts-builder SCWRYPTS__ZSH_BUILDER_PLUGIN | ||||
| bindkey $SCWRYPTS_BUILDER_SHORTCUT scwrypts-builder | ||||
| 
 | ||||
| ##################################################################### | ||||
| 
 | ||||
| SCWRYPTS__ZSH_PLUGIN_ENV() { | ||||
| 	local RESET='reset' | ||||
| 	local SELECTED=$(\ | ||||
|   | ||||
| @@ -28,7 +28,7 @@ EKS() { | ||||
| 	local CONTEXT="arn:aws:eks:${AWS_REGION}:${AWS_ACCOUNT}:cluster/${CLUSTER_NAME}" | ||||
| 
 | ||||
| 	kubectl config get-contexts | grep -q $CONTEXT \ | ||||
| 		|| EKS__CLUSTER_LOGIN -c $CLUSTER_NAME | ||||
| 		|| EKS__CLUSTER_LOGIN -c $CLUSTER_NAME >/dev/null | ||||
| 
 | ||||
| 	local CONTEXT_ARGS=() | ||||
| 	case $1 in | ||||
|   | ||||
| @@ -7,6 +7,8 @@ | ||||
| [ ! $SCWRYPTS_ROOT ] && [ -d /usr/share/scwrypts ] \ | ||||
| 	&& SCWRYPTS_ROOT=/usr/share/scwrypts | ||||
| 
 | ||||
| export SCWRYPTS_ROOT__scwrypts="$SCWRYPTS_ROOT" | ||||
| 
 | ||||
| ##################################################################### | ||||
| 
 | ||||
| DEFAULT_CONFIG="$SCWRYPTS_ROOT/zsh/lib/config.user.zsh" | ||||
| @@ -35,8 +37,7 @@ export \ | ||||
| 	SCWRYPTS_OUTPUT_PATH \ | ||||
| 	; | ||||
| 
 | ||||
| SCWRYPTS_GROUPS+=(scwrypts) # 'scwrypts' group is required! | ||||
| SCWRYPTS_GROUPS=($(echo $SCWRYPTS_GROUPS | sed 's/\s\+/\n/g' | sort -u)) | ||||
| SCWRYPTS_GROUPS=(scwrypts $(echo $SCWRYPTS_GROUPS | sed 's/\s\+/\n/g' | sort -u)) | ||||
| 
 | ||||
| source "$SCWRYPTS_ROOT/zsh/lib/config.group.zsh" \ | ||||
| 	|| FAIL 69 'failed to set up scwrypts group; aborting' | ||||
|   | ||||
| @@ -119,6 +119,27 @@ SCWRYPTS__GET_RUNSTRING__zsh() { | ||||
| 		|| SCWRYPT_FILENAME="$GROUP_PATH/$SCWRYPT_TYPE/$SCWRYPT_NAME" \ | ||||
| 		; | ||||
| 
 | ||||
| 	SCWRYPTS__GET_RUNSTRING__zsh__generic "$SCWRYPT_FILENAME" | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| SCWRYPTS__GET_RUNSTRING__zsh__generic() { | ||||
| 	# boilerplate to allow | ||||
| 	#    - multiflag splitting (e.g. -abc = -a -b -c) | ||||
| 	#    - help flag injection (e.g. -h | --help) | ||||
| 	#    - default USAGE definition (allows USAGE__options style usage definition) | ||||
| 	#    - required MAIN() function wrapping | ||||
| 	# | ||||
| 	# this is available automatically in SCWRYPTS_GROUP declaration contexts | ||||
| 	# (e.g. my-group.scwrypts.zsh) | ||||
| 	local ZSH_FILENAME="$1" | ||||
| 	[ $ZSH_FILENAME ] || { | ||||
| 		ERROR ' | ||||
| 			to use SCWRYPTS__GET_RUNSTRING__zsh__generic, you must provide a | ||||
| 			ZSH_FILENAME (arg $1) where the MAIN function is defined | ||||
| 			' | ||||
| 		return 1 | ||||
| 	} | ||||
| 	printf " | ||||
| 		source '$SCWRYPT_FILENAME' | ||||
| 		CHECK_ENVIRONMENT | ||||
| @@ -154,22 +175,6 @@ SCWRYPTS__GET_RUNSTRING__zsh() { | ||||
| 			done | ||||
| 			MAIN \${MAIN_ARGS[@]} | ||||
| 		} " | ||||
| 
 | ||||
| 
 | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| SCWRYPTS__GET_RUNSTRING__zsh_v3() { | ||||
| 	WARNING "scwrypts zsh/v3 runstrings are now deprecated; please update to scwrypts v4 format" | ||||
| 
 | ||||
| 	__CHECK_DEPENDENCY zsh || return 1 | ||||
| 
 | ||||
| 	[ $(eval echo '$SCWRYPTS_TYPE__'$SCWRYPT_GROUP) ] \ | ||||
| 		&& echo "source $GROUP_PATH/$SCWRYPT_NAME" \ | ||||
| 		|| echo "source $GROUP_PATH/$SCWRYPT_TYPE/$SCWRYPT_NAME" \ | ||||
| 		; | ||||
| 
 | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| SCWRYPTS__GET_RUNSTRING__py() { | ||||
|   | ||||
| @@ -40,18 +40,3 @@ FZF_USER_INPUT() { # allow user to type custom answers; reconfirm if ambiguous w | ||||
| 	echo $FZF_OUTPUT | ||||
| 	[ $FZF_OUTPUT ] | ||||
| } | ||||
| 
 | ||||
| ##################################################################### | ||||
| ### vvv DEPRECATED vvv ############################################## | ||||
| ##################################################################### | ||||
| 
 | ||||
| FZF_HEAD() {  # prefer user input over selected | ||||
| 	WARNING 'FZF_HEAD is deprecated and will be unavailable in v4.2; please switch to FZF_USER_INPUT (drop-in fix!)' | ||||
| 	FZF $@ --print-query | sed '/^$/d' | head -n1; | ||||
| } | ||||
| FZF_TAIL() {  # prefer selected over user input | ||||
| 	WARNING 'FZF_TAIL is deprecated and will be unavailable in v4.2; please switch to FZF_USER_INPUT (drop-in fix!)' | ||||
| 	FZF $@ --print-query | sed '/^$/d' | tail -n1; | ||||
| } | ||||
| 
 | ||||
| ##################################################################### | ||||
|   | ||||
		Reference in New Issue
	
	Block a user