17_kcontext draft
This commit is contained in:
		@@ -20,6 +20,8 @@ if [ -f "$RBASH_HOME/keystore.secret" ]; then
 | 
				
			|||||||
	_AUTH_SECRET=$( cat "$RBASH_HOME/keystore.secret" )
 | 
						_AUTH_SECRET=$( cat "$RBASH_HOME/keystore.secret" )
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					complete -W "add del get list query update search secret sync" kstore
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function kstore {
 | 
					function kstore {
 | 
				
			||||||
	case $1 in
 | 
						case $1 in
 | 
				
			||||||
		add) shift; kstore-add "$@" ;;
 | 
							add) shift; kstore-add "$@" ;;
 | 
				
			||||||
@@ -260,6 +262,7 @@ function kstore-get {
 | 
				
			|||||||
		$_SQLITE -list "$_AUTH_DB" "SELECT ( data ) FROM store WHERE $_cond;" | kstore-dec
 | 
							$_SQLITE -list "$_AUTH_DB" "SELECT ( data ) FROM store WHERE $_cond;" | kstore-dec
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		echo "\"$1\" not found" >&2
 | 
							echo "\"$1\" not found" >&2
 | 
				
			||||||
 | 
							return 1
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -330,5 +333,5 @@ function kstore-list {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function kstore-query {
 | 
					function kstore-query {
 | 
				
			||||||
	sqlite3 "$_AUTH_DB" "$@"
 | 
						$_SQLITE "$_AUTH_DB" "$@"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										105
									
								
								bash/sources/17_kcontext
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								bash/sources/17_kcontext
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare -f kstore > /dev/null
 | 
				
			||||||
 | 
					if [ $? -ne 0 ]; then
 | 
				
			||||||
 | 
						echo "kcontext depends on kstore"
 | 
				
			||||||
 | 
						return 1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					complete -W "k8s docker s3-arch" kcontext 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function kcontext {
 | 
				
			||||||
 | 
						case $1 in
 | 
				
			||||||
 | 
							k8s) shift; kcontext-k8s "$@" ;;
 | 
				
			||||||
 | 
							docker) shift; kcontext-docker "$@" ;;
 | 
				
			||||||
 | 
							s3-arch) shift; kcontext-s3-arch "$@" ;;
 | 
				
			||||||
 | 
							*)
 | 
				
			||||||
 | 
								__func_help "k8s ..."
 | 
				
			||||||
 | 
								__func_head "s3-arch ..."
 | 
				
			||||||
 | 
								__func_help "docker ..."
 | 
				
			||||||
 | 
								return 1
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
						return $?
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function kcontext-s3-arch {
 | 
				
			||||||
 | 
						local _NAME _CONFIRM _URL _AUTH
 | 
				
			||||||
 | 
						case $1 in
 | 
				
			||||||
 | 
							list)
 | 
				
			||||||
 | 
								kstore query -list "SELECT SUBSTR( prop, 16 ) FROM store WHERE key = 'kcontext' AND prop LIKE 's3-arch.bucket.%'"
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							save)
 | 
				
			||||||
 | 
								_NAME=$2
 | 
				
			||||||
 | 
								if [ -z "$_NAME" ]; then
 | 
				
			||||||
 | 
									echo "Please specify a context name" >&2
 | 
				
			||||||
 | 
									return 1
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								if [ -n "$ARCH_S3_BUCKET_URL" ] && [ -n "$ARCH_S3_AUTH" ]; then
 | 
				
			||||||
 | 
									kstore get "kcontext" "s3-arch.bucket.$_NAME" 2> /dev/null > /dev/null
 | 
				
			||||||
 | 
									if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
										read -p "Replace existing config for \"$_NAME\"? (y/n): " _CONFIRM
 | 
				
			||||||
 | 
										if [ "$_CONFIRM" != "y" ]; then
 | 
				
			||||||
 | 
											return 0
 | 
				
			||||||
 | 
										fi
 | 
				
			||||||
 | 
										kstore update "kcontext" "$ARCH_S3_BUCKET_URL" "s3-arch.bucket.$_NAME"
 | 
				
			||||||
 | 
										kstore update "kcontext" "$ARCH_S3_AUTH" "s3-arch.auth.$_NAME"
 | 
				
			||||||
 | 
										return $?
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
										kstore add "kcontext" "$ARCH_S3_BUCKET_URL" "s3-arch.bucket.$_NAME"
 | 
				
			||||||
 | 
										kstore add "kcontext" "$ARCH_S3_AUTH" "s3-arch.auth.$_NAME"
 | 
				
			||||||
 | 
										return $?
 | 
				
			||||||
 | 
									fi
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									echo "No s3-arch settings can be found in env" >&2
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							load)
 | 
				
			||||||
 | 
								_NAME=$2
 | 
				
			||||||
 | 
								if [ -z "$_NAME" ]; then
 | 
				
			||||||
 | 
									echo "Please specify a context name" >&2
 | 
				
			||||||
 | 
									return 1
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								_URL=$( kstore get "kcontext" "s3-arch.bucket.$_NAME" 2> /dev/null )
 | 
				
			||||||
 | 
								if [ $? -ne 0 ]; then
 | 
				
			||||||
 | 
									echo "No such context: $_NAME" >&2
 | 
				
			||||||
 | 
									return 1
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								_AUTH=$( kstore get "kcontext" "s3-arch.auth.$_NAME" 2> /dev/null )
 | 
				
			||||||
 | 
								if [ $? -ne 0 ]; then
 | 
				
			||||||
 | 
									echo "No such context: $_NAME" >&2
 | 
				
			||||||
 | 
									return 1
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								export ARCH_S3_BUCKET_URL=$_URL
 | 
				
			||||||
 | 
								export ARCH_S3_AUTH=$_AUTH
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							del)
 | 
				
			||||||
 | 
								_NAME=$2
 | 
				
			||||||
 | 
								if [ -z "$_NAME" ]; then
 | 
				
			||||||
 | 
									echo "Please specify a context name" >&2
 | 
				
			||||||
 | 
									return 1
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								kstore get "kcontext" "s3-arch.bucket.$_NAME" 2> /dev/null > /dev/null
 | 
				
			||||||
 | 
								if [ $? -eq 0 ]; then
 | 
				
			||||||
 | 
									read -p "Delete context \"$_NAME\"? (y/n): " _CONFIRM
 | 
				
			||||||
 | 
									if [ "$_CONFIRM" != "y" ]; then
 | 
				
			||||||
 | 
										return 0
 | 
				
			||||||
 | 
									fi
 | 
				
			||||||
 | 
									kstore query "DELETE FROM store WHERE key = 'kcontext' AND prop = 's3-arch.bucket.$_NAME'"
 | 
				
			||||||
 | 
									kstore query "DELETE FROM store WHERE key = 'kcontext' AND prop = 's3-arch.auth.$_NAME'"
 | 
				
			||||||
 | 
									return $?
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									echo "No such context: $_NAME" >&2
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							*)
 | 
				
			||||||
 | 
								__func_head "list"
 | 
				
			||||||
 | 
								__func_help "save NAME"
 | 
				
			||||||
 | 
								__func_help "load NAME"
 | 
				
			||||||
 | 
								__func_help "del NAME"
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
						esac
 | 
				
			||||||
 | 
						return 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user