penguin/utils

my env utils

commit 5cbebc441aa598bbb1ebaa0b24c9e19451e2b996

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-03-15T17:13:03Z
subjectAdde kstore upload
commit 5cbebc441aa598bbb1ebaa0b24c9e19451e2b996
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-03-15T17:13:03Z

    Adde kstore upload
---
 bash/sources/16_keystore | 43 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/bash/sources/16_keystore b/bash/sources/16_keystore
index 15c9b76..17c26ff 100644
--- a/bash/sources/16_keystore
+++ b/bash/sources/16_keystore
@@ -33,9 +33,11 @@ function kstore {
 		update) shift; _kstoreupdate "$@" ;;
 		search) shift; _kstoresearch $@ ;;
 		secret) shift; _kstoresecret $@ ;;
+		upload) shift; _kstoreupload $@ ;;
 		*)
 			__func_head "add [key] [value|file|-] [prop, default: $_KSTORE_DEF_PROP]"
 			__func_help "update [key] [value|file|-] [prop, default: $_KSTORE_DEF_PROP]"
+			__func_help "upload [DIR]"
 			__func_help "get [key] [prop, default: $_KSTORE_DEF_PROP]"
 			__func_help "del [key] [prop, default: $_KSTORE_DEF_PROP]"
 			__func_help "list"
@@ -58,12 +60,15 @@ function _kstore {
 
 	case "$SCOPE" in
 		kstore)
-			COMPREPLY=( $(compgen -W "add del get list query update search secret" -- $CUR) )
+			COMPREPLY=( $(compgen -W "add del get list query update upload search secret" -- $CUR) )
 			return
 			;;
 		get|update)
 			COMPREPLY=( $(compgen -W "$( _kstorequery "SELECT DISTINCT key FROM $_KSTORE_TABLE" )" -- $CUR) )
 			;;
+		upload)
+			COMPREPLY=( $(compgen -f -- "$CUR") )
+			;;
 	esac
 
 	t=${COMP_WORDS[COMP_CWORD-2]}
@@ -283,6 +288,42 @@ function _kstoresecret-change {
 	_AUTH_SECRET=$_NEW_SECRET
 }
 
+function _kstoreupload {
+	if [ -z "$1" ]; then
+		__func_head "[DIR]"
+		return 1
+	fi
+
+	_kstoreinit || return 1
+
+	which arch-upload-aws4 2>&1 > /dev/null
+	if [ $? -ne 0 ]; then
+		_kstoreinit-s3au
+	fi
+
+	local _TARGET _FNAME _TEMP
+
+	_TARGET="$1"
+
+	if [ ! -r "$_TARGET" ]; then
+		echo "\"$_TARGET\" is not readable"
+		return 1
+	fi
+
+	_FNAME=$( basename "$_TARGET" )
+	_TEMP="$( mktemp ).tar.gz"
+
+	tar zcf "$_TEMP" "$_TARGET"
+	_kstoreenc "$_TEMP" > "${_TEMP}.enc"
+
+	echo "Size: $(du -sh "${_TEMP}.enc")"
+
+	arch-upload-aws4 "uploads/$_TARGET.enc" "${_TEMP}.enc"
+
+	rm "${_TEMP}"
+	rm "${_TEMP}.enc"
+}
+
 function _kstoresecret-clear {
 	unset _AUTH_SECRET
 	_kstoresecret-auto del