#!/bin/bash ######################################################################## # 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 . ######################################################################## # Copyright (C) 2013 Mithat Konar # DESTRUCTIVELY convert all svg files in working directory to pdf. # Source file extension is case sensitive! # Requires inkscape, gxmessage|xmessage. EXT=.svg OPTIONS="" SCRIPTNAME="$(basename $0)" if which gxmessage > /dev/null ; then XMESSAGE="gxmessage -title $SCRIPTNAME" YES_BUTTON="GTK_STOCK_YES" NO_BUTTON="GTK_STOCK_NO" else XMESSAGE=xmessage YES_BUTTON="Yes" NO_BUTTON="No" fi # Make list of files to be processed. FILES=$(ls -1 *${EXT} 2>/dev/null) || { $XMESSAGE "Nothing to convert. (No *${EXT} files found.)"; exit 1; } # Get confirmation from user to continue. $XMESSAGE \ -buttons "$NO_BUTTON:1,$YES_BUTTON:0" \ -default "$YES_BUTTON" \ "Desctructively convert the following to PDF? $FILES" || exit 1 # Make a temp file to store batch commands. CMDFILE=$(mktemp) || { $XMESSAGE "Error: Could not create temp file."; exit 1; } # Build up the list of commands in temp file. for file in $FILES do base=$(basename $file ${EXT}) echo "${file} --export-pdf=${base}.pdf" >> $CMDFILE done # Process commands in a batch. $XMESSAGE "Processing files ..." & pid=$! DISPLAY= inkscape ${OPTIONS} --shell < $CMDFILE rm -f $CMDFILE kill $pid # Delete old files. # Since inkscape exits with 0 even with errors, we need to explicitly check # for conversion before deleting originals. rv=0 not_deleted="" for file in $FILES do base=$(basename $file ${EXT}) if [[ -f ${base}.pdf ]]; then rm $file else not_deleted="$not_deleted $file" rv=1 fi done if [[ "x$not_deleted" != "x" ]] ; then $XMESSAGE \ "The following files were not deleted: $not_deleted" fi exit $rv