scripts : add --outdir option to hf.sh (#6600)

* scripts : add --outdir option to hf.sh

This commit adds an option to the hf.sh script that allows the user to
specify an output directory for the downloaded file.

The motivation for this changes is that examples that use the hf.sh
script to download models from huggingface can now specify the output
directory, perhaps to the `models` directory to keep them in one place
and not clutter the root directory.

Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>

* squash! scripts : add --outdir option to hf.sh

Fix format of the --outdir option in the usage message.

Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>

---------

Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit is contained in:
Daniel Bevenius 2024-04-11 15:22:47 +02:00 committed by GitHub
parent b804b1ef77
commit f4183afe6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,9 +3,9 @@
# Shortcut for downloading HF models # Shortcut for downloading HF models
# #
# Usage: # Usage:
# ./main -m $(./examples/hf.sh https://huggingface.co/TheBloke/Mixtral-8x7B-v0.1-GGUF/resolve/main/mixtral-8x7b-v0.1.Q4_K_M.gguf) # ./main -m $(./scripts/hf.sh https://huggingface.co/TheBloke/Mixtral-8x7B-v0.1-GGUF/resolve/main/mixtral-8x7b-v0.1.Q4_K_M.gguf)
# ./main -m $(./examples/hf.sh --url https://huggingface.co/TheBloke/Mixtral-8x7B-v0.1-GGUF/blob/main/mixtral-8x7b-v0.1.Q4_K_M.gguf) # ./main -m $(./scripts/hf.sh --url https://huggingface.co/TheBloke/Mixtral-8x7B-v0.1-GGUF/blob/main/mixtral-8x7b-v0.1.Q4_K_M.gguf)
# ./main -m $(./examples/hf.sh --repo TheBloke/Mixtral-8x7B-v0.1-GGUF --file mixtral-8x7b-v0.1.Q4_K_M.gguf) # ./main -m $(./scripts/hf.sh --repo TheBloke/Mixtral-8x7B-v0.1-GGUF --file mixtral-8x7b-v0.1.Q4_K_M.gguf)
# #
# all logs go to stderr # all logs go to stderr
@ -14,7 +14,7 @@ function log {
} }
function usage { function usage {
log "Usage: $0 [[--url] <url>] [--repo <repo>] [--file <file>] [-h|--help]" log "Usage: $0 [[--url] <url>] [--repo <repo>] [--file <file>] [--outdir <dir> [-h|--help]"
exit 1 exit 1
} }
@ -26,9 +26,9 @@ function has_cmd {
} }
if has_cmd wget; then if has_cmd wget; then
cmd="wget -q --show-progress -c -O %s %s" cmd="wget -q --show-progress -c -O %s/%s %s"
elif has_cmd curl; then elif has_cmd curl; then
cmd="curl -C - -f -o %s -L %s" cmd="curl -C - -f --output-dir %s -o %s -L %s"
else else
log "[E] curl or wget not found" log "[E] curl or wget not found"
exit 1 exit 1
@ -37,6 +37,7 @@ fi
url="" url=""
repo="" repo=""
file="" file=""
outdir="."
# parse args # parse args
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
@ -53,6 +54,10 @@ while [[ $# -gt 0 ]]; do
file="$2" file="$2"
shift 2 shift 2
;; ;;
--outdir)
outdir="$2"
shift 2
;;
-h|--help) -h|--help)
usage usage
;; ;;
@ -94,10 +99,10 @@ basename=$(basename $url)
log "[+] attempting to download $basename" log "[+] attempting to download $basename"
if [ -n "$cmd" ]; then if [ -n "$cmd" ]; then
cmd=$(printf "$cmd" "$basename" "$url") cmd=$(printf "$cmd" "$outdir" "$basename" "$url")
log "[+] $cmd" log "[+] $cmd"
if $cmd; then if $cmd; then
echo $basename echo $outdir/$basename
exit 0 exit 0
fi fi
fi fi