|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #!/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
-
|