feat: add script catalog and -h help for all dotfile scripts
Introduce ff script -h with auto descriptions, shared help.sh, and usage flags across script/*.sh. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+46
-20
@@ -1,31 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copy stdin to the system clipboard (macOS / Linux X11 / Linux Wayland).
|
||||
# 将标准输入复制到系统剪贴板(macOS / Linux X11 / Wayland)
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck disable=SC1091
|
||||
source "$SCRIPT_DIR/common/help.sh"
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
用法: clip-copy
|
||||
|
||||
从 stdin 读取内容并写入系统剪贴板。
|
||||
|
||||
支持:
|
||||
macOS: pbcopy
|
||||
Wayland: wl-copy
|
||||
X11: xclip / xsel
|
||||
|
||||
选项:
|
||||
-h, --help 显示此帮助
|
||||
|
||||
示例:
|
||||
echo hello | clip-copy
|
||||
cat file.txt | clip-copy
|
||||
EOF
|
||||
}
|
||||
|
||||
dotfile_help_requested "${1:-}" && dotfile_show_help
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if command -v pbcopy >/dev/null 2>&1; then
|
||||
pbcopy
|
||||
pbcopy
|
||||
elif [ "${XDG_SESSION_TYPE:-}" = wayland ] || [ -n "${WAYLAND_DISPLAY:-}" ]; then
|
||||
if command -v wl-copy >/dev/null 2>&1; then
|
||||
wl-copy --no-newline
|
||||
else
|
||||
echo "clip-copy: wl-copy not found (Wayland session)" >&2
|
||||
exit 1
|
||||
fi
|
||||
if command -v wl-copy >/dev/null 2>&1; then
|
||||
wl-copy --no-newline
|
||||
else
|
||||
echo "clip-copy: wl-copy not found (Wayland session)" >&2
|
||||
exit 1
|
||||
fi
|
||||
elif [ -n "${DISPLAY:-}" ]; then
|
||||
if command -v xclip >/dev/null 2>&1; then
|
||||
xclip -selection clipboard
|
||||
elif command -v xsel >/dev/null 2>&1; then
|
||||
xsel --clipboard --input
|
||||
else
|
||||
echo "clip-copy: xclip or xsel not found (DISPLAY=$DISPLAY)" >&2
|
||||
exit 1
|
||||
fi
|
||||
if command -v xclip >/dev/null 2>&1; then
|
||||
xclip -selection clipboard
|
||||
elif command -v xsel >/dev/null 2>&1; then
|
||||
xsel --clipboard --input
|
||||
else
|
||||
echo "clip-copy: xclip or xsel not found (DISPLAY=$DISPLAY)" >&2
|
||||
exit 1
|
||||
fi
|
||||
elif command -v xclip >/dev/null 2>&1; then
|
||||
xclip -selection clipboard
|
||||
xclip -selection clipboard
|
||||
elif command -v xsel >/dev/null 2>&1; then
|
||||
xsel --clipboard --input
|
||||
xsel --clipboard --input
|
||||
else
|
||||
echo "clip-copy: no clipboard tool (pbcopy / wl-copy / xclip / xsel)" >&2
|
||||
exit 1
|
||||
echo "clip-copy: no clipboard tool (pbcopy / wl-copy / xclip / xsel)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user