]> git.decadent.org.uk Git - dak.git/blobdiff - scripts/debian/byhand-tag
byhand-tag: abort on invalid data
[dak.git] / scripts / debian / byhand-tag
index 3e21f02501fa0bc5a0e28a3d81a4d46322b4f386..47f628de6e2ee74d94658f7f6c67a03053176831 100755 (executable)
@@ -10,7 +10,7 @@ export SCRIPTVARS=/srv/ftp-master.debian.org/dak/config/debian/vars
 INPUT="${1:?"Usage: $0 filename"}"
 
 # Regular expression used to validate tag lines
-CHECKRE='^[a-z0-9A-Z.+-]+[[:space:]]+Tag[[:space:]]+[a-z0-9:. ,{}+-]+$'
+CHECKRE='^([a-z0-9A-Z.+-]+[[:space:]]+Tag)?[[:space:]]+[A-Za-z0-9:. ,{}+-]+$'
 
 # This must end with /
 TARGET=/srv/ftp-master.debian.org/scripts/external-overrides/
@@ -33,9 +33,18 @@ cleanup() {
 trap cleanup EXIT
 
 # Extract the data into the temporary files
-tar -O -zxf "$INPUT" "$DIR"/tag | grep -E "$CHECKRE" > "$OUTMAIN"
-tar -O -zxf "$INPUT" "$DIR"/tag.contrib | grep -E "$CHECKRE" > "$OUTCONTRIB"
-tar -O -zxf "$INPUT" "$DIR"/tag.non-free | grep -E "$CHECKRE" > "$OUTNONFREE"
+tar -O -zxf "$INPUT" "$DIR"/tag > "$OUTMAIN"
+tar -O -zxf "$INPUT" "$DIR"/tag.contrib > "$OUTCONTRIB"
+tar -O -zxf "$INPUT" "$DIR"/tag.non-free > "$OUTNONFREE"
+
+# check temporary files for invalid contents
+status=0
+grep -vq -E "$CHECKRE" "$OUTMAIN" "$OUTCONTRIB" "$OUTNONFREE" || status=$?
+# checking just $? != 0 is not enough. grep can return 2 on other errors.
+if [ $status != 1 ]; then
+        echo "Aborting automatic import (invalid data found)." >&2
+        exit 1
+fi
 
 # Move the data to the final location
 mv "$OUTMAIN"           "$TARGET"tag
@@ -44,7 +53,6 @@ mv "$OUTNONFREE"        "$TARGET"tag.non-free
 
 chmod 644 "$TARGET"tag "$TARGET"tag.contrib "$TARGET"tag.non-free
 
-(cd $TARGET && $scriptsdir/mk-extra-overrides.sh)
 (cd "$TARGET" \
   && dak external-overrides import unstable main Tag <tag \
   && dak external-overrides import unstable contrib Tag <tag.contrib \