blob: 1fe7b78b6c8993853bd3d4897f23894219f343dd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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"
|