52 lines
1.2 KiB
Bash
52 lines
1.2 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
mkdir -p models
|
||
|
|
||
|
# download binaries
|
||
|
function process_line {
|
||
|
local url=$1
|
||
|
local checksum=$2
|
||
|
|
||
|
# Get the filename from the URL
|
||
|
local filename=models/$(basename $url)
|
||
|
|
||
|
|
||
|
# If the file exists, compute its checksum
|
||
|
if [ -f $filename ]; then
|
||
|
local existing_checksum=$(shasum -a 256 $filename | cut -d ' ' -f1)
|
||
|
fi
|
||
|
|
||
|
# If the file does not exist, or its checksum does not match, download it
|
||
|
if [ ! -f $filename ] || [ $existing_checksum != $checksum ]; then
|
||
|
echo "downloading $filename..."
|
||
|
|
||
|
# Download the file
|
||
|
curl -L $url -o $filename
|
||
|
|
||
|
# Compute the SHA256 hash of the downloaded file
|
||
|
local computed_checksum=$(shasum -a 256 $filename | cut -d ' ' -f1)
|
||
|
|
||
|
# Verify the checksum
|
||
|
if [ $computed_checksum != $checksum ]; then
|
||
|
echo "Checksum verification failed for $filename"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
while IFS=' ' read -r url checksum
|
||
|
do
|
||
|
process_line $url $checksum
|
||
|
done < "downloads"
|
||
|
|
||
|
# create and publish the models
|
||
|
for file in modelfiles/*; do
|
||
|
if [ -f "$file" ]; then
|
||
|
filename=$(basename "$file")
|
||
|
echo $filename
|
||
|
ollama create "library/${filename}" -f "$file"
|
||
|
ollama push "${filename}"
|
||
|
fi
|
||
|
done
|
||
|
|