Aller au contenu

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

Un livre de Wikilivres.

File for development of the function ecfpc ecfpc.bash, and test-ecfpc.bash to tests the function included in annex.lib

Fichier de mise au point de la fonction ecfpc ecfpc.bash, et test-ecfpc.bash pour éprouver la fonction en librairie annex.lib

function ecfpc

[modifier | modifier le wikicode]

Development of the function

function ecfpc ()
{
#H Function ecfpc
#H first param : url of collection (compiled book)
#H Return value : no return value
#H VERSION 210424

#O Affect the variable $Projectdir
	Projectdir=$Workdir/$Bookname
#T Print the project directory echo "Project directory = $Projectdir"; exit 0

#O Test if the file is a version Collections
    if [ -n $Site ] && [ "$Suffix" = "compiled" ]; 
    then 
      echo "url is a version Collections."; 	 
#O   Download script from the file $Lastfield
	  #wget https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel
	  #wget $1
#T Test break exit 0

#O 	 Find the contents of file named '$Lastfield' is the downloaded html code
     cat $Lastfield | grep /$Bookname/  > beforelastfield.txt

#T	 cat beforelastfield.txt and select 
	 cat beforelastfield.txt | awk -F " " '{for (i=1;i<=NF;i++) print $i}' | grep "href=" > fieldlist.txt
	 cat fieldlist.txt | sed -e "s/href=\"\/wiki\//[[/g" | sed -e "s/\"/]]/g" > fieldlist2.txt
     cat fieldlist2.txt | sed -f ~/Add_appendix/datas/conversions.dat > $Bookname.$Suffix
   fi
     	
#O If project '$Bookname' exist
    if test -d $Projectdir 
    then
	  echo "Project directory = $Projectdir"
      if [ -r "$Projectdir/$Bookname.$Suffix" ] 
      then 
        echo -n -e "$(gettext ' \033[31mUpdate $Bookname.$Suffix ? y/n :\033[0m ')"; read -s -n1 -p "inkey : " Inkey;echo " ";
        if [ "$Inkey" = "y" ]; 
        then chmod 755 "$Projectdir/$Bookname.$Suffix"; cp "$Bookname.$Suffix" $Projectdir/.; chmod 555 "$Projectdir/$Bookname.$Suffix";
        else echo "$(gettext ' file is not updated ! ... Continue ... ')"
        fi
      else cp $Bookname.$Suffix $Projectdir/.
      fi
    fi
}

test-ecfpc.bash with function in annex.lib

[modifier | modifier le wikicode]
#!/bin/bash
#H File : ecfpc.bash function ecfpc 'extract contents from printable book'
#H Syntax for tests ecfpc <book url>, example in tests directory :
#H ./ecfpc.sh https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/Exercices_avec_mkd
#H (à faire ?: ./ecfpc.sh https://en.wikibooks.org/wiki/User:Goelette_Cardabela/Collections/Testbook)
#H ./ecfpc.sh https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel
    
Version=210415

clear
#P print prog, version and Why
echo "ecfpc.sh $Version for testing ecfpc in annex.lib"

#P initialization of variables
    Site=""
    Bookname=""
    Suffix=""
    Return_value="non available"

#P find the current directory
     pwd > pwd.txt
     read Currentdir < pwd.txt
#P find the user home directory
     echo -n "/" > homedir.txt
     cat pwd.txt | head -n 3 | cut -d '/' -f 2-3 >> homedir.txt
     read Homedir < homedir.txt
     echo -n "/" > workdir.txt
     cat pwd.txt | head -n 4 | cut -d '/' -f 2-4 >> workdir.txt
     read Workdir < workdir.txt
    # rm pwd.txt homedir.txt workdir.txt
     
#P print current, home, working directories
    echo "Current directory = $Currentdir"
    echo ""
    echo "Home directory = $Homedir"
    echo ""
    echo "Working directory = $Workdir"
#T Test break exit 0

#P Find lib directory
    if test -a /usr/local/lib/annex.lib; then Libdir=/usr/local/lib; Bindir=/usr/local/bin; Sharedir=/usr/local/share
    elif test -a $Workdir/lib/annex.lib; then Libdir=$Workdir/lib; Bindir=Workdir/bin; Sharedir=$Workdir/share
    elif test -a $Workdir/tests/1-annex.lib/annex.lib; then Libdir=$Workdir/tests/1-annex.lib/
    else echo "Lib directory is not found, exit -1"; exit -1
    fi
#P Find datas directory
    if test -a $Workdir/datas/conversions.dat; then Datadir=$Workdir/datas; else echo "Datas directory is not found in $Workdir/datas"; fi

# print directories and if OK
   echo -n "Working directory = $Workdir"
   if [ -d $Workdir ]; then echo " found"; else echo "notfound";fi
   echo -n "Lib directory = $Libdir"
   if [ -d $Libdir ]; then echo " found"; else echo "notfound";fi
   echo -n "bin directory = $Bindir"
   if [ -d $Bindir ]; then echo " found"; else echo "notfound";fi
   echo -n "share directory = $Sharedir"
   if [ -d $Sharedir ]; then echo " found"; else echo "notfound";fi
   echo "----"
#T Testbreak exit 0
    clear 
    
#O If the test file funtion_ecfpc is in current directory then include this file
    #if test -a function_ecfpc ; then source function_ecfpc; echo "function ecfpc is in current directory";fi
   
#O Include the lib annex.lib which contains funtion findbook and ecfpc()
    source $Libdir/annex.lib
	
#O Print syntax if the first parameter is no entry in test mode
	#if test -z $1; then echo "Syntax : ecfpc <book url> or ./ecfpc <book url>"; exit 1; fi

#O Test url with collections version
    #ecfpc https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel
	echo "Test for $1"
	findbook $1
    Bookfullurl=$1
	echo ""
	echo "* Bookfullurl: "$Bookfullurl
	echo "* mw book url: "$MWbookurl
    echo "* Site name  : "$Site
    echo "* Last field : "$Lastfield
    echo "* Bookname   : "$Bookname
    echo "* Suffix     : "$Suffix
    echo "* Bookname.Suffix : "$Bookname.$Suffix
#T Test break exit 0
    
#O Test the function ecfpc 
    ecfpc $1
    
#T Print bookname.suffix in test mode
    if [ $0="./ecfpc.sh" ] || [ $0="$Testsdir/1-annex.lib/13-ecfpc/ecfpc.sh" ]; then echo "$Bookname.$Suffix :"; cat $Bookname.$Suffix; fi