diff options
| author | Julian Blake Kongslie | 2020-10-30 16:04:16 -0700 |
|---|---|---|
| committer | Julian Blake Kongslie | 2020-10-30 17:33:31 -0700 |
| commit | 3e2d71d7b135cc6980cc10a4108130236734551e (patch) | |
| tree | ec52715eab33236c10f01ab3f47c913f110ec032 /olamic-enqueue | |
| download | olamic-3e2d71d7b135cc6980cc10a4108130236734551e.tar.xz | |
Initial version.release/1
Diffstat (limited to '')
| -rwxr-xr-x | olamic-enqueue | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/olamic-enqueue b/olamic-enqueue new file mode 100755 index 0000000..1fe7b78 --- /dev/null +++ b/olamic-enqueue | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | |||
| 3 | set -eu | ||
| 4 | |||
| 5 | QUEUE_DIR="$1"; shift | ||
| 6 | GIT_REPO="$1"; shift | ||
| 7 | GIT_OBJECT="$1"; shift | ||
| 8 | |||
| 9 | VARS=() | ||
| 10 | VALS=() | ||
| 11 | while [[ $# != 0 ]]; do | ||
| 12 | VARSET="$1"; shift | ||
| 13 | if [[ $VARSET =~ ^([^=]+)=(.*)$ ]]; then | ||
| 14 | VARS+=("${BASH_REMATCH[1]}") | ||
| 15 | VALS+=("${BASH_REMATCH[2]}") | ||
| 16 | else | ||
| 17 | echo "Usage: $0 queue-dir repo-path git-object [VAR=value ...]" >&2 | ||
| 18 | exit 1 | ||
| 19 | fi | ||
| 20 | done | ||
| 21 | |||
| 22 | TASK_SCRIPT="$(cat)" | ||
| 23 | |||
| 24 | mkdir -p "$QUEUE_DIR" | ||
| 25 | |||
| 26 | cd "$QUEUE_DIR" | ||
| 27 | |||
| 28 | mkdir -p candidates tmp | ||
| 29 | |||
| 30 | TEMP_TASK="$(mktemp tmp/XXXXXXXX)" | ||
| 31 | |||
| 32 | chmod 644 "$TEMP_TASK" | ||
| 33 | |||
| 34 | for i in $(seq 0 $((${#VARS[@]}-1))); do | ||
| 35 | VAR="${VARS[$i]}" | ||
| 36 | VAL="${VALS[$i]}" | ||
| 37 | printf "export %q=%q\n" "$VAR" "$VAL" >> "$TEMP_TASK" | ||
| 38 | done | ||
| 39 | |||
| 40 | printf "export GIT_REPO=%q\n" "$GIT_REPO" >> "$TEMP_TASK" | ||
| 41 | printf "export GIT_OBJECT=%q\n" "$GIT_OBJECT" >> "$TEMP_TASK" | ||
| 42 | printf "export TASK_SCRIPT=%q\n" "$TASK_SCRIPT" >> "$TEMP_TASK" | ||
| 43 | |||
| 44 | UUID="$(uuidgen -r)" | ||
| 45 | |||
| 46 | until mv -n "$TEMP_TASK" candidates/"$UUID"; do | ||
| 47 | UUID="$(uuidgen -r)" | ||
| 48 | done | ||
| 49 | |||
| 50 | echo "$UUID" | ||
