Improve import script UI, errors (#887)

* Improve import script UI, errors

* Fix jq check

* Add space between ! and which
This commit is contained in:
Riley 2020-07-05 15:01:21 -05:00 committed by GitHub
parent 3e6508f484
commit ce8e22ae3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,16 +1,21 @@
#!/bin/bash #!/bin/bash
set -e set -e
if [[ $(id -u) != 0 ]]; then if [[ $(id -u) != 0 ]]; then
echo "This migration needs to be run as root" echo "This migration needs to be run as root"
exit exit
fi fi
if [[ ! -f docker-compose.yml ]]; then if [[ ! -f docker-compose.yml ]]; then
echo "No docker-compose.yml found in current directory. Is this the right folder?" echo "No docker-compose.yml found in current directory. Is this the right folder?"
exit exit
fi fi
if ! which jq > /dev/null; then
echo "jq must be installed to run this migration. On ubuntu systems, try 'sudo apt-get install jq'"
exit
fi
# Fixing pictrs permissions # Fixing pictrs permissions
mkdir -p volumes/pictrs mkdir -p volumes/pictrs
sudo chown -R 991:991 volumes/pictrs sudo chown -R 991:991 volumes/pictrs
@ -26,6 +31,8 @@ fi
# echo "Stopping Lemmy so that users dont upload new images during the migration" # echo "Stopping Lemmy so that users dont upload new images during the migration"
# docker-compose stop lemmy # docker-compose stop lemmy
CRASHED_ON=()
pushd volumes/pictshare/ pushd volumes/pictshare/
echo "Importing pictshare images to pict-rs..." echo "Importing pictshare images to pict-rs..."
IMAGE_NAMES=* IMAGE_NAMES=*
@ -34,11 +41,36 @@ for image in $IMAGE_NAMES; do
if [[ ! -f $IMAGE_PATH ]]; then if [[ ! -f $IMAGE_PATH ]]; then
continue continue
fi fi
echo -e "\nImporting $IMAGE_PATH" res=$(curl -s -F "images[]=@$IMAGE_PATH" http://127.0.0.1:8537/import | jq .msg)
ret=0 if [ "${res}" == "" ]; then
curl --silent --fail -F "images[]=@$IMAGE_PATH" http://127.0.0.1:8537/import || ret=$? echo -n "C" >&2
if [[ $ret != 0 ]]; then echo ""
echo "Error for $IMAGE_PATH : $ret" CRASHED_ON+=("${IMAGE_PATH}")
echo "Failed to import $IMAGE_PATH with no error message"
echo " assuming crash, sleeping"
sleep 10
continue
fi
if [ "${res}" != "\"ok\"" ]; then
echo -n "F" >&2
echo ""
echo "Failed to import $IMAGE_PATH"
echo " Reason: ${res}"
else
echo -n "." >&2
fi
done
for image in ${CRASHED_ON[@]}; do
echo "Retrying ${image}"
res=$(curl -s -F "images[]=@$IMAGE_PATH" http://127.0.0.1:8537/import | jq .msg)
if [ "${res}" != "\"ok\"" ]; then
echo -n "F" >&2
echo ""
echo "Failed to upload ${image} on 2nd attempt"
echo " Reason: ${res}"
else
echo -n "." >&2
fi fi
done done