7 export SCRIPTVARS=/srv/ftp-master.debian.org/dak/config/debian/vars
10 # Tarball to read, compressed with gzip
11 INPUT="${1:?"Usage: $0 filename"}"
13 # Regular expression used to validate tag lines
14 CHECKRE='^([a-z0-9A-Z.+-]+[[:space:]]+Tag)?[[:space:]]+[A-Za-z0-9:. ,{}+-]+$'
16 # This must end with /
17 TARGET=/srv/ftp-master.debian.org/scripts/external-overrides/
19 # Read the main directory from the tarball
20 DIR="`tar ztf \"$INPUT\" | tail -n 1 | cut -d/ -f1`"
22 # Create temporary files where to store the validated data
24 OUTMAIN="`mktemp \"$TARGET\"tag.new.XXXXXX`"
25 OUTCONTRIB="`mktemp \"$TARGET\"tag.contrib.new.XXXXXX`"
26 OUTNONFREE="`mktemp \"$TARGET\"tag.non-free.new.XXXXXX`"
28 # If we fail somewhere, cleanup the temporary files
36 # Extract the data into the temporary files
37 tar -O -zxf "$INPUT" "$DIR"/tag > "$OUTMAIN"
38 tar -O -zxf "$INPUT" "$DIR"/tag.contrib > "$OUTCONTRIB"
39 tar -O -zxf "$INPUT" "$DIR"/tag.non-free > "$OUTNONFREE"
41 # check temporary files for invalid contents
43 grep -vq -E "$CHECKRE" "$OUTMAIN" "$OUTCONTRIB" "$OUTNONFREE" || status=$?
44 # checking just $? != 0 is not enough. grep can return 2 on other errors.
45 if [ $status != 1 ]; then
46 echo "Aborting automatic import (invalid data found)." >&2
50 # Move the data to the final location
51 mv "$OUTMAIN" "$TARGET"tag
52 mv "$OUTCONTRIB" "$TARGET"tag.contrib
53 mv "$OUTNONFREE" "$TARGET"tag.non-free
55 chmod 644 "$TARGET"tag "$TARGET"tag.contrib "$TARGET"tag.non-free
58 && dak external-overrides import unstable main Tag <tag \
59 && dak external-overrides import unstable contrib Tag <tag.contrib \
60 && dak external-overrides import unstable non-free Tag <tag.non-free)
61 dak external-overrides copy unstable testing