66 lines
1.4 KiB
Bash
Executable File
66 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
usage(){
|
||
echo "Usage: $(basename $0) {model file|all|list}"
|
||
exit 1
|
||
}
|
||
|
||
installAll(){
|
||
echo "Installing ALL model files..."
|
||
# Install all the files
|
||
for file in */*; do
|
||
res=$(checkExists $(basename $file))
|
||
if [[ $? -lt 1 ]]; then
|
||
echo "[1;32mInstalling model: $(basename $file)[0m"
|
||
ollama create $(basename ${file}) -f ${file}
|
||
else
|
||
echo "[1;33m$(basename $file) already exists, skipping.[0m"
|
||
fi
|
||
done
|
||
}
|
||
|
||
installFile(){
|
||
res=$(checkExists $(basename $1))
|
||
if [[ $? -lt 1 ]]; then
|
||
if [[ -f $1 ]]; then
|
||
echo "[1;32mInstalling model file: $1[0m"
|
||
ollama create $(basename $1) -f $1
|
||
else
|
||
echo "[1;31mFile $1 not found, aborting![0m"
|
||
fi
|
||
else
|
||
echo "[1;33m$(basename $1) already exists, skipped.[0m"
|
||
fi
|
||
}
|
||
|
||
listFiles(){
|
||
echo "Listing available model files..."
|
||
echo
|
||
[[ $1 ]] && CAT=$1 || CAT="*"
|
||
(echo "[1;37mModel Name Modelfile[0m"
|
||
for file in ${CAT}/*; do
|
||
echo -e "[1;33m$(basename $file)\t[1;32m$file[0m"
|
||
done) | column -t -s ' '
|
||
echo
|
||
echo -e "To install one, run [1;33m$0 [1;32mmodelfile[0m\nTo install all, run [1;33m$0 [1;32mall\n"
|
||
echo "Example; [1;33m$0 [1;32mstartrek/Jean-Luc_Picard[0m"
|
||
echo
|
||
}
|
||
|
||
checkExists(){
|
||
models="$(ollama list|awk '{print $1}'|sed 's/:.*//g'|grep $1)"
|
||
if [[ $models ]]; then
|
||
return 1
|
||
else
|
||
return 0
|
||
fi
|
||
}
|
||
|
||
[[ ${#1} -lt 1 ]] && usage
|
||
|
||
case $1 in
|
||
[aA][lL][lL]) installAll ;;
|
||
[lL][iI][sS][tT]) listFiles $2 ;;
|
||
*) installFile $1 ;;
|
||
esac
|