diff options
Diffstat (limited to 'platform/bin/contents_compile.sh')
-rwxr-xr-x | platform/bin/contents_compile.sh | 345 |
1 files changed, 345 insertions, 0 deletions
diff --git a/platform/bin/contents_compile.sh b/platform/bin/contents_compile.sh new file mode 100755 index 0000000..e9979f5 --- /dev/null +++ b/platform/bin/contents_compile.sh @@ -0,0 +1,345 @@ + #!/usr/bin/env bash +# Contents compilee +# ./contents_compile.sh <collection> <type> +# ./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." |