#!/bin/sh # # Copyright © 2019 Dr. Tobias Quathamer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Require one argument (the name of the manpage) if [ -z "$1" ]; then echo "Please specify the name of the manpage, e.g. 'arch.1'." >&2 exit 1 fi # Normalize to the basename of the manpage manpage=$(basename $1) potfile=$(find man* -type f -name "$manpage.pot") # If the file exists, create a backup. if [ -f "$potfile" ]; then cp "$potfile" backup.pot fi tmp1=$(mktemp) tmp2=$(mktemp) # Get the current time to ensure that all potfiles # have the exact same date and time of creation in the header. # datetime=$(date --iso-8601=minutes | sed -e "s/T/ /") datetime=$(date "+%Y-%m-%d %H:%M%z") # Find all upstream manpages with a matching name potfiles="" upstream_manpages=$(find ../upstream/*/ -type f -name "$manpage" | LC_ALL=C sort) if [ -z "$upstream_manpages" ]; then echo "The manpage '$manpage' could not be found." >&2 exit 1 fi # Create pot file echo "Generating pot file for manpage '$manpage'" for upstream_manpage in $upstream_manpages; do # Create a template for each distribution distribution=$(echo $upstream_manpage | cut -d/ -f3) potfile=$(mktemp --tmpdir "$distribution.$manpage.XXX.pot") potfiles="$potfiles $potfile" ./generate-template.sh $distribution $manpage > $potfile # Ensure the same timestamp if [ -f "$potfile" ]; then sed -i -e "s/^\"POT-Creation-Date: .*$/\"POT-Creation-Date: $datetime\\\\n\"/" "$potfile" fi done mandir=$(basename $(dirname $upstream_manpage)) # New long extensions are used (e.g. 3type), shorten this to just the number: mandir=$(echo $mandir|cut -c 1-4) # Merge all pot files into one msgcat -o "$mandir/$manpage.pot" $potfiles # Remove random characters from multiple file information # and reformat the comment into something more readable, e.g.: # "#. #-#-#-#-# archlinux.fclose.3.0bX.pot (PACKAGE VERSION) #-#-#-#-#" sed -i -e "s/^#\(\.\?\) #-#-#-#-# \([^.]*\)\.\(.\+\)\.[A-Za-z0-9]\{3\}\.pot/#\1 #-#-#-#-# \2: \3.pot/" "$mandir/$manpage.pot" # Determine if the only change is the "POT-Creation-Date:" header # If so, copy back the backup to revert that change if [ -f "$mandir/$manpage.pot" -a -f "backup.pot" ]; then sed -f remove-potcdate.sed < "backup.pot" > "$tmp1" sed -f remove-potcdate.sed < "$mandir/$manpage.pot" > "$tmp2" if cmp "$tmp1" "$tmp2" >/dev/null 2>&1; then mv "backup.pot" "$mandir/$manpage.pot" fi fi rm -f $tmp1 $tmp2 backup.pot $potfiles