#!/usr/bin/bash # Create remove-old-kernels.pot from remove-old-kernels bash script # Path to output file outpot=po/remove-old-kernels.pot # Create new output file and add the default header cat pot_header.txt > $outpot # Function to check found strings for duplicates chk_dupe() { # Loop through rawarray to check if msgid already exists (isdupe uses logical 0=true) isdupe=1 for ((y=1;y<$((x+1));y++)); do if [[ "$1" == "${rawarray[$y]}" ]]; then isdupe=0 break fi done # Dupe not found so increment line index and add string to check array ((x++)) rawarray[$x]="$1" return $isdupe } rawarray=(); x=0 ; y=0 # Get raw i18n strings (max two per script line) while IFS='' read -r line; do if echo "$line"|grep -q '(i18n'; then # Look for up to 3 occurrences of "$(i18n" in one script line and extract raw text for each for ((i=2;i<5;i++)); do idstr="$(echo "$line"|grep i18n|sed "s/\$(i18n/@/g"|cut -d@ -f${i}|cut -d\" -f2| sed 's/").*//')" if [[ ${#idstr} > 0 ]]; then isdupe=0 # Check it is not dupe if ! chk_dupe "$idstr"; then # Output line IFS='' echo -e "msgid \""$idstr"\"\nmsgstr \"\"\n" >> $outpot fi else break fi echo $i done else # Skip this script line continue fi done < remove-old-kernels # Add date and time for last pot file change sed -i "s/POT-Creation-Date: /&$(date '+%F %R%z')/" $outpot # Update po files with any string changes from the pot file echo "Updating *.po files with any string changes" pushd po make update-po popd