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:
@@ -1,65 +1,42 @@
|
||||
# Execute script from script directory
|
||||
function execute-script
|
||||
# 执行 script 目录下的脚本
|
||||
if not functions -q script-show-catalog
|
||||
source ~/.dotfile/fish/functions/script-catalog.fish
|
||||
end
|
||||
|
||||
set -l dotfile_dir ~/.dotfile
|
||||
set -l script_dir $dotfile_dir/script
|
||||
set -l script_name $argv[1]
|
||||
|
||||
if test -z "$script_name"
|
||||
echo "Error: No script name specified"
|
||||
echo "Usage: execute-script <script_name> [args...]"
|
||||
echo ""
|
||||
echo "Available scripts:"
|
||||
if test -d $script_dir
|
||||
for script in $script_dir/*.sh $script_dir/*.py
|
||||
if test -f $script
|
||||
set -l basename (basename $script)
|
||||
echo " $basename"
|
||||
end
|
||||
end
|
||||
|
||||
# ff script -h / --help / help
|
||||
if test -z "$script_name"; or contains -- $script_name -h --help help
|
||||
if test -z "$script_name"; or test (count $argv) -eq 1
|
||||
script-show-catalog
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
if test -z "$script_name"
|
||||
script-show-catalog
|
||||
return 1
|
||||
end
|
||||
|
||||
# 尝试不同的扩展名
|
||||
set -l script_path ""
|
||||
for ext in sh py
|
||||
set -l test_path $script_dir/$script_name.$ext
|
||||
if test -f $test_path
|
||||
set script_path $test_path
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
# 如果没找到,尝试直接使用提供的名称
|
||||
if test -z "$script_path"
|
||||
set script_path $script_dir/$script_name
|
||||
end
|
||||
|
||||
if test -f $script_path
|
||||
|
||||
set -l script_path (script-resolve-path $script_name 2>/dev/null; or echo "")
|
||||
|
||||
if test -n "$script_path" -a -f "$script_path"
|
||||
echo "Running: $script_path"
|
||||
if test -x $script_path
|
||||
$script_path $argv[2..-1]
|
||||
else if string match -q "*.py" $script_path
|
||||
python3 $script_path $argv[2..-1]
|
||||
else
|
||||
# 根据文件类型选择解释器
|
||||
if string match -q "*.py" $script_path
|
||||
python3 $script_path $argv[2..-1]
|
||||
else
|
||||
bash $script_path $argv[2..-1]
|
||||
end
|
||||
bash $script_path $argv[2..-1]
|
||||
end
|
||||
else
|
||||
echo "Error: Script not found: $script_name"
|
||||
echo "Available scripts:"
|
||||
if test -d $script_dir
|
||||
for script in $script_dir/*.sh $script_dir/*.py
|
||||
if test -f $script
|
||||
set -l basename (basename $script)
|
||||
echo " $basename"
|
||||
end
|
||||
end
|
||||
end
|
||||
return 1
|
||||
return $status
|
||||
end
|
||||
end
|
||||
|
||||
echo "Error: Script not found: $script_name"
|
||||
echo ""
|
||||
script-show-catalog
|
||||
return 1
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user