#!/usr/bin/env bash # Contents compilee # ./contents_compile.sh # ./contents_compile.sh illich article start=`date +%s%N` cd `dirname $0` COLLECTION=$1 TYPE=$2 cd ../../content/$COLLECTION/contents/$TYPE AUTHOR=`cat ../../conf/local.php | grep author | cut -d "'" -f4` COPYRIGHT=`cat ../../conf/local.php | grep copyright | cut -d "'" -f4` SITE=`cat ../../conf/local.php | grep title | cut -d "'" -f4` CODENAME=`cat ../../conf/local.php | grep codename | cut -d "'" -f4` UNIVERSE=`cat ../../conf/local.php | grep universe | cut -d "'" -f4` BASEURL=`cat ../../../../platform/www/conf/farm.ini | grep basedomain | cut -d '"' -f 2` echo "#### STARTING TO COMPILE! Collection: $1 Type: $2. Press a key to proceed..." read # Clean previous files rm index* echo "" > index.txt # Define languages to generate LANGS=("en" "es") for lng in ${LANGS[@]}; do echo "Generating files for lang: $lng" echo "" > index.$lng.txt rm -rf ../../data/pages/$lng/$TYPE/* cd ../../data/pages/$lng/$TYPE/ ln -s ../../../../contents/$TYPE/index.$lng.txt index.txt cd $OLDPWD done echo "" > index.es.txt for i in `ls -d */`; do echo "" echo "" echo "" echo "#### PROCESSING: $i" FOLDER=$i YEAR=`echo $i | cut -d '-' -f1` cd $i rm *.md *.pdf *.info LANGORIG=`cat index | grep langorig | cut -d "@" -f 4 | cut -d "_" -f 3` # echo $LANGORIG TITLEORIG=`cat index | grep titleorig | cut -d "_" -f3` # echo $TITLEORIG # echo "************************" # echo "LANGORIG: $LANGORIG" # echo "TYPE: $TYPE" # echo "i: $i" # echo "************************" # echo "************************" # read if [[ -f $LANGORIG.txt ]] then echo "The version in the original language is already processed" for j in `ls *.txt`; do LANG=`echo $j | cut -d '.' -f1` echo "**** $LANG" # Creates the $TYPE directory if [[ ! -d ../../../data/pages/$LANG/$TYPE/$i ]] then echo "Create the $TYPE directory for $i in $LANG" mkdir ../../../data/pages/$LANG/$TYPE/$i fi TAGS=() TAGLIST="" EXTRATAGS="" # Creates the index file echo "Regenerate the index for $i in $LANG" INDEX="../../../data/pages/$LANG/$TYPE/$i/index.txt" TITLE_MD=`head -n1 $LANG.txt` TITLE=`echo $TITLE_MD | sed s/\#\ //` head -n1 $LANG.txt > $INDEX echo "" >> $INDEX TITLELANG=`head -n1 $LANG.txt | sed s/\#\ //` cat index >> $INDEX if [[ -f LANG.notes ]] then cat $LANG.notes >> $INDEX fi if [[ $TYPE != "book" ]] then sed -i "s/\*YEAR\*/$YEAR/g" $INDEX fi if [ $(grep -c "LANG_authors" $INDEX) -eq 1 ] # if grep "LANG_authors" $INDEX then sed -i "s/LANG_authors@#:\*\*/LANG_authors\@\#:\*\* $AUTHOR;/g" $INDEX AUTHORS=`grep "LANG_authors" $INDEX | cut -d '*' -f6 | sed s/\;/\ and/g | sed s/^\ // | sed s/:\ //` else # only main author AUTHORS=$AUTHOR fi if [ $(grep -c "LANG_publicationdate" $INDEX) -eq 1 ] # if grep "LANG_publicationdate" $INDEX then PUBDATE=`grep "LANG_publicationdate" $INDEX | cut -d '*' -f6 | sed s/\;/\ and/g | sed s/^\ //` else # Use year if full date is not defined PUBDATE=$YEAR fi if [[ $TYPE == "book" ]] then YEAR=$PUBDATE fi if grep "LANG_translators" $INDEX then TRANSLATORS=`grep "LANG_translators" $INDEX | cut -d '*' -f6 | sed s/\;/\ and/g | sed s/^\ // | sed s/:\ //` else # no translators TRANSLATORS="" fi KEY=`echo $FOLDER | sed 's/\///'` # http://illich.acerv.uz/en:$TYPE:1900-testing:index URL="https://$CODENAME.$BASEURL/$LANG/$TYPE/$KEY:index" URLDATE=`date +"%Y-%m-%d"` echo "" >> $INDEX echo "@ARTICLE{$UNIVERSE-$CODENAME-$KEY-$LANG, author = {$AUTHORS}, title = {$TITLE}, year = {$YEAR}, date = {$PUBDATE}, origdate = {$PUBDATE}, language = {$LANG}, origlanguage = {$LANGORIG}, translator = {$TRANSLATORS}, url = {$URL}, urldate = {$URLDATE} }" > $LANG.bib echo "Generated $LANG.bib" cat $LANG.bib >> ../index.$LANG.bib echo "" >> ../index.$LANG.bib echo "\`\`\`" >> $INDEX cat $LANG.bib >> $INDEX echo "\`\`\`" >> $INDEX echo "~~NOTOC~~" >> $INDEX echo " * Authors: $AUTHORS * Rights holder: $COPYRIGHT * Original publication: $YEAR * Original language: $LANGORIG * Translator: $TRANSLATORS ----- * URL: $URL * Generated: $URLDATE " > $LANG.md.info LINES=`wc -l $LANG.txt` if [[ $LINES > 2 ]]; then # If the files contains more than one line, we consider the original $TYPE is complete and not pending TAGS=("${TAGS[@]}" available) else TAGS=("${TAGS[@]}" pending) fi for j in "${TAGS[@]}" do if [ -z "$TAGLIST" ] then TAGLIST="$j" else TAGLIST="$TAGLIST $j" fi done # Add tags in the tags file in the object folder if [[ -f tags ]] then EXTRATAGS=`cat tags | awk '{print}' ORS=' '` fi echo "{{tag>$TAGLIST $EXTRATAGS}}" >> $INDEX # Creates the link to the text in the specific language cd ../../../data/pages/$LANG/$TYPE/$i if [[ ! -f text.txt ]] then ln -s ../../../../../contents/$TYPE/$i$LANG.txt text.txt fi if [[ ! -f notes.txt ]] then ln -s ../../../../../contents/$TYPE/$i$LANG.notes notes.txt fi if [[ ! -f index.bib ]] then ln -s ../../../../../contents/$TYPE/$i$LANG.bib index.bib fi cd - if [[ $TITLELANG == $TITLEORIG ]] then echo "* [[$LANG:$TYPE:$FOLDER:index|$YEAR - $TITLELANG]]" >> ../index.$LANG.txt else echo "* [[$LANG:$TYPE:$FOLDER:index|$YEAR - $TITLELANG]] (*$TITLEORIG*)" >> ../index.$LANG.txt fi done #echo "* $YEAR - $TITLEORIG" >> ../index.txt echo "* [[$LANGORIG:$TYPE:$FOLDER:index|$YEAR - $TITLEORIG]]" >> ../index.txt # Creates the $TYPE directory else echo "La version en el idioma original NO esta procesada, entonces marcamos como pendiente y creamos un index" echo "LANGORIG: $LANGORIG" echo "TYPE: $TYPE" echo "i: $i" # read if [[ ! -d ../../../data/pages/$LANGORIG/$TYPE/$i ]] then echo "Create the $TYPE directory for $i in $LANGORIG" mkdir ../../../data/pages/$LANGORIG/$TYPE/$i fi # Creates the index file echo "Creates the index file for $i in $LANGORIG" INDEX="../../../data/pages/$LANGORIG/$TYPE/$i/index.txt" echo $INDEX # TITLEORIG=`cat index | grep titleorig | cut -d "_" -f3` echo "# $TITLEORIG" > $INDEX echo "" >> $INDEX cat index >> $INDEX cat $LANGORIG.notes >> $INDEX echo "" >> $INDEX echo "~~NOTOC~~" >> $INDEX sed -i "s/\*YEAR\*/$YEAR/g" $INDEX sed -i "s/LANG_authors@#:\*\*/LANG_authors\@\#:\*\* $AUTHOR;/g" $INDEX TAGS=("${TAGS[@]}" available) for j in "${TAGS[@]}" do if [ -z "$TAGLIST" ] then TAGLIST="$j" else TAGLIST="$TAGLIST $j" fi done # Add tags in the tags file in the object folder if [[ -f tags ]] then EXTRATAGS=`cat tags | awk '{print}' ORS=' '` fi echo "{{tag>$TAGLIST $EXTRATAGS}}" >> $INDEX echo "* **[[$LANGORIG:$TYPE:$FOLDER:index|$YEAR - $TITLEORIG]]**" >> ../index.txt fi echo "*** I will generate the MD files" ../../../../../platform/bin/doku2md.sh $COLLECTION $TYPE $i echo "*** I will generate the PDF files" # read cp *.md "../../../../../platform/bin/pandoc/$TYPE" cp *.info "../../../../../platform/bin/pandoc/$TYPE" ../../../../../platform/bin/pandoc/$TYPE/run.sh cp ../../../../../platform/bin/pandoc/$TYPE/*.pdf . rm ../../../../../platform/bin/pandoc/$TYPE/*.pdf rm ../../../../../platform/bin/pandoc/$TYPE/*.md cd .. echo "" done echo "Running decades... " IFS=$'\n' case $TYPE in book) for file in `ls index*.txt`; do sort -n -t '|' -k2 -o $file $file sed -i 's/$/\n/' $file done ;; *) for file in `ls index*.txt`; do mv $file $file.old echo "***** $file" for name in `cat $file.old`; do YEAR=`echo $name | cut -d ':' -f 3 | cut -d '-' -f 1` DECADE=${YEAR:0:3} #echo "YEAR: $YEAR" #echo "DECADE: $DECADE" if [[ $DECADE_PRE != $DECADE ]]; then echo "" >> $file echo '### '$DECADE'0' >> $file echo "" >> $file fi echo $name >> $file DECADE_PRE=$DECADE echo "" >> $file done done rm *.old ;; esac end=`date +%s%N` echo "Execution time was `expr $end - $start` nanoseconds."