#!/bin/sh -eu # Check for mistakes in tarball distribution # Make sure we don't distribute gz files find $1/dist -name '*.gz' -print | tee /dev/stderr | sort | while read file; do echo "Refusing to distribute gzip files" >&2 exit 1 done # Make sure files are patchable find $1/dist -type f | while read file; do # We don't care about these files case $file in *.png|*.svg|*.gif|*.map|*.woff|*.ttf|*.gz| \ *machines/include/logo.js|*machines/include/keysymdef.js) continue ;; esac # The ratio between lines and characters must be below 1:x ratio=100 wc $file | while read lines words bytes rest; do if [ "$lines" -eq 0 ]; then lines=1 fi if [ "$bytes" -eq 0 ]; then bytes=1 fi value=$(expr "$bytes" / "$lines") if [ "$value" -gt "$ratio" ]; then echo "Refusing to distribute unpatchable file: $file (line:byte 1:$value)" >&2 exit 1 fi done done # Make sure all po files are valid find $1/po -name '*.po' -print | while read file; do if ! msgfmt "$file" -o /dev/null; then echo "Refusing to distribute invalid po file: $file" >&2 exit 1 fi done