]> git.decadent.org.uk Git - dak.git/blob - scripts/debian/byhand-tag
byhand-tag: allow multiline fields
[dak.git] / scripts / debian / byhand-tag
1 #!/bin/sh
2
3 set -u
4 set -e
5
6 export SCRIPTVARS=/srv/ftp-master.debian.org/dak/config/debian/vars
7 . $SCRIPTVARS
8
9 # Tarball to read, compressed with gzip
10 INPUT="${1:?"Usage: $0 filename"}"
11
12 # Regular expression used to validate tag lines
13 CHECKRE='^([a-z0-9A-Z.+-]+[[:space:]]+Tag)?[[:space:]]+[a-z0-9:. ,{}+-]+$'
14
15 # This must end with /
16 TARGET=/srv/ftp-master.debian.org/scripts/external-overrides/
17
18 # Read the main directory from the tarball
19 DIR="`tar ztf \"$INPUT\" | tail -n 1 | cut -d/ -f1`"
20
21 # Create temporary files where to store the validated data
22 umask 002
23 OUTMAIN="`mktemp \"$TARGET\"tag.new.XXXXXX`"
24 OUTCONTRIB="`mktemp \"$TARGET\"tag.contrib.new.XXXXXX`"
25 OUTNONFREE="`mktemp \"$TARGET\"tag.non-free.new.XXXXXX`"
26
27 # If we fail somewhere, cleanup the temporary files
28 cleanup() {
29         rm -f "$OUTMAIN"
30         rm -f "$OUTCONTRIB"
31         rm -f "$OUTNONFREE"
32 }
33 trap cleanup EXIT
34
35 # Extract the data into the temporary files
36 tar -O -zxf "$INPUT" "$DIR"/tag | grep -E "$CHECKRE" > "$OUTMAIN"
37 tar -O -zxf "$INPUT" "$DIR"/tag.contrib | grep -E "$CHECKRE" > "$OUTCONTRIB"
38 tar -O -zxf "$INPUT" "$DIR"/tag.non-free | grep -E "$CHECKRE" > "$OUTNONFREE"
39
40 # Move the data to the final location
41 mv "$OUTMAIN"           "$TARGET"tag
42 mv "$OUTCONTRIB"        "$TARGET"tag.contrib
43 mv "$OUTNONFREE"        "$TARGET"tag.non-free
44
45 chmod 644 "$TARGET"tag "$TARGET"tag.contrib "$TARGET"tag.non-free
46
47 (cd "$TARGET" \
48   && dak external-overrides import unstable main Tag <tag \
49   && dak external-overrides import unstable contrib Tag <tag.contrib \
50   && dak external-overrides import unstable non-free Tag <tag.non-free)
51 dak external-overrides copy unstable testing
52
53 trap - EXIT
54
55 exit 0