KeiSeiKit-1.0/tests/fixtures/gdrive_import/mock-rclone
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

120 lines
3.4 KiB
Bash
Executable file

#!/usr/bin/env bash
# mock-rclone — PATH-override stub for kei-gdrive-import integration tests.
# Maps a synthetic remote spec ("mockdrive:sub/path") onto $MOCK_RCLONE_FIXTURE_ROOT.
# Implements: listremotes, about, lsf, lsjson, copy. Other verbs → silent ok.
set -u
ROOT="${MOCK_RCLONE_FIXTURE_ROOT:-/tmp/mock-rclone-empty}"
# Drop a leading "--config <file>" pair if present.
if [ "${1:-}" = "--config" ]; then
shift; shift 2>/dev/null || true
fi
cmd="${1:-}"
shift 2>/dev/null || true
# remote_to_local SPEC — print local FS path under ROOT for "remote:sub" specs.
remote_to_local() {
case "${1:-}" in
'') printf '' ;;
*:*) printf '%s/%s' "$ROOT" "${1#*:}" ;;
*) printf '%s' "$1" ;;
esac
}
# parse_spec FLAG_VAR ARGS... — collect first non-flag arg into $SPEC; sets
# DIRS_ONLY, INCLUDE as side effects (declared by caller).
parse_lsf_args() {
SPEC=""; DIRS_ONLY=0; INCLUDE=""
while [ "$#" -gt 0 ]; do
case "$1" in
--dirs-only) DIRS_ONLY=1; shift ;;
--include) INCLUDE="${2:-}"; shift 2 ;;
--max-depth) shift 2 ;;
-R|--recursive) shift ;;
--*) shift ;;
*) [ -z "$SPEC" ] && SPEC="$1"; shift ;;
esac
done
}
emit_lsf_entry() {
local base="$1" is_dir="$2"
if [ "$is_dir" = "1" ]; then
if [ -n "$INCLUDE" ]; then
[ "$INCLUDE" = ".git/" ] && [ "$base" = ".git" ] && printf '%s/\n' "$base"
return 0
fi
printf '%s/\n' "$base"
else
[ "$DIRS_ONLY" = "1" ] && return 0
if [ -n "$INCLUDE" ]; then
case "$base" in $INCLUDE) printf '%s\n' "$base" ;; esac
return 0
fi
printf '%s\n' "$base"
fi
}
run_lsf() {
parse_lsf_args "$@"
local lp; lp="$(remote_to_local "$SPEC")"
[ -d "$lp" ] || return 0
local entry base
for entry in "$lp"/* "$lp"/.[!.]*; do
[ -e "$entry" ] || continue
base="$(basename "$entry")"
if [ -d "$entry" ]; then emit_lsf_entry "$base" 1
else emit_lsf_entry "$base" 0; fi
done
}
run_lsjson() {
parse_lsf_args "$@"
local lp; lp="$(remote_to_local "$SPEC")"
printf '['
[ -d "$lp" ] && {
local first=1 entry base isd
for entry in "$lp"/*; do
[ -e "$entry" ] || continue
base="$(basename "$entry")"
if [ -d "$entry" ]; then isd=true; else isd=false; fi
[ "$DIRS_ONLY" = "1" ] && [ "$isd" = "false" ] && continue
[ "$first" = "1" ] || printf ','
printf '{"Name":"%s","IsDir":%s}' "$base" "$isd"
first=0
done
}
printf ']\n'
}
# run_copy SRC DST — recursive copy from a remote-spec to local DST.
run_copy() {
local src="${1:-}" dst="${2:-}"
if [ -z "$src" ] || [ -z "$dst" ]; then return 0; fi
local sl; sl="$(remote_to_local "$src")"
[ -d "$sl" ] || return 0
mkdir -p "$dst"
# cp -R "$sl"/. "$dst" — POSIX-portable: copies hidden + visible.
if [ -n "$(ls -A "$sl" 2>/dev/null)" ]; then
cp -R "$sl"/. "$dst" 2>/dev/null || true
fi
}
case "$cmd" in
listremotes)
printf 'mockdrive:\n' ;;
about)
printf 'Total: 100G\nUsed: 1G\nFree: 99G\n' ;;
lsf)
run_lsf "$@" ;;
lsjson)
run_lsjson "$@" ;;
copy)
run_copy "$@" ;;
*)
: ;;
esac
exit 0