From 3e2d71d7b135cc6980cc10a4108130236734551e Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Fri, 30 Oct 2020 16:04:16 -0700 Subject: Initial version. --- olamic-enqueue | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 olamic-enqueue (limited to 'olamic-enqueue') diff --git a/olamic-enqueue b/olamic-enqueue new file mode 100755 index 0000000..1fe7b78 --- /dev/null +++ b/olamic-enqueue @@ -0,0 +1,50 @@ +#!/bin/bash + +set -eu + +QUEUE_DIR="$1"; shift +GIT_REPO="$1"; shift +GIT_OBJECT="$1"; shift + +VARS=() +VALS=() +while [[ $# != 0 ]]; do + VARSET="$1"; shift + if [[ $VARSET =~ ^([^=]+)=(.*)$ ]]; then + VARS+=("${BASH_REMATCH[1]}") + VALS+=("${BASH_REMATCH[2]}") + else + echo "Usage: $0 queue-dir repo-path git-object [VAR=value ...]" >&2 + exit 1 + fi +done + +TASK_SCRIPT="$(cat)" + +mkdir -p "$QUEUE_DIR" + +cd "$QUEUE_DIR" + +mkdir -p candidates tmp + +TEMP_TASK="$(mktemp tmp/XXXXXXXX)" + +chmod 644 "$TEMP_TASK" + +for i in $(seq 0 $((${#VARS[@]}-1))); do + VAR="${VARS[$i]}" + VAL="${VALS[$i]}" + printf "export %q=%q\n" "$VAR" "$VAL" >> "$TEMP_TASK" +done + +printf "export GIT_REPO=%q\n" "$GIT_REPO" >> "$TEMP_TASK" +printf "export GIT_OBJECT=%q\n" "$GIT_OBJECT" >> "$TEMP_TASK" +printf "export TASK_SCRIPT=%q\n" "$TASK_SCRIPT" >> "$TEMP_TASK" + +UUID="$(uuidgen -r)" + +until mv -n "$TEMP_TASK" candidates/"$UUID"; do + UUID="$(uuidgen -r)" +done + +echo "$UUID" -- cgit v1.2.3