47 lines
1.6 KiB
Bash
47 lines
1.6 KiB
Bash
#!/bin/bash
|
|
# DYNR Module: Rclone Wizard
|
|
|
|
run_rclone_wizard() {
|
|
BLUE='\033[38;5;45m'; PURPLE='\033[38;5;127m'; GOLD='\033[38;5;178m'; NC='\033[0m'
|
|
HIST_FILE="$HOME/.rclone_dir_history"
|
|
|
|
echo -e "${PURPLE}--- DYNASTY RCLONE WIZARD ---${NC}"
|
|
|
|
# 1. Action Selection
|
|
PS3=$(echo -e "\n${BLUE}Select Stance:${NC} ")
|
|
options=("Copy" "Move" "Quit")
|
|
select opt in "${options[@]}"; do
|
|
case $opt in
|
|
"Copy") ACTION="copy"; break;;
|
|
"Move") ACTION="move"; break;;
|
|
"Quit") return;;
|
|
esac
|
|
done
|
|
|
|
# 2. File Selection (Space-Safe)
|
|
echo -e "\n${BLUE}📜 Gathering archives...${NC}"
|
|
FILES=$(find . -maxdepth 2 -not -path '*/.*' -print0 | fzf --read0 -m --ansi --color="fg:#1fd9f0,hl:#dba608")
|
|
[ -z "$FILES" ] && return
|
|
|
|
# 3. Remote Selection
|
|
REMOTE=$(rclone listremotes | fzf --ansi --header="Select Kingdom (Remote)")
|
|
[ -z "$REMOTE" ] && return
|
|
|
|
# 4. Destination History
|
|
if [ -f "$HIST_FILE" ]; then
|
|
DEST_DIR=$( (echo "--- NEW PATH ---"; cat "$HIST_FILE") | fzf)
|
|
fi
|
|
if [[ "$DEST_DIR" == "--- NEW PATH ---" ]] || [[ -z "$DEST_DIR" ]]; then
|
|
read -p "Enter Target Path: " DEST_DIR
|
|
[ ! -z "$DEST_DIR" ] && echo "$DEST_DIR" >> "$HIST_FILE" && sort -u -o "$HIST_FILE" "$HIST_FILE"
|
|
fi
|
|
|
|
# 5. Execution
|
|
echo "$FILES" | tr '\0' '\n' | while read -r FILE; do
|
|
if [ ! -z "$FILE" ]; then
|
|
echo -e "${BLUE}🐉 Transmitting:${NC} $FILE"
|
|
rclone "$ACTION" -P "$FILE" "$REMOTE$DEST_DIR"
|
|
echo -e "\a"
|
|
fi
|
|
done
|
|
} |