Auto-éditer un wikilivre/Annexer (Version internationalisée)/docu2html.sh

Un livre de Wikilivres.
  • docu2html is administrator command in tests/02-manuels directory. Convert <manual>.1 roff format to <manual>.1.gz, <manual>.html, <manual>.txt
  • copy source <manual>_<lang>.1 to lang directory and compress to man/<lang>/man1/<manual>.1.gz and create html and txt manuals
#!/bin/sh
#H File docu2html.sh
#H Created by JPL
#H
#P Syntax docu2html.sh in the manual creation directory .../tests/02-manuels/docu2html.sh
#P Example : ./doccu2html.sh dans le répertoire de création des manuels .../tests/02-manuels/docu2html.sh
#P ATTENTION éditer les manuels uniquement avec gedit ! ou gmanedit !
#P La commande docu2html nécessite l'installation de man2html-base
#P 'sudo apt install man2html-base'
#P Voir aussi la commande htmlman.sh
#P Depuis le mois de novembre 2021 les répertoires $LANG/doc sont supprimés car
#P ils sont inutiles dans le système linux
#P

VERSION=211123
#O Include install variables
    pwd > pwd.txt
    if cat pwd.txt | grep ~/Annexer
	then Workdir=~/Annexer
	elif cat pwd.txt | grep ~/Add_appendix
    then Workdir=~/Add_appendix
	else echo "Workind directory not found"
	  exit -1
	fi
    rm pwd.txt
#O Download global variables
    source $Workdir/vars/installdir.var
    if test -z $Mandir
	then Mandir=$Installdir/man
	fi
	if test -z $Sbindir
	then Sbindir=$Installdir/sbin
	fi
	if test -z $Testsdir
	then Testsdir=$Workdir/tests
	fi
    echo "Manuals directories = $Mandir"
    echo "Sbindir = $Sbindir"
	echo "Testsdir = $Testsdir"
#O Cd manual tests directory
    cd $Testsdir/02-manuels
#O Print the content of '*.1' files
   if (ls -al *.1)
   then
   echo "*.1 found in $Testsdir/02-manuels"; cp -u *.1 archives/.
   else "*.1 not found, exit -1"
   exit -1
   fi
# rm *.gz
# rm *~
#
# man (1)
#

#O Create lang directories in current directory
   mkdir -p de en es fr fr.UTF-8 ko
   
#O Create sub directories in lang directory
   mkdir -p man1
   mkdir -p de/man1
   mkdir -p en/man1
   mkdir -p es/man1
   mkdir -p fr/man1
   mkdir -p fr.UTF-8/man1
   mkdir -p ko/man1

#O Create list of '*.1' files in current directory
   ls -1 *.1 > man1.list
   
#O For each line, copy source line_lang.1 file to lang directory and compress to lang/man1/line.gz; create html and txt manuals
   while read line
   do
     case $line in
       (*_de.1) echo "line: $line"; gzip -c $line > de/man1/$line.gz; man2html -r de/man1/$line.gz > de/man1/*.html; man de/man1/$line.gz > de/man1/$line.txt ;;
	   (*_en.1) echo "line: $line"; gzip -c $line > en/man1/$line.gz; man2html -r en/man1/$line.gz > en/man1/$line.html; man en/man1/$line.gz > en/man1/$line.txt ;;
	   (*_es.1) echo "line: $line"; gzip -c $line > es/man1/$line.gz; man2html -r es/man1/$line.gz > es/$line.html; man es/man1/$line.gz > es/man1/$line.txt ;;
	   (*_fr.1) echo "line: $line"; gzip -c $line > fr/man1/$line.gz; man2html -r fr/man1/$line.gz > fr/man1/$line.html; man fr/man1/$line.gz > fr/man1/$line.txt ;;
	   (*_fr.UTF-8.1) echo "line: $line"; gzip -c $line > fr.UTF-8/man1/$line.gz; man2html -r fr.UTF-8/man1/$line.gz > fr.UTF-8/$line.html; man fr.UTF-8/man1/$line.gz > fr.UTF-8/man1/$line.txt ;;
	   (*_ko.1) echo "line: $line"; gzip -c $line > ko/man1/$line.gz; man2html -r ko/man1/$line.gz > ko/$line.html; man ko/man1/$line.gz > ko/man1/$line.txt ;;
     esac	 
   done < man1.list
#O Rename all man1/*_en.1.html man1/*.html
    rm man1html.list
    ls -R man1/*_en.1.html > man1html.list
	ls -R de/man1/*_de.1.html >> man1html.list
	ls -R en/man1/*_en.1.html >> man1html.list
	ls -R es/man1/*_es.1.html >> man1html.list
	ls -R fr/man1/*_fr.1.html >> man1html.list
	ls -R fr.UTF-8/man1/*_fr.UTF-8.1.html >> man1html.list
	ls -R ko/man1/*_ko.1.html >> man1html.list	
    if test -s man1html.list
	then
	  while read newline
	  do
	  echo -n "newline : "
	  if echo $newline | grep "_en"; then echo $newline | sed "s/_en.1//g" > newname.txt;fi
      if echo $newline | grep "_de"; then echo $newline | sed "s/_de.1//g" > newname.txt;fi
	  if echo $newline | grep "_es"; then echo $newline | sed "s/_es.1//g" > newname.txt;fi
	  if echo $newline | grep "_fr"; then echo $newline | sed "s/_fr.1//g" > newname.txt;fi
	  if echo $newline | grep "_fr.UTF-8"; then echo $newline | sed "s/_fr.UTF-8.1//g" > newname.txt;fi
	  if echo $newline | grep "_ko"; then echo $newline | sed "s/_ko.1//g" > newname.txt;fi
      read Newname < newname.txt
	  echo "newname : $Newname"
	  mv $newline $Newname
	  done <man1html.list
	fi
#O Rename all man1/*_en.1.txt man1/*.txt
    rm man1txt.list
    ls -R man1/*_en.1.txt > man1txt.list
	ls -R de/man1/*_de.1.txt >> man1txt.list
	ls -R en/man1/*_en.1.txt >> man1txt.list
	ls -R es/man1/*_es.1.txt >> man1txt.list
	ls -R fr/man1/*_fr.1.txt >> man1txt.list
	ls -R fr.UTF-8/man1/*_fr.UTF-8.1.txt >> man1txt.list
	ls -R ko/man1/*_ko.1.txt >> man1txt.list
    if test -s man1txt.list
	then
	  while read newline
	  do
	  echo -n "newline : "
	  if echo $newline | grep "_en"; then echo $newline | sed "s/_en.1//g" > newname.txt;fi
      if echo $newline | grep "_de"; then echo $newline | sed "s/_de.1//g" > newname.txt;fi
	  if echo $newline | grep "_es"; then echo $newline | sed "s/_es.1//g" > newname.txt;fi
	  if echo $newline | grep "_fr"; then echo $newline | sed "s/_fr.1//g" > newname.txt;fi
	  if echo $newline | grep "_fr.UTF-8"; then echo $newline | sed "s/_fr.UTF-8.1//g" > newname.txt;fi
	  if echo $newline | grep "_ko"; then echo $newline | sed "s/_ko.1//g" > newname.txt;fi
      read Newname < newname.txt
	  echo "newname : $Newname"
	  mv $newline $Newname
	  done <man1txt.list
	fi
   rm *.list newname*
   exit 0
#O End of file docu2html.sh