#!/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 the first occurrence of i18n and extract raw text only idstr1="$(echo "$line"|grep i18n|sed "s/\$(i18n/@/g"|cut -d@ -f2|cut -d\" -f2| sed 's/").*//')" isdupe=0 # Check it is not dupe if ! chk_dupe "$idstr1"; then # Output line IFS='' echo -e "msgid \""$idstr1"\"\nmsgstr \"\"\n" >> $outpot fi # Look for a second occurrence of i18n and extract raw text only idstr2="$(echo "$line"|grep i18n|sed 's/\$(i18n/@/g'|cut -d@ -f3|cut -d\" -f2| sed 's/").*//')" # Check it exists if [[ ${#idstr2} > 0 ]]; then isdupe=0 # Check it is not dupe if ! chk_dupe "$idstr2"; then # Output line IFS='' echo -e "msgid \""$idstr2"\"\nmsgstr \"\"\n" >> $outpot fi fi 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