#!/bin/bash # Feeds the upload queue with megawarcs. # (Needs a config.sh in the working directory.) # # ./pack-one # # 1. Grabs an item from PACKING_QUEUE_DIR # 2. Reserves the item by moving the directory to the # PACKER_WORKING_CHUNKS_DIR # 3. Makes a megawarc in the PACKER_WORKING_MEGAWARC_DIR # 4. Removes the source files from the working directory # 5. Moves the megawarc to the UPLOAD_QUEUE_DIR # # The program exits with 1 on any nontransient error. # WORKING_DIR="$( pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" MEGAWARC="${SCRIPT_DIR}/megawarc/megawarc" if [[ ! -x "${MEGAWARC}" ]] then echo "${MEGAWARC} does not exist or is not executable." exit 1 fi source ./config.sh || exit 1 mkdir -p "${PACKER_WORKING_CHUNKS_DIR}" || exit 1 mkdir -p "${PACKER_WORKING_MEGAWARC_DIR}" || exit 1 mkdir -p "${UPLOAD_QUEUE_DIR}" || exit 1 function mayicontinue { echo # echo "May I continue?" # read # echo } # check if the upload queue is empty # if [ "$( ls -A ${UPLOAD_QUEUE_DIR} )" ] # then # echo "Upload queue not empty. Wait." # sleep 30 # exit 0 # fi mayicontinue # try to grab a directory from the packing queue ITEM=none while [[ "${ITEM}" = none ]] do possible_item=$( ls -1 "${PACKING_QUEUE_DIR}/" | grep -E '[0-9]{14}_[a-f0-9]{8}$' | sort | head -n 1 ) if test -n "${possible_item}" then echo "Trying to grab ${possible_item}" if mv "${PACKING_QUEUE_DIR}/${possible_item}" "${PACKER_WORKING_CHUNKS_DIR}/" then ITEM="${possible_item}" else echo "Failed to move ${possible_item}" sleep 5 fi else date echo "No current item found!" sleep 30 exit 0 fi done mayicontinue echo "$( date ): Starting megawarc for item ${ITEM}" >> packer.log # construct a megawarc mkdir -p "${PACKER_WORKING_MEGAWARC_DIR}/${ITEM}" # megawarcs use relative paths cd "${PACKER_WORKING_CHUNKS_DIR}/" "${MEGAWARC}" --verbose pack --server "${ZST_DICTIONARY_API}" "${PACKER_WORKING_MEGAWARC_DIR}/${ITEM}/${FILE_PREFIX}${ITEM}" "${ITEM}" result="${?}" cd "${WORKING_DIR}" if [[ "${result}" -ne 0 ]] then date echo "megawarc exited with ${result} for ${ITEM}" exit 1 fi echo "$( date ): Completed megawarc for item ${ITEM}" >> packer.log mayicontinue # remove files echo "megawarc OK, removing source files" rm -rf "${PACKER_WORKING_CHUNKS_DIR}/${ITEM}" result="${?}" if [[ "${result}" -ne 0 ]] then date echo "rm -rf source files exited with ${result} for ${ITEM}" exit 1 fi echo "add to upload queue" mv "${PACKER_WORKING_MEGAWARC_DIR}/${ITEM}" "${UPLOAD_QUEUE_DIR}/" exit 0