diff options
Diffstat (limited to 'run-tools.sh')
| -rw-r--r-- | run-tools.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/run-tools.sh b/run-tools.sh new file mode 100644 index 0000000..95464a8 --- /dev/null +++ b/run-tools.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +cd "$(dirname "$0")" || exit 1 + +# Collect all available tool names +tools=() + +if [ -d "rola-devtools/scripts" ]; then + for file in rola-devtools/scripts/*.sh; do + if [ -f "$file" ]; then + tools+=("$(basename "$file" .sh)") + fi + done + for file in rola-devtools/scripts/*.py; do + if [ -f "$file" ]; then + tools+=("$(basename "$file" .py)") + fi + done +fi +if [ -d "rola-devtools/src/bin" ]; then + for file in rola-devtools/src/bin/*.rs; do + if [ -f "$file" ]; then + tools+=("$(basename "$file" .rs)") + fi + done +fi + +if [ $# -eq 0 ]; then + echo "Available:" + for i in "${!tools[@]}"; do + printf " [%2d] %s\n" $((i + 1)) "${tools[$i]}" + done + exit 1 +fi + +target_bin="$1" +shift # Remove the first argument (tool name), keep the rest as tool arguments + +# Check if input is a number +if [[ "$target_bin" =~ ^[0-9]+$ ]]; then + idx=$((target_bin - 1)) + if [ "$idx" -ge 0 ] && [ "$idx" -lt "${#tools[@]}" ]; then + target_bin="${tools[$idx]}" + else + echo "Error: invalid number '$target_bin', valid range is 1-${#tools[@]}" + exit 1 + fi +fi + +target_script="rola-devtools/scripts/${target_bin}.sh" +target_python="rola-devtools/scripts/${target_bin}.py" +target_file="rola-devtools/src/bin/${target_bin}.rs" + +if [ -f "$target_script" ]; then + chmod +x "$target_script" + "$target_script" "$@" +elif [ -f "$target_python" ]; then + python "$target_python" "$@" +elif [ -f "$target_file" ]; then + cargo run --manifest-path rola-devtools/Cargo.toml --bin "$target_bin" --quiet -- "$@" +else + echo "Error: target '$target_bin' does not exist" + exit 1 +fi |
