Auto-éditer un wikilivre/Annexer (Version internationalisée)/Version imprimable

Un livre de Wikilivres.
Aller à la navigation Aller à la recherche
En travauxlink={{{link}}}

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.

Wikibooks user     

Auto-éditer_un_wikilivre
Add appendix

 
Bash logo france.svg

 

Auto-éditer un wikilivre
Add appendix
Éditeur : wikibooks user


 

Table des matières par chapitres[modifier | modifier le wikicode]

   1 Table des matières par chapitres
Programmes d'installation et de dépendances
   2 install_annex.sh
   3 users_install_annex.sh
Programmes sources
   4 annex.lib
       4.1 Fonction findbook
       4.2 Fonction ecfpb.sh
       4.3 Fonction ecfpc.sh
   5 pre-annex.sh
       5.1 pre-annex.sh
       5.2 test_pre-annex.bash
       5.3 sitelist.sh
       5.4 sitelist.txt
   6 header.inc.sh
       6.1 src/header.inc.sh
       6.2 tests/header.inc/tests_header.inc.bash
       6.3 List to tests header.inc
           6.3.1 text list for tests
   7 annex.sh
       7.1 Annex.sh
       7.2 Global test
   8 list.sh
       8.1 list.sh
       8.2 tests_list.bash
       8.3 content_cleaner.dat
   9 download.sh
       9.1 download.sh
       9.2 tests_download.sh
   10 add_sclt.sh
       10.1 add_sclt.sh
       10.2 fr_sclt.inc
       10.3 en_sclt.inc
       10.4 tests_add_sclt.bash
       10.5 See results
           10.5.1 LivreTest
           10.5.2 TestBook
   11 scli.inc.sh
       11.1 scli.inc.sh
       11.2 Tests_scli.inc.bash
       11.3 Exemple de présentation
           11.3.1 Pour les livres en français
       11.4 Sources des images licences et contributeurs
           11.4.1 For books in English
       11.5 Images sources licenses and contributors
   12 add_sclic.sh
   13 add_sclipco.sh
   14 add_sclipwb.sh
Progammes de maintenance
   15 copy sources to bin
   16 copy all tested commands to src and bin directories
Add appendix
Programmes d'installation et de dépendances
Éditeur : Goelette Cardabela


install_annex.sh[modifier | modifier le wikicode]

Ces programmes sont à exécuter deux fois afin de générer les fichiers de traduction !
install_annex.sh Installe la structure des répertoires du programme add_appendix pour les programmeurs et la maintenance.
La commande est exécutée une première fois lors de l'installation et une deuxième fois pour générer les fichiers de traduction après l'exécution de cp-src2bin.sh
Cette commande peut être ré-exécutée à volonté.
En finition/En voie de finition? terminaison? vβ 210519

#! /bin/bash
#H File install_annex.sh in ~/tmp or re-install_annex.sh in /usr/local/sbin directory
#H Codage UTF-8 sans BOM
#H Syntax : ~/Add_appendix/sbin/install_annex.sh [Install directory | ? ]
#H   The installation directory can be /usr/local or /usr or ~/Annexer or ~/Add_appendixby default
#P Creation date     : 2020/06/10 by GC
#P Modification date : 2020/06/12 by GC 
#P Modification date : 2021/05/19 by GC
#P Last test date    : 2021/05/19 by GC
#P This program installs the directory structure for the annex program of wikibooks.
#P

#O clean screen
   clear;
   
#O Version
    VERSION=210519
    if [ "$1" = "--v" ]; then echo "Version of install_annex.sh $VERSION"; exit 0; fi

#O If the first parameter '$1' is empty or '?' print syntax.  
    if [ "$1" = "?" ]; then echo "Syntax : $0 [ <Install-directory> ]"; exit 0; fi
    if [ -z $1 ]; 
    then 
      echo "Syntax ~/Tmp/install_annex.sh [ --v | ? | Add_appendix | Annexer | /usr/local ]"; exit 0
    fi

#P Do not use sudo
    if [ $USER = "root" ]; then echo "USER = $USER"; echo "Do not use 'sudo' please."; exit -1; fi
  
#O Go to home directory and print the current directory.
    cd ~
    echo""; echo -n "current directory = "; pwd; echo ""
    
#O If the first parameter is not empty  
    if [ $1 ];
    then 
      if [ $1 = "/usr" ]; then Installdir=$1; echo "Installdir = /usr";
      elif [ $1 = "/usr/local" ]; then  Installdir=$1; echo "Installdir = /usr/local";
      elif [ $1 = "Annexer" ]; then Installdir=~/Annexer; echo "Installdir = "$Installdir
      elif [ $1 = "Add_appendix" ]; then Installdir=~/Add_appendix; echo "Installdir = "$Installdir
      fi
    fi
    
#O Test if Install directory exist
    if [ -d $Installdir ];
    then echo " is ok, $Installdir is present." 
    else echo " $Installdir not exist, i create it"; mkdir $Installdir;
    fi    

#O Create variables : Workdir, Bindir, Testdir,
    if [ $1 = "Add_appendix" ] && [ $1 != "Annexer" ]; then Workdir=~/Add_appendix; echo "Workdir = "$Workdir; fi
    if [ $1 = "Annexer" ] && [ $1 != "Add_appendix" ]; then Workdir=~/Annexer; echo "Workdir = "$Workdir; fi
    if [ $1 = "/usr" ] || [ $1 = "/usr/local" ]; then Workdir=~/Add_appendix; echo "Workdir = "$Workdir; fi 
    if [ -d $Workdir ]; then echo " $Workdir is present."; else echo " $Workdir is not present, i create it."; mkdir $Workdir; fi
    
    Bindir="$Installdir/bin"; echo "Bindir : "$Bindir; 
    if test -d $Bindir; 
      then echo " is ok."; 
      else echo " not present, create it"; mkdir $Installdir; 
    fi
    
    Testdir="$Workdir/tests"; echo "Units-Tests directory Testdir = "$Testdir; 
    if test -d $Testdir; 
      then echo " is ok."; 
      else echo " is not present, create it"; mkdir $Testdir;
    fi
#T Breakpoint exit 0

#O Create or recreate directory hierarchy
    cd $Workdir
    echo -n "The current directory to create $Workdir sub directories = "; pwd
    mkdir -p datas resources resources/{lang,lang/po,lang/man,man,man/de,man/en,man/fr}
    mkdir -p bin books lib lib/src resources sbin share src temp vars man man/{man1,fr,fr/man1,fr.UTF8,fr.UTF8/man1,es,es/man1}
    cd share
    echo "Share is the current directory to create sub share directories."; pwd
    mkdir -p doc icons mime locale locale/{en,fr,es,fr/LC_MESSAGES,es/LC_MESSAGES}
#T Breakpoint exit 0

#O If findbook.sh, ecfpb.sh, ecfpc.sh, exist in the lib/src directory, build the annex.lib file
    if test -e $Workdir/lib/src/findbook.sh && test -e $Workdir/lib/src/ecfpb.sh && test -e $Wordir/lib/src/ecfpc;
    then
      cat $Workdir/lib/src/findbook.sh | grep -v "#O\|#P\|#T" > $Workdir/lib/annex.lib
      cat $Workdir/lib/src/ecfpb.sh | grep -v "#O\|#P\|#T" >> $Workdir/lib/annex.lib
      cat $Workdir/lib/src/ecfpc.sh | grep -v "#O\|#P\|#T" >> $Workdir/lib/annex.lib
    else echo "annex.lib is not builded or not updated in $Workdir/lib/annex.lib"
    fi

#O Cd home directory and print the current directory.
    cd ~
    echo""; echo -n "current directory = "; pwd; echo ""
    
#O If the file annex.sh exist in the sources directory print OK annex.sh is in src dir.
    if [ -r $Installdir/src/annex.sh ];
    then 
      echo " annex.sh is OK in src directory $Installdir/src";
#O Else print 'install all annex program files in Installdir/src'
    else 
      echo " annex.sh not found in src directory $Installdir/src";
      echo " Please copy all annex internationalized files in $Installdir/src directory";
      echo "   and re-run this command to product pot files."
      exit -1;
    fi
    
#O List the Installdir/src directory and recreate the tmp/shell_files.prj
    rm -r ./tmp
    mkdir ./tmp 
    Srcdir=$Installdir/src
    ls $Srcdir/*.sh > ./tmp/shell_files.prj
#T Breakpoint exit 0

#O While line read in shell_files.prj
    while read line
    do
#O   Read $line, delete comments, write the result in Testdir directory for the Units Tests.
      echo $line | awk -F "/" '{print $NF}' > tmpfile.txt
      read file < tmpfile.txt
#T	  echo " file = "$file
      mkdir $Testdir/$file
      cp $Srcdir/$file $Testdir/$file/$file; chmod 755 $Testdir/$file/$file
    done < ./tmp/shell_files.prj
#O Clean tmpfile
    rm tmpfile.txt
    #rm -r ./tmp

#O Create .pot files to translate messages.
    #xgettext -L shell -o $Installdir/share/locale/en/header.inc.pot --from-code=UTF-8 $Installdir/src/header.inc.sh
    #xgettext -L shell -o $Installdir/share/locale/en/annex.pot --from-code=UTF-8 $Installdir/src/annex.sh
    xgettext -L shell -o $Workdir/resources/lang/po/header.inc.pot --from-code=UTF-8 $Installdir/src/header.inc.sh
    xgettext -L shell -o $Workdir/resources/lang/po/annex.pot --from-code=UTF-8 $Installdir/src/annex.sh
    echo "-----"    
    echo "You find Pot-files in $Workdir/resources/lang/po for translations :"
    ls $Workdir/resources/lang/po/*.pot

#O Message of the tasks to be accomplished.  
    echo "-----"
    echo "Tasks to be accomplished :"
	echo "Modify these files as functions"
    echo "Integrate functions in the librairie $Installdir/lib/annex.lib"
    echo "Copy include functions in $Installdir/lib and include files in $Installdir/bin"
    echo "Copy install_annex.sh in $Installdir/sbin"
    echo "See also users_install_annex.sh, best command for user"
    
#O Put install dirs to  /vars/installdir.var   
    rm $Workdir/vars/installdir.var
    echo "Installdir=$Installdir" > $Workdir/vars/installdir.var
    echo "Workdir=$Workdir" >> $Workdir/vars/installdir.var    
    echo; echo "Content of file $Workdir/vars/installdir.var"
    cat $Workdir/vars/installdir.var
   
#O End 'install_annex.sh'

users_install_annex.sh[modifier | modifier le wikicode]

users_install_annex.sh Installe la structure des répertoires du programme annex pour produire les pages Annexe des wikilivres.
Cette commande peut être ré-exécutée à volonté.
En finition/En voie de finition? terminaison? vβ 210722
modifier le fichier de commandes

users_install_annex.sh[modifier | modifier le wikicode]

Install this executable shell code in sbin ( /usr/local/sbin | ~/Add_appendix/sbin | ~/Annexer/sbin )
Installer ce code shell éxécutable dans sbin
espagnol ; Instale este código de shell ejecutable en sbin
#! /bin/bash
#H File : users_install_annex.sh in ~/Tmp or re-install_annex.sh in /usr/local/sbin directory
#H Origine : https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/users_install_annex.sh
#H Codage UTF-8 without BOM
#H
#D users_install_annex.sh documentation
#D ------------------------------------
#D This program install or re-install the directory structure for the annex
#D   program of wikibooks.
#D Syntax for all annex programs : ~/Tmp/users_install_annex.sh [ OPTIONS ]
#D   Do not use ./users_install_annex.sh
#D   The installation Directories can be ~/Annexer or ~/Add_appendix 
#D OPTIONS : 
#D   *  Annexer, Add_appendix
#D   *  --v to print version
#D   *  ? to print syntax and usage
#D
#D To uninstall see users_uninstall_annex.sh
#D
#P Creation date     : 2021/04/16 by GC
#P Modification date : 2021/04/18 by Clara
#P Modification date : 2021/04/25 by GC
#P Last test date    : 2021/04/19 by Clara
#P Update and tests  : 2021/07/16 by Clara.
#P Update and tests  : 2021/07/21 by JPL for new french program "Annexer" 
#P                     update annex.lib and copy thi program to $Workdir/sbin
#P

#D This Documentation is included in source file
#H Header of file
#O Organigram of program
#P Comments for programmers
#S Structure comments of program
#w Warnings comments in program

#O clean screen
    clear
   
#O Version
    unset $VERSION
    VERSION=210726
    if [ "$1" = "--v" ]; then echo "Version of users_install_annex.sh "$VERSION; exit 0; fi

#O If the first parameter '$1' is '?' print doc or syntax.  
    if [ "$1" = "?" ]
    then 
      if test -z $Workdir/doc/users_install_annex.sh.doc 
      then cat $Workdir/doc/users_install_annex.sh.doc
      else echo "Syntax : $0 [ --v | ? | Add_appendix | Annexer ]"
      fi
      exit 0
    fi
#O If the first parameter '$1' is empty print syntax.
    if [ -z $1 ] 
    then
      echo "Copy users_install_annex.sh in ~/Tmp directory"
      echo "Syntax ~/Tmp/users_install_annex.sh [ --v | ? | Add_appendix | Annexer ]"; exit 0
    fi

#P Do not use sudo
    if [ $USER = "root" ]; then echo "USER = $USER"; echo "Do not use 'sudo' please."; exit -1; fi
      
#O Go to home directory and print the current directory.
    cd ~
    echo; echo -n "current directory = "; pwd; echo
    
#O If the first parameter is not empty  
    if [ $1 ];
    then 
      if [ "$1" = "Annexer" ]; then Installdir=~/Annexer; echo "Installdir = "$Installdir
      elif [ "$1" = "Add_appendix" ]; then Installdir=~/Add_appendix; echo "Installdir = "$Installdir
      else echo "Syntax error ! "
        echo "Copy users_install_annex.sh in ~/Tmp directory"
        echo "Syntax ~/Tmp/users_install_annex.sh [ --v | ? | Add_appendix | Annexer ]"
        exit -1
      fi
    fi
    
#O Test if Install directory exist
    if [ -d $Installdir ];
    then echo " is ok, $Installdir is present."
    else echo " $Installdir not exist, i create it"; mkdir $Installdir;
    fi    

#O Create variables : Workdir, Bindir
    if [ $1 = "Add_appendix" ] && [ $1 != "Annexer" ]; then Workdir=~/Add_appendix; echo "Workdir = "$Workdir; fi
    if [ $1 = "Annexer" ] && [ $1 != "Add_appendix" ]; then Workdir=~/Annexer; echo "Workdir = "$Workdir; fi
    if [ -d $Workdir ]; then echo " $Workdir is present."; else echo " $Workdir is not present, i create it."; mkdir $Workdir; fi
    
    Bindir="$Installdir/bin"; echo "Bindir : "$Bindir 
    if test -d $Bindir
    then echo " is ok." 
    else echo " not present, create it"; mkdir $Bindir 
    fi
#T Breakpoint exit 0

#O Create or recreate directory hierarchy
    cd $Workdir
    echo -n "The current directory to create $Workdir sub directories = "; pwd
    mkdir bin books datas lib man lib/src resources sbin share src temp tests vars
    cd $Workdir/tests
    echo "$Workdir/tests is the current directory to create sub tests directories."; pwd
    mkdir 0-pre-annex.sh 1-annex.lib 2-annex.sh 3-header.inc.sh 4-list.sh 5-download.sh 6-add_sclt.sh
    mkdir 7-scli.inc.sh 8-add_sclic.sh 9-add_sclipco.sh 10-add_sclipwb.sh 11-annexer.sh 12-add_appendix.sh

    cd $Workdir/share
    echo "$Workdir/share is the current directory to create sub share directories."; pwd
    mkdir man doc doc/html 
    mkdir -p man man/{man1,fr,fr/man1,fr.UTF8,fr.UTF8/man1,es,es/man1}
#T Breakpoint exit 0

#O If findbook.sh, ecfpb.sh, ecfpc.sh, exist in the lib/src directory, build the annex.lib file
    if test -e $Workdir/lib/src/findbook.sh && test -e $Workdir/lib/src/ecfpb.sh && test -e $Wordir/lib/src/ecfpc
    then
      cat $Workdir/lib/src/findbook.sh | grep -v "#O\|#P\|#T" > $Workdir/lib/annex.lib
      cat $Workdir/lib/src/ecfpb.sh | grep -v "#O\|#P\|#T" >> $Workdir/lib/annex.lib
      cat $Workdir/lib/src/ecfpc.sh | grep -v "#O\|#P\|#T" >> $Workdir/lib/annex.lib
    else echo "annex.lib is not builded or not updated in $Workdir/lib/annex.lib"
    fi

#O If file annex.lib not exist in $Libdir and if file annex.lib.sh exist in $Libdir/src, 
    if test -z $Workdir/lib/annex.lib && test -e $Workdir/src/annex.lib.sh
    then cat $Workdir/src/annex.lib.sh | grep -v "#O\|#P\|#T" > $Workdir/lib/annex.lib
    fi
      
    rm $Workdir/vars/installdir.var
    echo "Installdir=$Installdir" > $Workdir/vars/installdir.var
    echo "Workdir=$Workdir" >> $Workdir/vars/installdir.var    
    echo; echo "Content of file $Workdir/vars/installdir.var"
    cat $Workdir/vars/installdir.var
	
	if [ "$1" = "Annexer" ]
	then 
	  echo; echo "First param = $1"
	  echo; echo "Se connecter à l'url :"
	  echo "https://fr.wikibooks.org/wiki/Autoéditer_un_wikilivre/Annexer_(Version_internationalisée)#src.orig_en_français"
	  echo "Copier les pages de codes, les coller dans un éditeur de texte et les enregistrer dans les répertoires spécialisés"
	  echo "Les fichiers : "
	  echo " sources, dans le répertoire $1/src"
	  echo " de données dans $1/datas"
	  echo " de librairies, dans $1/lib"
	  echo " d'exécutables de maintenance, dans  $1/sbin (chmod 755 * dans sbin)"
	  echo " de documentation dans $1/share/doc"
	  echo " de manuels dans $1/share/man"
	  echo "Utiliser cette version imprimable : "
	  echo "   https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/Version_imprimable"
	  echo "   pour copier les codes bash"
	  echo; echo "Finalement rééxécuter cette commande ~/Annexer/sbin/users_install_annex.sh"
	fi
	  
	if [ "$1" = "Add_appendix" ] 
	then 
	  echo; echo "First param = $1"
	  echo; echo "Login to url :"
	  echo "https://fr.wikibooks.org/wiki/Autoéditer_un_wikilivre/Annexer_(Version_internationalisée)#Codes_sources_(internationalized_source_code)"
	  echo "Copy code pages in memory, paste them in a text editor and save in the specialized directory"
	  echo "The files :"
	  echo " sources in the directory Add_appendix/src"
	  echo " datas in Add_appendix/datas"
	  echo " library in Add_appendix/lib"
	  echo " executable for maintenance, in Add_appendix/sbin (chmod 755 * in sbin)"
	  echo " documentation in Add_appendix/share/doc"
	  echo " manuals in Add_appendix/share/man"
	  echo "Use this printable version : " 
	  echo "   https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/Version_imprimable"
	  echo "   to copy the bash code"
	  echo; echo "Finaly reexecute this command ~/Add_appendix/sbin/users_install_annex.sh"
	  if [ "$1" = "/usr/local" ]; then echo "copy all files and directories to /usr/local :"; echo "  sudo cp -R Add_appendix/* $1/. "; fi
	fi
    
    echo

#O Copy this program to $Workdir/sbin
    cp -P $0 $Workdir/sbin/users_install_annex.sh
    
#O Create the documentation of this program
    if test -e $Workdir/sbin/users_install_annex.sh; then cat $Workdir/sbin/users_install_annex.sh | grep -e "#D" | grep -v "if test" | sed 's/#D//g' > $Workdir/share/doc/users_install_annex.sh.doc; fi

#O Clean tmpfiles
    if test -d ~/tmp; then rm -r ~/tmp; fi
    
#O End of users_install_annex.sh

test_users_install_annex.sh[modifier | modifier le wikicode]

Install this executable shell code in ~/Tmp directory
#!/bin/bash
#H File : test_users_intall.sh
#H Usage : ~/Tmp/test_users_install_annex.sh [ --v | ? | Annexer | Add_appendix ]
#H

#P Creation date     : 2021/07/27 by GC
#P Update and tests  : 2021/07/27 by GC
#P

#D This Documentation is included in source file
#H Header of file
#O Organigram of program
#P Comments for programmers
#S Structure comments of program
#w Warnings comments in program

#O clean screen
    clear
   
#O Version
    unset $VERSION
    VERSION=210728
    if [ "$1" = "--v" ]; then echo "Version of test_users_install_annex.sh "$VERSION; exit 0; fi

#O If the first parameter '$1' is '?' print syntax.  
    if [ "$1" = "?" ]
    then 
    echo "~/Tmp/test_users_install_annex.sh [ --v | ? | Annexer | Add_appendix ]"; exit 0
    fi
    
#O If the first parameter '$1' is empty print syntax.
#T echo "param 0 = $0; param 1 = $1" exit 0
    if [ "$0" != "~/Tmp/test_users_install_annex.sh" ] || [ -z $1 ]
    then
      echo "Copy test_users_install_annex.sh in ~/Tmp directory"
      echo "Syntax ~/Tmp/test_users_install_annex.sh [ --v | ? | Add_appendix | Annexer ]"
    fi
#T Test break  exit 0 
#O Test whishout firstparam
    ~/Tmp/users_install_annex.sh
    sleep 10
#O Test --v
    ~/Tmp/users_install_annex.sh --v
    sleep 10
#O Test ?
    ~/Tmp/users_install_annex.sh ?
    sleep 10
#O Test Annexer
    ~/Tmp/users_install_annex.sh Annexer
    echo "Contenu du répertoire Annexer :" 
    ls -al ~/Annexer
    echo "Contenu des sous-répertoires"
    ls -al ~/Annexer/lib ~/Annexer/lib/src ~/Annexer/sbin ~/Annexer/share/doc ~/Annexer/vars
    exit 0
#O Test Add_appendix
    ~/Tmp/users_install_annex.sh Add_appendix
    echo "Add_appendix directory :"
    ls -al ~/Add_appendix
    echo "Contents of sub-directories :"
    ls -al ~/Add_appendix/lib ~/Add_appendix/lib/src ~/Add_appendix/sbin ~/Add_appendix/share/doc ~/Add_appendix/vars
    exit 0    
    
#O End of test_users_install_annex.sh

users_uninstall_annex.sh[modifier | modifier le wikicode]

Install this executable shell code in sbin ( /usr/local/sbin | ~/Add_appendix/sbin | ~/Annexer/sbin )
Installer ce code shell éxécutable dans sbin
espagnol ; Instale este código de shell ejecutable en sbin
#!/bin/bash
#H File : users_uninstall_annex.sh
#H Origine : https://fr.wikibooks.org/wiki/Auto-%C3%A9diter_un_wikilivre/Annexer_(Version_internationalis%C3%A9e)/users_install_annex.sh#users_install_annex.sh
#H Codage UTF-8 without BOM
#H
#D users_uninstall_annex.sh documentation
#D --------------------------------------
#D This program uninstalls the directory structure of the annex
#D   program of wikibooks.
#D   this program use $Workdir/vars/installdir.var
#D Syntax : ~/Tmp/users_uninstall_annex.sh [OPTIONS]
#D OPTIONS : --v, ?, Annexer, Add_appendix
#D
#D To re-install see users_uninstall_annex.sh
#D
#P Creation date     : 2021/07/22 by GC
#P Update and tests  : 2021/07/22 by GC
#P

#D This Documentation is included in source file
#H Header of file
#O Organigram of program
#P Comments for programmers
#S Structure comments of program
#w Warnings comments in program

#O clean screen
    clear
   
#O Version
    unset $VERSION
    VERSION=210726
    if [ "$1" = "--v" ]; then echo "Version of users_uninstall_annex.sh "$VERSION; exit 0; fi

#O If the first parameter '$1' is '?' print doc or syntax.  
    if [ "$1" = "?" ]
    then 
      if test -z $Workdir/doc/users_uninstall_annex.sh.doc 
      then cat $Workdir/doc/users_install_annex.sh.doc
      else echo "Syntax : ~/Tmp/users_uninstall_annex.sh [ --v | ? | Add_appendix | Annexer ]"
      fi
      exit 0
    fi
#O If the first parameter '$1' is empty print syntax.
    if [ "$0" != "~/Tmp/users_uninstall_annex.sh" ] || [ -z $1 ]
    then
      echo "Copy users_uninstall_annex.sh in ~/Tmp directory"
      echo "Syntax ~/Tmp/users_uninstall_annex.sh [ --v | ? | Add_appendix | Annexer ]"; exit 0
    fi
    
#O Include installdir.var
   if [ "$1" == "Annexer" ]; then source ~/Annexer/vars/installdir.var
   elif [ "$1" == "Add_appendix" ]; then source ~/Add_apendix/vars/installdir.var
   else echo "installdir.var is not found. see syntax of users_uninstall_annex.sh program."; exit -1
   fi
    
#O Uninstall user $Installdir directory
    if test -d $Installdir; then rm -R $Installdir; else echo "$Installdir not found"; fi
    
#O End of users_uninstall_annex.sh

test_users_uninstall_annex.sh[modifier | modifier le wikicode]

Install this executable shell code in tests directory or in ~/Tmp
En travauxlink={{{link}}}

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.


Add appendix
annex.lib, (findbook), (ecfpb), (ecfpc)
Éditeur : Goelette Cardabela


annex.lib[modifier | modifier le wikicode]

La fontion findbook est validée, les fonctions ecfp* sont à réviser. 17 mai 2021 à 11:38 (CEST)Bien avancé vβ 210514

  • Si vous désirez éprouver ces codes, vous pouvez les installer dans les répertoires ~/Add_appendix/tests/1-annex.lib/<sous-répertoires : 11-findbook.sh/, 12-ecfpb.sh/, 13-ecfpc.sh/
  • Cette librairie est à mettre à jour dans les répertoires :
    ~/Annexer/lib/
    et/ou
    ~/Add_appendix/lib/
    et/ou
    /usr/local/lib/

Tester le code source de la fonction findbook avec test_findbook.bash
Tester le code source de la fonction ecfpb avec ecfpb.sh (extract contents from printable book)
Tester le code source de la fonction ecfpc avec ecfpc.sh (extract contents from compiled book)

#!bin/bash
#H File    : findbook.sh, source for test the findbook function to insert in
#H           annex.lib file. Copy this content in file $Workdir/lib/src/findbook.sh
#P Version : 210310 initial version
#P Usage   : The source findbook.sh will be processed and automatically inserted into $ Workdir/lib/annex.lib when the install_annex.sh program is executed.
#P Syntax  : 'findbook <url-book-name>' or 'findbook --v' to print version
#P Example : findbook https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu
#P Creation: 2020-06-16 by wikibook user Goelette Cardabela
#P Updated on                  : DATE by User
#P Updated on fr:Wikibooks     : 2020-06-16 by GC
#H Last Update on fr:Wikibooks : 2021-05-14 by GC
#H Tested  : by GC 2021-05-14
#H Updated : 2021-05-14 by user GC For layout
#H
#D function findbook documentation
#D Function findbook find site name, bookname, category (Collection, Printable)
#D   and proposes a file name for the project directory, containing the list of
#D   links to the articles in the book
#D
#w Attention, the character ';' at the end of the line is equal to '\' before NL
#w   if the following line is a comment, it will concatenate it at the end of
#w   the previous line and the command with grep -v deletes the whole line

VERSION=210514

#P . gettext for translation
. gettext.sh
                 
function findbook ()
{
#P To test version of function findbook with option --v
   if [ "$1" = "--v" ]; then echo "findbook version : $VERSION";return 0;fi

#P Print availables suffix in test mode
    if [ -z $1 ]; then
      echo " -- Suffix availables in function findbook() version $VERSION : "
      echo " <book-name>/Contenus or Contenu or Contents, "
      echo " <book-name>/Sommaire or Summary, "
      echo " Compilations/<book-name> or Collections/<book-name>. "
    fi

#P Find bookname and sitename
    echo $1 | awk -F "/" '{for (i=1;i<=NF;i++) print $i}' > bookname.txt
    cat bookname.txt | grep wikibooks > sitename.txt
    read Site < sitename.txt
    wc -l bookname.txt | cut -d" " -f1 > N.txt; read N < N.txt 
#T echo " N Fields = "$N   
    let n=N 
    
#P Find media wiki url for prinable book with last fild 'Contenus', 'Contents',
#P   'Sommaire', Summary
    let local m=N-1
    echo $1 | cut -d '/' -f5-$m > mwbookurl.txt
    read "MWbookurl" < mwbookurl.txt

#P Select last field from first parameter
    #let n-=1 
    echo $1 | cut -d '/' -f$n > lastfield.txt
    read Lastfield < lastfield.txt
#T echo "Lastfield = "$Lastfield
   
#P Set the suffix according to the last field
    unset Suffix
    if [ "$Lastfield" = "Contenus" ] || [ "$Lastfield" = "Contenu" ] || [ "$Lastfield" = "Contents" ] || [ "$Lastfield" = "Content" ] 
    then Suffix=contents
    fi
   
    if [ "$Lastfield" = "Sommaire" ] || [ "$Lastfield" = "Sommaire_du_livre" ] || [ "$Lastfield" = "Summary" ]; 
    then Suffix=summary   
    else Bookname=$Lastfield 
    fi
    
#P Select bookurl from first parameter
    if [ "$Suffix" = "contents" ] || [ "$Suffix" = "summary" ]
    then
      #let local m=N-1
      echo $1 | cut -d '/' -f1-$m > bookurl.txt
      read Bookfullurl < bookurl.txt
    fi

#P Set the suffix according to the penultimate field
    let n-=1; echo $1 | cut -d '/' -f$n > penultimatefield.txt
    read Penultimatefield < penultimatefield.txt     
#T echo "Penultimate field = "$Penultimatefield
    if [ "$Penultimatefield" = "Compilations" ] \
      || [ "$Penultimatefield" = "Collections" ] \
      || [ "$Penultimatefield" = "Wikilivres:Compilations" ] \
      || [ "$Penultimatefield" = "Wikibooks:Collections" ]
    then 
      Suffix=compiled 
    else Bookname=$Penultimatefield 
    fi

#P Special treatment for compilations
    if [ "$Suffix" = "compiled" ]
    then 
      MWcompilurl=$MWbookurl/$Bookname
      Compilfullurl=$1     
    fi
   
    rm bookname.txt sitename.txt lastfield.txt penultimatefield.txt N.txt
}

function ecfpb ()
{
#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 printable version
    if [ -n $Site ] && [ "$Suffix" = "contents" ] 
    then 
      echo "url is a printable version."; 	 
#O   Download script from the file $Lastfield
	  #wget https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu
	  wget $1
#O 	 Find the contents of file named '$Lastfield'
	 #cat Contenu | grep /wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/ | grep -v -i Contenu > $Lastfield.txt
	 cat $Lastfield | grep /$MWbookurl/ | grep -v -i $Lastfield > beforelastfield.txt
#T	 cat beforelastfield.txt and select 
	 cat beforelastfield.txt | awk -F "/" '{for (i=1;i<=NF;i++) print $i}' > fieldlist.txt
	 cat fieldlist.txt | sed  -e "s/\"/\n/g" | sed -e "s/ /\n/g" > fieldlist2.txt
	 wc -l fieldlist.txt | cut -d " " -f1 > N.txt; read N < N.txt 
#T echo " N Fields = "$N   
     let  n=N; i=0 ; j=0; article=1; flag0=0; #flag1=1
	 rm article.*.txt
	 while read line  
     do 
	   let i+=1;
	   if [ "$line" = "wiki" ]; then echo -n "[[$MWbookurl/" > article.$article.txt; let flag0=1; fi
	   if [ $flag0 = "1" ] && [ "$line" = "$Bookname" ]; then let j=i+1; fi
	   if [ $flag0 = "1" ] && [ "$i" = "$j" ]; then echo "$line]]" >> article.$article.txt; let article+=1; let flag0=0; fi
     done < fieldlist2.txt
	 fi
#O Concatenation of files obtained, to file bookname.suffix
    let i=1; rm $Bookname.$Suffix
	echo "[[$MWbookurl]]" > $Bookname.$Suffix
	while (( i < 10 ))
	do
	  #echo "article.$i.txt ="; cat article.$i.txt
      if [ -r article.$i.txt ]; then cat article.$i.txt >> $Bookname.$Suffix; let i+=1 ; else break; fi
	done
    
#O Converting accented characters
    cat $Bookname.$Suffix | sed -f ~/Add_appendix/datas/conversions.dat > $Bookname.$Suffix.conv
    cat $Bookname.$Suffix.conv > $Bookname.$Suffix
	
#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
}

function ecfpc ()
{
#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
}

Fonction findbook[modifier | modifier le wikicode]

Complet β-210514 - Tester le code source de la fonction findbook avec le programme test_findbook.bash (extrait les lien (urls) du Sommaire, du Contenu ou de la Compilation pour préparer la création de l'annexe des livres)

Fonction ecfpb.sh[modifier | modifier le wikicode]

En finition/En voie de finition? terminaison? β-210409 - Tester le code source de la fonction ecfpb avec test_ecfpb.bash] (extrait le contenu des livres imprimables)

Fonction ecfpc.sh[modifier | modifier le wikicode]

En finition/En voie de finition? terminaison? β-210415 - Tester le code source de la fonction ecfpc function with test_ecfpc.bash (extrait le contenu des livres compilés)


Add appendix
pre-annex.sh
Éditeur : Goelette Cardabela


pre-annex.sh[modifier | modifier le wikicode]

L'internationalisation des messages reste à faire En finition/En voie de finition? terminaison? vβ 210516

pre-annex.sh[modifier | modifier le wikicode]

Documentation
#D pre-annex program documentation
#D This program use findbook to analyse the link to the book
#D If the result is correct, create the project directory, pre-create the
#D - file project.suffix and create a local html book in project directory.
#D If everything is correct, edit a collection file or a book contents file
#D - to manually copy the content to the project/project.suffix file
#D It is also proposed to display the local book in the navigator
#D
#F Documentation du programme pre-annex 
#F Ce programme pré-annexe la construction de l'annexe du livre
#F Si ce programme s'est bien exécuté, le répertoire de projet aura été créé
#F - le fichier projet.suffixe et un livre local auront été créés dans le
#F - répertoire projet
#F Si tout est correct il est proposé d'éditer la compilation ou la page de
#F - contenu afin d'être recopiée manuellement dans le fichier projet.suffixe
#F Il est également proposé d'afficher le livre local dans le navigateur
Program pre-annex code
#!/bin/bash
#H Workdir is ~/Add_appendix or ~/Annexer
#H Source file     : Workdir/src/pre-annex.sh
#H Executable file : Workdir/bin/pre-annex
#H Syntax : pre-annex [ Full-url-of-book || --v ]
#H Example : ./pre-annex.sh https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel
#P  https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel
#P  https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel
#H Created : 12/05/2021 by GC
#H Last Update on fr:Wikibooks :
#H Tested  : by GC 12/05/2021
#H Updated :  by user GC For layout
#H
#D pre-annex program documentation
#D This program use findbook to analyse the link to the book
#D If the result is correct, create the project directory, pre-create the
#D   file project.suffix and create a local html book in project directory.
#D If everything is correct, edit a collection file or a book contents file
#D   to manually copy the content to the project/project.suffix file
#D
#w Install Add_appendix or Annexer with the program executable users_install_annex.sh
#W https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_(Version_internationalisée)/users_install_annex.sh
#w Attention, the character ';' at the end of the line is equal to '\' before NL
#w   if the following line is a comment, it will concatenate it at the end of
#w   the previous line and the command with grep -v deletes the whole line
#w


VERSION=210520

#O If first parameter is "--v", print pre-annex version
    if [ "$1" = "--v" ]; then echo " pre-annex version $VERSION"; exit 0; fi
#O If first parameter is empty, print the syntax
    if test -z $1
    then 
      echo "Syntax : pre-annex [ --v | Full-url-of-book ] [ --t ] (with bin directory in environment variables)"
      echo "  Example in tests directory tests/pre-annex.sh/ :"
      echo "  ./pre-annex.sh https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel --t"
      exit -1
    fi
#O Else, the first parameter is not empty
#P 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
    source $Workdir/vars/installdir.var
    if [ "$1" = "--t" ] || [ "$2" = "--t" ] ; then echo; echo "Global install variables :"; cat $Workdir/vars/installdir.var; fi
#T Test break exit 0
#O Find function findbook 
    Libdir=$Workdir/lib
    Booksdir=$Workdir/books
    if test -e $Libdir/annex.lib; then source $Libdir/annex.lib; elif test -e $Libdir/src/findbook.sh; \
    then source $Libdir/src/findbook.sh; else echo "Function findbook not found"; exit-1; fi
#O Find book parameter
    findbook $1
#O If option --t, print the book parameter
    if [ "$2" = "--t" ]
    then
      echo
      echo -n "--t : "; findbook --v
      echo "--t : Global variables after findbook execution : " 
      echo "--t : Site name :"$Site
      echo "--t : Bookname : "$Bookname 
      echo "--t : Suffix : "$Suffix 
      echo "--t : Bookname.Suffix = "$Bookname.$Suffix
      if [ "$Suffix" = "compiled" ]
      then 
        if test -n $MWcompilurl; then
        echo "Compil mw url : "--t : $MWcompilurl
        echo -n "--t :   Compil mw syntax = [[ "$MWcompilurl; echo " ]] on $Site"
        echo "--t : Compil full url : "$Compilfullurl
        fi
      else
        if test -n $MWbookurl; then
        echo "--t : mw book url = "$MWbookurl
        echo -n "--t :   mw book syntax = [[ "$MWbookurl/$Bookname; echo " ]] on $Site"
        echo "--t : Book full url = "$Bookfullurl
        fi
      fi 
      echo " ----"
    fi
#O If all parameter are found carry continue otherwise print the error
    if ! test $Site || ! test $Bookname || ! test $Suffix
    then
      if ! test $Site; then echo "Site not found";fi
      if ! test $Bookname; then echo "Bookname not found";fi
      if ! test $Suffix; then echo "Suffix not found";fi
    fi
#O Create the project directory
    Projectdir=$Booksdir/$Bookname
    if ! test -d "$Projectdir"; then mkdir $Projectdir; fi 
#O Create the file bookname.suffix
    if test -e $Projectdir/$Bookname.$Suffix
    then
      echo "$Bookname.$Suffix : "
      cat $Projectdir/$Bookname.$Suffix
      echo -e "\033[47m\033[1;30m  Want you update $Projectdir/$Bookname.$Suffix ? \033[0m"
      read -s -n1 -p "inkey y/n : " Inkey; echo $Inkey
      if [ "$Inkey" = "y" ]
      then 
        echo; chmod 755 $Projectdir/$Bookname.$Suffix
        if [ "$Suffix" = "compiled" ]
        then 
          if test -n $MWcompilurl; then echo "[[$MWcompilurl]]" > $Projectdir/$Bookname.$Suffix; fi 
        else
          if test -n $MWbookurl; then echo "[[$MWbookurl]]" > $Projectdir/$Bookname.$Suffix; fi
        fi
      fi
    else 
      if [ "$Suffix" = "compiled" ]
      then 
        if test -n $MWcompilurl; then echo "[[$MWcompilurl]]" > $Projectdir/$Bookname.$Suffix; fi
      else
        if test -n $MWbookurl; then echo "[[$MWbookurl]]" > $Projectdir/$Bookname.$Suffix; fi 
      fi 
    fi
#O Download the book in html form
#O Télécharger le site récursivement avec une profondeur infinie ( -linf ), \
#O convertit les liens pour une consultation en local ( -k ), \
#O rapatrie tous les fichiers nécessaires à l'affichage convenable d'une page HTML ( -p ) \
#O et renomme toutes les pages HTML avec l'extension .html ( -E ) 
   if ! test -d "$Workdir/temp"; then mkdir $Workdir/temp; fi
   cd $Projectdir
   if test -n "$Bookfullurl"; then echo "Dowload $Bookfullurl"; wget -r -linf -k -p -E "$Bookfullurl" -o $Workdir/temp/wget-log-télécharger.txt
   elif test -n "$Compilfullurl"; then echo "Dowload $Compilfullurl"; wget -r -linf -k -p -E "$Compilfullurl" -o $Workdir/temp/wget-log-télécharger.txt
   else echo " book full url not found to download"
   fi
#O If everything is correct, edit a collection file or a book contents file
#O   to manually copy the content to the project/project.suffix file
   if test $Site || test $Bookname || test $Suffix
   then
     echo -e "\033[31mAttention : See and possibly complete the $Bookname.$Suffix "; echo -e "Edit and copy the wiki-code in $Workdir/$Bookname/$Bookname.$Suffix :\033[0m"
     echo -e "\033[47m\033[1;30m  Go forward to edit the book and copy wiki-code to $Bookname.$Suffix ? \033[0m"
     read -s -n1 -p "inkey y/n" Inkey; echo "$Inkey"
     if [ "$Inkey" = 'y' ] 
     then
       gedit $Workdir/$Book/$Bookname/$Bookname.$Suffix&
       xdg-open $1
     fi
   else 
     echo -e "\033[31m Non-compliant result \033[0m"
   fi
   #T xdg-open file:///home/jpl/Annexer/Faire_fleurir_le_sel/fr.wikibooks.org/wiki/Faire_fleurir_le_sel.html
   #T xdg-open https://fr.wikibooks.org/w/index.php?title=Auto-%C3%A9diter_un_wikilivre/Auto-r%C3%A9f%C3%A9rencer/LivreTest/LivreTest.compil%C3%A9&action=edit
   echo -n "$Projectdir/" > localbook.txt
   echo "$Bookfullurl" | cut -d '/' -f3-  >> localbook.txt
#T
cat localbook.txt
   read Localbook < localbook.txt
   Htmlbook=$Localbook.html
   echo "Htmlbook = $Htmlbook"
#T Test break exit 0
   if test -e $Htmlbook; 
   then 
     echo -e "\033[47m\033[1;30m  Do you want to see the local html book ? \033[0m"
     read -s -n1 -p "inkey y/n :" Inkey; echo "$Inkey"; echo
     if [ "$Inkey" = 'y' ]; then xdg-open file://$Htmlbook ; fi
   else echo "$Htmlbook not found" 
   fi
   Varsdir=$Workdir/vars
#O Copy the variables from the book to 'vars/$Bookname.var'
   if test -n "$Site"; then echo "Site=$Site" > $Varsdir/$Bookname.var; fi
   if test -n "$Bookname"; then echo "Bookname=$Bookname" >> $Varsdir/$Bookname.var; fi
   if test -n "$Suffix"; then echo "Suffix=$Suffix" >> $Varsdir/$Bookname.var; fi
   if test -n "$Projectdir"; then echo "Projectdir=$Projectdir" >> $Varsdir/$Bookname.var; fi
   if test -n "$Bookfullurl"; then echo "Bookfullurl=$Bookfullurl" >> $Varsdir/$Bookname.var; fi
   if test -n "$Compilfullurl"; then echo "Compilfullurl=$Compilfullurl" >> $Varsdir/$Bookname.var; fi
   if test -n "$Htmlbook"; then echo "Htmlbook=$Htmlbook" >> $Varsdir/$Bookname.var; fi
#O End pre-annex.sh

test_pre-annex.bash[modifier | modifier le wikicode]

Install this code in ~/Add_appendix/tests/prannex.sh to test preannex.sh

#!/bin/bash
#H File    : test_pre-annex.bash  executable for testing the program pre-annex
#H Syntax  : ./test_pre-annex.bash <full-url-book-name>  (on the terminal for testing)
#H Example : ./test_pre-annex.bash https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenus --t
#H         : ./test_pre-annex.bash [ --v | <full-url-book-name> ] --t
    
VERSION=210619

#O Clean screen
clear

#P 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 drectory not found"; exit -1;fi
    rm pwd.txt#O Download global variables
    source $Workdir/datas/installdir.var

#O Print prog, version and Why
    if [ "$1" = "--v" ]; 
    then 
      echo "Command 'test_pre-annex.bash' is $VERSION for testing pre-annex function";
      echo "  Options : [ --v | <full-url-book-name> ] --t"
      exit 0;
    fi
    
#O Control if the test pre-annex.sh file is clean
    echo -e "\033[1;33m Control pre-annex.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo -e "\033[1;33m ----  \033[0m"
    grep -n -e "#T\|#O\|#P" pre-annex.sh >> text-control.txt
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
    

   echo " Beginning tests without parameter"
   ./pre-annex.sh 
   echo "----"; echo
   sleep 2
   echo " Test whith parameter --v"
   ./pre-annex.sh --v     
   echo "----"; echo
   sleep 2
   
#T Test, all with option --t 
   echo " All tests whith parameter --t"
   
#P List fullurl books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu --t
      elif [ "$Inkey" = "2" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Hélices_de_navires_à_déplacement/Sommaire --t
      elif [ "$Inkey" = "3" ]; then ./pre-annex.sh https://en.wikibooks.org/wiki/User:Goelette_Cardabela/Sandbox/TestBook/Content --t
      elif [ "$Inkey" = "4" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Mkd_\(Extracteur_de_documents\)/Sommaire --t
      elif [ "$Inkey" = "5" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./pre-annex.sh https://en.wikibooks.org/wiki/Wikibooks:Collections/Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/Tests_de_la_capacité_des_batteries_d%27accumulateurs
      elif [ "$Inkey" = "9" ]; then ./pre-annex.sh https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/LivreTest --t
      else echo "$inkey full url of site not found"; exit 0
      fi
    done

sitelist.sh[modifier | modifier le wikicode]

Install this code in /Add_appendix/tests, to product sitelist.txt

#!/bin/bash
#H File sitelist to test with 'test_preannex.bash in preannex.sh tests directory
#H Application for source ~/Add_appendix/datas/sitelist in 'test_preannex.bash'
#H   or ./sitelist in datas directory in executable mode
#H Created 14/05/2021 by GC
#H Updated 19/06/2021 by GC
#P Make sitelist.txt : ./sitelist > sitelist.txt in datas directory
#
echo "sitelist to test annex programs, version 210516"
echo -e "\033[47m \033[1;32m   Books with Contents or Summary   \033[0m"
echo " 1 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu --t"
echo " 2 - https://fr.wikibooks.org/wiki/Hélices_de_navires_à_déplacement/Sommaire --t"
echo " 3 - https://en.wikibooks.org/wiki/User:Goelette_Cardabela/Sandbox/TestBook/Content --t"
echo " 4 - https://fr.wikibooks.org/wiki/Mkd_\(Extracteur_de_documents\)/Sommaire --t"
# echo -e "\033[47m \033[1;32m   Books with Contents or Summary   \033[0m"
echo -e "\033[47m \033[1;32m             Collections            \033[0m"
echo " 5 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel --t"
echo -e "\033[1;31m  Same book second title \033[0m"
echo " 6 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel --t"
echo " 7 - https://en.wikibooks.org/wiki/Wikibooks:Collections/Guide_to_Unix --t"
echo " 8 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/Tests_de_la_capacit%C3%A9_des_batteries_d%27accumulateurs"
echo " 9 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/LivreTest --t"
# echo -e "\033[47m \033[1;32m   Books with Contents or Summary   \033[0m"
echo -e "\033[47m \033[1;32m          Atypical variants         \033[0m"
echo -e "\033[1;31m  Copy the line (Ctrl-Shift-C) and execute in terminal (Ctrl-Shift-V) \033[0m"
echo " xdg-open https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé"
echo " xdg-open https://fr.wikibooks.org/w/index.php?title=Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé&action=edit"

sitelist.txt[modifier | modifier le wikicode]

sitelist.txt to test program annex sub-programs
sitelist to test annex programs, version 210516
�[47m �[1;32m   Books with Contents or Summary   �[0m
 1 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu --t
 2 - https://fr.wikibooks.org/wiki/Hélices_de_navires_à_déplacement/Sommaire --t
 3 - https://en.wikibooks.org/wiki/User:Goelette_Cardabela/Sandbox/TestBook/Content --t
 4 - https://fr.wikibooks.org/wiki/Mkd_\(Extracteur_de_documents\)/Sommaire --t
�[47m �[1;32m             Collections            �[0m
 5 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel --t
�[1;31m  Same book second title �[0m
 6 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel --t
 7 - https://en.wikibooks.org/wiki/Wikibooks:Collections/Guide_to_Unix --t
 8 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/Tests_de_la_capacit%C3%A9_des_batteries_d%27accumulateurs
 9 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/LivreTest --t
�[47m �[1;32m          Atypical variants         �[0m
�[1;31m  Copy the line (Ctrl-Shift-C) and execute in terminal (Ctrl-Shift-V) �[0m
 xdg-open https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé
 xdg-open https://fr.wikibooks.org/w/index.php?title=Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé&action=edit


Add appendix
header.inc.sh
Éditeur : Goelette Cardabela


header.inc.sh[modifier | modifier le wikicode]

L'internationalisation des messages est à reprendre En finition/En voie de finition? terminaison? vβ 210519

Remarquelink={{{link}}}

Ce fichier d'entête doit être inclus dans tous les modules par la commande 'source' :
source $Bindir/header.inc
Dans ses dernières versions :
- header.inc.sh est un fichier source et header.inc est un script exécutable dont les commentaires d'organigramme #O #P et #T pour les programmeurs sont supprimés. Les commentaires de structure #S ont été réduits au minimum.
- Les messages en anglais sont introduits pour l'internalisation avec gettext.
En deuxième partie: exemple de fichier de commande d'un test tests/header.inc/test_header.inc.bash

src/header.inc.sh[modifier | modifier le wikicode]

#!/bin/bash
#H File    : bin/header.inc or src/header.inc.sh
#H Version : 2020-05-24
#H Syntax  : header.inc [ <book-name> | ? ] [ -v ] [ -pb | -pc ]
#H Example : ./header.inc LivreTest (on the terminal for unit tests)
#H Creation: 2020-03-24 
#H           see https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer#Entête_des_modules
#H Updated : 2020-05-15 by GC
#H Updated : 2020-05-24 By GC to translate
#H Updated : 2020-06-15 by GC to update for translations and tests
#H Update on fr:Wikibooks : 2020-06-17
#H Last update : 2021-05-19
#H
#w NEW 17/05/2021: The books are now in the Book directory
#
#F Documentation en français
#F Le langage shell bash a été choisi plutôt d'autres shells pour son 
#F   universalité, c'est le langage de base pour apprendre. On trouve
#F   la documentation dans toutes les langues et c'est aussi le plus
#F   rapide à l'exécution, ce n'est pas un langage interprété, c'est du
#F   code quasi binaire en dehors du temps consacré au contrôle de la
#F   syntaxe à chaque exécution.
#F Le fichier de commandes header.sh doit être inclus dans tous les
#F   modules de test du programme principal. Il initialise le
#F   répertoire des commandes, le répertoire de travail du projet;
#F   le répertoire du projet est le nom du livre, de
#F   l'article ou de la page. Si ces répertoires n'existent pas ils 
#F   seront créés.
#F
#F Ce projet éducatif et de tests est destiné à être utilisé en liens 
#F   avec wikilivres en langue anglaise et caractères UTF8. 
#F Les langues supportées pour les messages sont obtenues par édition 
#F   des fichiers .pot avec poedit pour produire les fichiers .po 
#F   d’interprétation dans des langues différentes. Les fichiers .pot 
#F   et .po sont enregistrés dans le répertoire ‘resource’ avant d’être 
#F   copiés dans le système unix ou linux.
#F Les manuels sont écrits en anglais et français et peuvent être 
#F   traduits dans d'autres langues.
#F
#w Les variables Site et SitePrefix se rapportent à "fr.wikibooks.org"
#w    des anciennes versions sont supprimés depuis les versions 210501
#w
#F Le programme est prévu pour fonctionner à l'initiative du 
#F   contributeur qui doit copier la page "Contenus" ou la page de  
#F   compilation dans le répertoire des livres :
#F    "~/Add_appendix/books/<nom du livre>"
#F   Depuis les versions de mai 2021 ce travail peut être facilité avec
#F   le programme pre-annex.sh
#F Les modules de programmes sont indépendants pour les tests, 
#F   cependant ils doivent  être exécutés dans l'ordre 
#F    ./header.sh <livre>, ./lister <livre>, ./télécharger <livre>
#F    ./ajouter_sclt <livre>, ./ajouter_sclic, ./ajouter_sclip <livre>
#F La liste des pages à analyser est indispensable dans tous les 
#F   modules en tests. Ils auront été copiés par vous-même ou par
#F   le programme pre-annex et seront listés par le module lister.
#F   L'absence de la liste des pages à analyser est signalée à chaque
#F   lancement des modules du programme principal "Annexer" par
#F   l'exécution de header.inc inclus dans chaque module en test.
#F

#E English documentation
#E

#O . gettext for message internationalization
. gettext.sh

VERSION=210519
#O Clean messages on terminal
    clear
#O Create the function tests_header_syntax
    function tests_header_syntax
    {
      echo
      echo "$(gettext ' Syntax of the header.inc command in test mode if the book is already created : '$0' <bookname> --t ')"
      echo "$(gettext ' Example : '$O' TestBook --t ')"
      echo "$(gettext ' Second syntax command in test mode if the book is not created : '$0' - --t ')"
      echo "$(gettext ' Example : '$0' --v or '$0' ? --t ')"
	  echo 
      exit 0
    }
#O If first parmeter is empty, print the error and suggest the help syntax
    if test -z $1; then echo "$(gettext ' Error: input parameter is empty, see  the command : header.inc ? ')"; exit -1; fi
#O If help is requested
    if [ "$1" = '?' ]; then
      if [ "$2" = "--t" ]; then tests_header_syntax; else echo "Syntax : header.inc bookame"; exit 0; fi
    fi
#O Display header.inc version on demand with option -v for first parameter
    if [ "$1" = "--v" ]; then echo " header.inc version $VERSION"; exit 0; echo; fi
#O If the test mode is validated, initialize the Testmode variable to true
    if [ "$2" = "--t" ]; then echo -n "Tests mode $2; "; Testsmode="true"; echo "Testmode = $Testsmode"; fi
#O Directories initialization, install, working, binaries, tests directories
#O If the file 'installdir.var exist in vars dir, include installdir.var 
    if [ -e ~/Add_appendix/vars/installdir.var ]
    then 
      source ~/Add_appendix/vars/installdir.var
#O Else, print the problem and offer to reinstall Add_appendix directories 
    else
      echo -n "Current directory in $0 "; pwd
      echo "~/Add_appendix/vars/installdir.var not found in $0 command"
      echo -e "\033[47m\033[1;30m Re-install Add_Appendix ? \033[0m"
      read -s -n1 -p "inkey y/n: " Inkey; echo "$Inkey"
      if [ "$Inkey" = 'y' ]; then
        ~/Add_appendix/sbin/users_install_annex.sh Add_appendix
        #xdg-open https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Annexer_\(Version_internationalisée\)/users_install_annex.sh
        exit 0
      else exit -1
      fi
    fi
#O Initialize all global directories
#P In Install directories :
    Bindir=$Installdir/bin
    Libdir=$Installdir/lib
    Mandir=$Installdir/man
    Sharedir=$Installdir/share
    Sbindir=$Installdir/sbin
#P In working directory :
    Booksdir=$Workdir/books
    Datasdir=$Workdir/datas 
    Resources=$Workdir/resources
    Testsdir=$Workdir/tests
    Varsdir=$Workdir/vars
#O If testmode is true (--t), print global directories variables
    if [ "$Testsmode" = "true" ]; then
      echo "* Install directory = $Installdir"
      echo -e "\033[47m\033[1;30m In install directories \033[0m"
      echo "  Executables directory = $Bindir"
      echo "- Library directory = $Libdir"
      echo "- Manuals directory = $Mandir"
      echo "- Share directory = $Sharedir"
      echo "- Admin directory = $Sbindir"
      echo
      echo "* Working directory = $Workdir"
      echo -e "\033[47m\033[1;30m In Working directory \033[0m"
      echo "- Books directory = $Booksdir"
      echo "- Datas directoy = $Datasdir"
      echo "- Resources directory = $Resources"
      echo "- Tests directory = $Testsdir"
      echo "- Variables directory = $Varsdir"
    fi 
#O Check for the presence of the annex.lib file
    if test -e $Libdir/annex.lib  
    then if [ "$Testsdmode" = "true" ]; then echo; echo " $Libdir/annex.lib is found"; fi
    else
      echo "To continue, copy annex.lib to $Libdir"
      exit -1
    fi
#O Initialize $Conversions variable
    Conversions="$Datasdir/conversions.dat"    
#O If the command is local for tests, clean the old file and create a new conversions file
    if [ "$Testsdmode" = "true" ] 
    then 
      echo; echo "$(gettext ' When the command tests is $Testsdir, then conversion file is recreated to ')"$Conversions
      rm $Conversions
    fi
#O Create or recreate the conversions.dat file in datas directory
    if test -e "$Conversions"
    then echo "$(gettext ' The conversion file is present ')"
    else 
    {
      echo "s/%24/\$/g;s/%21/\!/g;s/%25/%/g;s/%2B/+/g;s/%3C/\\\&lt\;/g;s/%3E/\&gt\;/g;" >> $Conversions
      echo "s/%5C/\\\/g;s/%B0/°/g" >> $Conversions
      echo "s/%E0/à/g;s/%E2/â/g" >> $Conversions
      echo "s/%E8/è/g;s/%E9/é/g;s/%EA/ê/g;s/%EB/ë/g" >> $Conversions
      echo "s/%EE/î/g;s/%EF/ï/g" >> $Conversions
      echo "s/%F4/ô/g" >> $Conversions
      echo "s/%F9/ù/g;s/%FB/û/g" >> $Conversions
      echo "s/%25/%/g;" >> $Conversions
      echo "s/%28/(/g;s/%29/)/g;" >> $Conversions
      echo "s/%2B/+/g;" >> $Conversions
      echo "s/%3A/:/g;" >> $Conversions
      echo "s/%3D/=/g;" >> $Conversions
      echo "s/%5B/[/g;" >> $Conversions
      echo "s/%5D/]/g" >> $Conversions
      echo "s/%3B/;/g;s/%2F/\//g;s/%27/''/g" >> $Conversions
      echo 's/%22/"/g' >> $Conversions
      echo "s/%C3%A7/ç/g;s/%E7/ç/g" >> $Conversions
      echo "s/%C3%A0/à/g;s/%C3%A2/â/g" >> $Conversions
      echo "s/%C3%A9/é/g;s/%C3%A8/è/g;s/%C3%AA/ê/g" >> $Conversions
      echo "s/%C3%AE/î/g;s/%C3%AF/ï/g" >> $Conversions
      echo "s/%C3%B4/ô/g" >> $Conversions
      echo "s/%C3%B9/ù/g;s/%C3%BB/û/g" >> $Conversions
      echo "s/%C2%B7/-/g;s/%C2%AB/«/g;s/%C2%BB/»/g" >> $Conversions
    }
      echo "$(gettext ' The file conversions.dat is created or updated in file : ')" $Conversions
    fi
#O If the first parameter is a project in the books directory
    if test -d $Booksdir/$1; then
#O   Initialize Books variables
      if test -e "$Varsdir/$1.var"; then source $Varsdir/$1.var; 
      else 
        echo -e "$(gettext ' \033[31m'$1' variables not found in '$Varsdir'.\033[0m ')";
        echo -n "Site=" > $Varsdir/$1.var; ls $Booksdir/$1 | grep wikibooks >> $Varsdir/$1.var
        echo "Bookname=$1" >> $Varsdir/$1.var 
#O     Get suffix in Project directory and intialize Suffix
        echo "$(gettext ' Get the suffix in project directory and put it in vars/$1.var : ')"
        if test -e "$Booksdir/$1/$1.contents"; then cat $Booksdir/$1/$1.contents; echo "Suffix=contents" >> $Varsdir/$1.var
        elif test -e "$Booksdir/$1/$1.summary"; then cat $Booksdir/$1/$1.summary; echo "Suffix=summary" >> $Varsdir/$1.var
        elif test -e "$Booksdir/$1/$1.compiled"; then cat $Booksdir/$1/$1.compiled; echo "Suffix=compiled" >> $Varsdir/$1.var
        else echo "$(gettext ' List of links to articles to be analyzed : not found ')"
        fi
      fi
    fi      
#O Print articles to be analyzed and if list-file exist
    echo
    echo -n "$(gettext ' Test if the file $Project/$1.list, exists : ')"; echo "$Booksdir/$1/$1.list"
   if test -e "$Booksdir/$1/$1.list"
    then 
      echo "$(gettext ' Yes, the file exists. ')" 
    else 
      echo -e "$(gettext ' \033[31mNo, '$Booksdir/$1/$1.list' is not yet created.\033[0m ')"
    fi
#O Test if the .prj file exist and print the result
    echo -n "$(gettext ' Test if the file $Project/$1.prj, exists: ')"; echo "$Booksdir/$1/$1.prj"
    if test -e "$Booksdir/$1/$1.prj"
    then echo "$(gettext ' Yes, the file exists. ')" 
    else echo -e "$(gettext ' \033[31mNo, '$Booksdir/$1/$1.prj' is not yet created.\033[0m ')"
    fi
#O If the first parameter is not empty, print the file list in the project diretory
    if test -n $1 
    then echo; echo -e -n "$(gettext ' \033[33mContents in the project directory : ')"; echo -e "$Booksdir/$1 \033[0m"
      ls -al $Booksdir/$1 
    fi
#O Cat Book variables 
    echo; echo -n -e "$(gettext ' \033[33mVariables in the project directory : ')"; echo -e "$Booksdir/$1 \033[0m"
    source $Varsdir/$1.var
    cat $Varsdir/$1.var
#O List the content of local book
    echo; echo -n -e "$(gettext ' \033[33mLink to the local html book : ')"; echo -e "$Booksdir/$1 \033[0m"
    ls -1R $Booksdir/$1/$Site | tail -n 2 | sed "s/:/\//g" | tr -d "\n"; echo; echo
# End header.inc.sh

tests/header.inc/tests_header.inc.bash[modifier | modifier le wikicode]

Exemple de fichier de commande d'un test dans le répertoire ~/Add_appendix/tests/header.inc/.
#! /bin/bash
#P file : tests_header.inc.bash
#P Syntax ./tests_header.inc.bash

VERSION=210522

#O Clean screen
clear
#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    
#O Print test_header.inc.bash version
    echo " test_header.inc.bash version = $VERSION"
    sleep 2
#T    echo "----"    
#O Print command header.inc.sh version
#T    echo "Command header.inc.sh --v to veriy header.inc version"
    ./header.inc.sh --v
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"    
#O Control if the test header.inc.sh file is clean
    echo -e "\033[1;33m Control header.inc.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo -e "\033[1;33m ----  \033[0m"
    grep -n -e "#T\|#O\|#P" header.inc.sh >> text-control.txt
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
#O test header.inc.sh in test-mode
    echo "Command ./header.inc.sh - --t to verify environnement variables"
    echo "  in test mode with first param empty"
    ./header.inc.sh - --t
    echo;echo " wait for 2 sec"
    sleep 5; echo "----"
#O Test with first param empty
    echo "Command ./header.inc.sh without parameter"
    ./header.inc.sh
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"
#O Test, all with option --t 
   echo " All tests whith parameter --t"   
#O List local books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./header.inc.sh LivreTest --t
      elif [ "$Inkey" = "2" ]; then ./header.inc.sh Hélices_de_navires_à_déplacement --t
      elif [ "$Inkey" = "3" ]; then ./header.inc.sh TestBook --t
      elif [ "$Inkey" = "4" ]; then ./header.inc.sh Mkd_\(Extracteur_de_documents\) --t
      elif [ "$Inkey" = "5" ]; then ./header.inc.sh Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./header.inc.sh Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./header.inc.sh Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./header.inc.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs
      elif [ "$Inkey" = "9" ]; then ./header.inc.sh LivreTest --t
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_header.inc.bash

List to tests header.inc[modifier | modifier le wikicode]

sitelist.sh

#!/bin/bash
#H File sitelist to test with 'test_preannex.bash in preannex.sh tests directory
#H Application for source ~/Add_appendix/datas/sitelist in 'test_preannex.bash'
#H   or ./sitelist in datas directory in executable mode
#H Create 14/05/2021 by GC
#H Updated 16/05/2021 by GC
#P Make sitelist.txt : ./sitelist > sitelist.txt in datas directory
#
echo "sitelist to test annex programs"
echo -e "\033[47m \033[1;32m   Books with Contents or Summary   \033[0m"
echo " 1 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu --t"
echo " 2 - https://fr.wikibooks.org/wiki/Hélices_de_navires_à_déplacement/Sommaire --t"
echo " 3 - https://en.wikibooks.org/wiki/User:Goelette_Cardabela/sandbox/TestBook/Content --t"
echo " 4 - https://fr.wikibooks.org/wiki/Mkd_\(Extracteur_de_documents\)/Sommaire --t"
# echo -e "\033[47m \033[1;32m   Books with Contents or Summary   \033[0m"
echo -e "\033[47m \033[1;32m             Collections            \033[0m"
echo " 5 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel --t"
echo -e "\033[1;31m  Same book second title \033[0m"
echo " 6 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel --t"
echo " 7 - https://en.wikibooks.org/wiki/Wikibooks:Collections/Guide_to_Unix --t"
echo " 8 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/Tests_de_la_capacit%C3%A9_des_batteries_d%27accumulateurs"
echo " 9 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/LivreTest --t"
# echo -e "\033[47m \033[1;32m   Books with Contents or Summary   \033[0m"
echo -e "\033[47m \033[1;32m          Atypical variants         \033[0m"
echo -e "\033[1;31m  Copy the line (Ctrl-Shift-C) and execute in terminal (Ctrl-Shift-V) \033[0m"
echo " xdg-open https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé"
echo " xdg-open https://fr.wikibooks.org/w/index.php?title=Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé&action=edit"

text list for tests[modifier | modifier le wikicode]

Sitelist.txt

sitelist to test annex programs
�[47m �[1;32m   Books with Contents or Summary   �[0m
 1 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Sandbox/LivreTest/Contenu --t
 2 - https://fr.wikibooks.org/wiki/Hélices_de_navires_à_déplacement/Sommaire --t
 3 - https://en.wikibooks.org/wiki/User:Goelette_Cardabela/sandbox/TestBook/Content --t
 4 - https://fr.wikibooks.org/wiki/Mkd_\(Extracteur_de_documents\)/Sommaire --t
�[47m �[1;32m             Collections            �[0m
 5 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_fleurir_le_sel --t
�[1;31m  Same book second title �[0m
 6 - https://fr.wikibooks.org/wiki/Wikilivres:Compilations/Faire_sa_fleur_de_sel --t
 7 - https://en.wikibooks.org/wiki/Wikibooks:Collections/Guide_to_Unix --t
 8 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/Tests_de_la_capacit%C3%A9_des_batteries_d%27accumulateurs
 9 - https://fr.wikibooks.org/wiki/Utilisateur:Goelette_Cardabela/Compilations/LivreTest --t
�[47m �[1;32m          Atypical variants         �[0m
�[1;31m  Copy the line (Ctrl-Shift-C) and execute in terminal (Ctrl-Shift-V) �[0m
 xdg-open https://fr.wikibooks.org/wiki/Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé
 xdg-open https://fr.wikibooks.org/w/index.php?title=Auto-éditer_un_wikilivre/Auto-référencer/LivreTest/LivreTest.compilé&action=edit
 


Add appendix
annex.sh
Éditeur : Goelette Cardabela


annex.sh[modifier | modifier le wikicode]

L'internationalisation des messages est à reprendre Bien avancé vβ 210616

Remarquelink={{{link}}}

incomplet en raison de l'absence des commandes compose.
testabble jusqu'à la commande sclt.sh inclue.

Annex.sh[modifier | modifier le wikicode]

  1. #!/bin/bash
    #H File    : annex and-or annex.sh
    #H Version initiale : 2020-05-24
    #H Syntax  : annex [ <book-name> || ? ] [ -v ] [ -pb || -pc ]
    #H Example : ./annex TestBook (on the terminal for unit tests)
    #H Creation: 2020-03-24 by GC
    #H           see https://fr.wikibooks.org/w/index.php?title=Auto-éditer_un_wikilivre/Auto-référencer#Entête_des_modules
    #H Updated : 2020-05-15 by GC
    #H Updated : 2020-05-24 by GC to translate
    #H Updated : 2021-04-02 by User GC
    #H Last update : 2021-04-22 for tests in tests dir 2-annex.sh
    #H Update on fr:Wikibooks : 2021-03-26 incomplet
    #H
    
    #P header.inc is included in each module for its individual test and 
    #P   permanently in this command file 'annex'.
    
    #P export permanently ~/Add_appendix/bin in ~/.bashrc file : www is not recommended 
    #P echo "export PATH=$PATH:/home/user/mes_prog" >> /home/user/.bashrc 
    #P
    #P export ~/Add_appendix/bin for this session only
    #T export PATH=$PATH:~/Add_appendix/bin 
    #T env | grep Add_appendix
    
    #P . gettext for translation
    . gettext.sh
    
        VERSION=210616
        if [ "$1" = "--v" ]; then echo "Annex version $VERSION"; exit 0; echo; fi
    
        ADD_APPENDIX=$HOME/Add_appendix
    
    #P If first param is empty print the syntax and exit
        if [ -z $1 ]
        then
          echo "$(gettext ' No Parameter ')"
          echo "$(gettext ' Syntax : ~/Add-appendix/bin/annex [ <book/contents url> | <Collections/book url> | ? ] [ -v ] [ -pb | -pc ] ')"; 
          exit 0;
        fi 
            
    #P If help whis the '?' character
        if [ "$1" = "?" ]
        then 
        {
          clear
          echo "$(gettext ' Syntax : ')"
          echo "$(gettext '   annex [ <book/contents url> | <collections/book url> | ? ] [ -v ] [ -pb | -pc ] ')"
          echo "$(gettext '   Options : ')"
          echo "$(gettext '     annex ?, to display the command syntax. ')"
          echo "$(gettext '     -pb for personal version with illustrations on Wikibooks. ')"
          echo "$(gettext '     -pc for personal version with illustrations on Commons. ')"
          echo "$(gettext '     -v  verbose mode. ')"
          exit 0
        }
        fi
    
        if [ -e ~/Add_appendix/vars/installdir.var ]; 
        then 
          source ~/Add_appendix/vars/installdir.var
          echo "datas/installdir.var is found in annex command"; echo
          Bindir=$Installdir/bin
          Testsdir=$Workdir/tests
        else
          echo -n "current directory in $0 "
          pwd
          echo "~/Add_appendix/vars/installdir.var not found in $0 command"
          exit -1
        fi
    
    #T echo "Install directory = $Installdir"
    #T echo "Working directory = $Workdir"
    #T echo "Bin directory = $Bindir"
    #T echo "Tests directory = $Testsdir"
    #T Test break exit 0
    
    #P Include header.inc in binary environnment ~/Add_appendix/bin
        if test -e "$Bindir/header.inc"
        then
          echo "header.inc found in $Bindir"
          source $Bindir/header.inc
        else echo "copy header.inc to $Bindir to continue"; exit -1
        fi
        
    #T Spotting
        echo "*** 'annex' command ***"
        
    #T Test env | grep Add_appendix
        #T echo "Installdir : "$Installdir
    
    #P Initializing modes 
        Verbose="false"
        Personal="false"
        Personalwb="false"
        Personalco="false"   
    #T Breakpoint exit 0
        if (("$#" > "1"))    
        then
          if [ "$2" = "-v" ]
          then
            Verbose="true";
          fi
          if [ "$2" = "-pb" ]
          then
            Personalwb="true"; Personal="true";
          fi
          if [ "$2" = "-pc" ]
          then
            Personalco="true"; Personal="true";
          fi
        fi
        if (("$#" == "3"))
        then
          if [ "$3" = "-v" ]
          then
            Verbose="true";
          fi
          if [ "$3" = "-pb" ]
          then 
            if test "$Personalco" = "false" 
            then 
              Personalwb="true"; Personal="true" 
            else 
              echo "$(gettext ' -annex- Error at command line, parameter three :$3 incompatible with parameter two :$2 ')" 
              exit 1 
            fi;
          fi
          if [ "$3" = "-pc" ]
          then if test "$Personalwb" = "false"; then Personalco="true"; Personal="true"; 
          else echo "$(gettext ' Error at command line, parameter three :$3 incompatible with parameter two :$2 ')"; exit 1; fi;
          fi
        fi
        if (("$#" > "3"))    
        then  
          echo "$(gettext ' -annex- Error : too many parameters ! ')"
          echo "$(gettext ' ./annex ? to display the syntax. ')"
          exit 1
        fi
    
    #P Print variables from the command line
        echo "$(gettext ' The variable Verbose is  initialised at : ')"$Verbose
        echo "$(gettext ' The variable Personalwb is initialised at : ')"$Personalwb
        echo "$(gettext ' The variable Personalco is initialised at : ')"$Personalco
        echo "$(gettext ' The variable Personal is initialised at : ')"$Personal
        echo ""
    #T Test break exit 0  
    
    #P Print files in project directorie, and delete the files according to the answer
        echo "$(gettext ' -Command annex- Files in project directory : ')"
        ls $Project
        echo "$(gettext ' Delete in the project directory : *.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list ? ')"
        echo -e "$(gettext ' \033[31m 'y' to approve the deletion. \033[0m  ')" 
        echo "$(gettext '  Return to continue, Ctrl-C to exit. ')"
        read -n1 -p -s Inkey
        echo "$(gettext ' Inkey = ')"$Inkey
        if [ "$Inkey" = "y" ]
        then 
        {
          cd $Project
          echo -e "$(gettext ' \033[31mDeleting files.\033[0m  ')"
          rm -R *.html *.str *.img *.lnk tmp temp *.tmp *.temp *.list
        }
        else echo "$(gettext ' No file deletion ! ... Continue ... ')"
        fi
         echo "WAIT ..."
        
        if test -d $Workdir/temp/Report-verbose-mode; then rm $Workdir/temp/Report-verbose-mode/*.txt; echo -n "" ; else mkdir $Workdir/temp//Report-verbose-mode; fi;
        if test -d $Workdir/temp/Report-silent-mode; then rm $Workdir/temp/Report-silent-mode/*.txt; echo -n "" ; else mkdir $Workdir/temp/Report-silent-mode; fi;
        
    #T Print Install directory echo "Installdir : in annex command : $Installdir"
    
    #P Running list
        if [ $Verbose = "true" ]
        then $Bindir/list $1
        else $Bindir/list $1 > $Workdir/temp/Report-silent-mode/list-cmd.txt
        fi     
    #P Return value from list
        Return=$?
        if [ $Return -gt '0' ]
        then
          echo "$(gettext ' Error in shell module list in silent mode. See $Workdir/temp/Report-silent-mode/list-cmd.txt ')"
          exit 1
        fi
    #T Breakpoint exit 0
    
    #P Running downloads
        if [ $Verbose = "true" ]
        then $Bindir/download $1
        else $Bindir/download $1 > $Workdir/temp/Report-silent-mode/download-cmd.txt      
        fi  
    #P Return value from downloads
        Return=$?
        if [ $Return -gt '0' ]
        then
          echo "$(gettext ' Error in shell module download in silent mode. See $Workdir/temp/Report-silent-mode/download-cmd.txt ')"
          exit 1
        fi
    
    #P Running add_sclt
        if [ $Verbose = "true" ]
        then   
          $Bindir/add_sclt $1
        else
          $Bindir/add_sclt $1 > $Workdir/temp/Report-silent-mode/add_sclt-cmd.txt
        fi       
    #P Return value from add_sclt        
        Return=$?
        if [ $Return -gt '0' ]
        then
          echo "$(gettext ' Error in shell module add-sclt in silent mode. See $Workdir/temp/Report-silent-mode/add_sclt-cmd.txt ')"
          exit 1
        fi
    #T test break
    exit 0
    #P Running add_sclic
        if [ $Personal = "false" ]
        then
          if [ $Verbose = "true" ]
          then
            $Bindir/add_sclic
          else
            $Bindir/add_sclic $1 > $Workdir/Report-silent-mode/add_sclic-cmd.txt
          fi 
          cat $Project/$1.sclic > $Project/$1.scli
        fi
    #P Return value from add_sclic     
        Return=$?
        if [ $Return -gt '0' ] && [ $Personal = "false" ];
        then
          echo "$(gettext ' Error in shell module add_sclic in silent mode. See Silent-mode/add_sclic-cmd.txt ')"
          exit 1
        fi        
          
    #P If option -pc is validated, running sclipco.sh
        if [ "$Personalco" == "true" ]
        then
          if [ "$Verbose" == "true" ]; then $Bindir/sclipco $1; else $Bindir/sclipco $1 > $Workdir/Report-silent-mode/sclipco-cmd.txt; fi;
          echo "$(gettext ' sclipco has been executed ')";
        fi
    #P Return value from slipco
        Return=$?
        if [ $Return -gt '0' ] && [ $Personalpc = "true" ];
        then
          echo "$(gettext ' Error in shell module slipco. See Silent-mode/sclipco-cmd.txt ')"
          exit 1
        fi     
        
    #P If option -pb is validated, running sclipw
        if [ "$Personalwb" == "true" ]
        then
          if [ "$Verbose" == "true" ]; then $Bindir/sclipwb.inc $1; else $Bindir/sclipwb.inc $1 > $Workdir/Report-silent-mode/scliwb-cmd.txt; fi;
          echo "$(gettext ' sclipwb has been executed ')";
        fi
        if [ $Return -gt '0' ] && [ $Personalwb = "true" ];
        then
          echo "$(gettext ' Error in shell module slipwb. See See Silent-mode/scliwb-cmd.txt ')"
          exit 1
        fi  
    
    #P Flush article, source lisence ant text to project.appendix
        cd $Project
        cat $1.sclt > $1.appendix
    
    #P ? sclip.inc ...?
    #    if [ $Personal == "true" ]
    #    then cat $Project/$1.sclip >> $Project/$1.appendix; echo "$(gettext ' $1.sclip is added to $1.appendix ')";
    #    else
    #      cat $1.sclic >> $1.appendix; echo "$(gettext ' $1.sclic is copied to $1.appendix ')";
    #    fi
    
          echo "$(gettext ' == License == ')" >> $1.appendix
          cat $1/$1.license >> $1.appendix
          echo "" >> $1.appendix
          #P echo "{{Nouvelle page imprimée}}" >> $1.appendix
          #P echo "{{Page-break/end}}" on en:wikibooks >> $1.appendix
          echo "$(gettext ' <br style=\"page-break-after: always\"> ')" >> $1.appendix
          
    echo ""
    echo ""
    echo ""
    echo "$(gettext ' Copy the contents of the file "$1/appendix" to the 'appendix' page of the book  ')"$1.
    exit 0
    # End annex command
    

Global test[modifier | modifier le wikicode]

#! /bin/bash
#P file : tests_annex.sh
#P Syntax ./tests_annex.sh

clear
VERSION=210616
echo "test_annex.bash VERSION = $VERSION"

Workdir=~/Add_appendix

./annex.sh --v
echo;echo " wait for 2 sec"
sleep 2

#T test with $1 empty
./annex.sh
echo;echo " wait for 2 sec"
sleep 2

clear
./annex.sh ?
echo;echo " wait for 5 sec"
sleep 3

clear
#./annex.sh LivreTest
#echo;echo " wait for 3 sec"
#sleep 3

#O annex local books for tests
    Inkey=1
    cat $Workdir/tests/sitelist.txt; echo
    for i in 'seq 1 9'
    do 
      #cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./annex.sh LivreTest
      elif [ "$Inkey" = "2" ]; then ./annex.sh Hélices_de_navires_à_déplacement
      elif [ "$Inkey" = "3" ]; then ./annex.sh TestBook
      elif [ "$Inkey" = "4" ]; then ./annex.sh Mkd_\(Extracteur_de_documents\)
      elif [ "$Inkey" = "5" ]; then ./annex.sh Faire_fleurir_le_sel
      elif [ "$Inkey" = "6" ]; then ./annex.sh Faire_sa_fleur_de_sel     
      elif [ "$Inkey" = "7" ]; then ./annex.sh Guide_to_Unix
      elif [ "$Inkey" = "8" ]; then ./annex.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs
      elif [ "$Inkey" = "9" ]; then ./annex.sh LivreTest
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_add_sclt.bash


Add appendix
list.sh
Éditeur : Goelette Cardabela


list.sh[modifier | modifier le wikicode]

En finition/En voie de finition? terminaison? vβ 210523

Remarquelink={{{link}}}

Les messages en anglais sont introduits pour l'internalisation avec gettext.
les commentaires #P pour les programmeurs sont en anglais, les autres commentaires ont été réduits au minimum.

list.sh[modifier | modifier le wikicode]

#! /bin/bash
#H File list.sh
#H Syntax in console : "./bin/list.sh <bookname>"
#H Example : "./liste.sh LivreTest" à la console.
#H Creation date : 2020-03-26
#H Modified : 2020-04-26 by GC
#H Modified : 2020-05-30 by GC for automatic installation
#H Modified : 2020-06-30 by GC to include Summary pages at the list files
#H Modified : 2021-03-17 by GC for internationalization
#H modified : 2021-03-21 by GC for for layout
#H modified : 2021-05-21 by GC Reconstructed version
#H modified by Clara 23/05/2021 résolution provisoire du problème de la 
#H   variable $Projectdir pour les livres avec des Sommaires
#H
#D list.sh documentation
#D Creates the list of files included in the pages
#D header.inc is included and there is no need to recreate the environment
#D   variables
#D Suffix available for bookname.suffix : compiled, summary, contents
#D
VERSION=210523
#O . gettext.sh for translation
   . gettext.sh
#O Include the file header.inc
    if test -e ~/Add_appendix/bin/header.inc; then source ~/Add_appendix/bin/header.inc
    else echo "$Bindir/header.inc not found. Execute sbin/cp-src2bin.sh"; exit -1
    fi
#w Initialize the project list in project directory 
#w  If the book is included at the root of wikibooks
#w   echo "https://$Site/wiki/$1" > $Project/$1.list
#w  Else take the url into account
#O Code extraction as appropriate case  
#O   Case compiled pages for PediaPress. Lines syntax :[[Book article]]
    SitePrefix=https:\/\/$Site\/wiki\/
    if test -e "$Projectdir/$1.compiled"
    then 
      {
        echo "$(gettext ' Found Compiled page : ')$Project/$1.compiled"; echo
        echo " create $Projectdir/$1.list with :"; echo "    $Projectdir/$1.compiled"; echo
        cat "$Projectdir/$1.compiled" | sed -f ~/Add_appendix/datas/content_cleaner.dat > $Projectdir/$1.compiled.cleaned
        cat "$Projectdir/$1.compiled.cleaned" | grep -v '=' | sed "s/\[\[/https:\/\/$Site\/wiki\//g" | sed "s/\]\]//g" | grep "wiki" | tr ' ' '_' | cut -d '|' -f1 > $Projectdir/$1.list
        cat "$Projectdir/$1.compiled.cleaned" | grep -v '=' | sed "s/\[\[//g" | sed "s/\]\]//g" | cut -d '|' -f1 > $Projectdir/$1.prj
      }
#O   Case contents suffix  
    elif test -e "$Projectdir/$1.contents"
    then 
      {
        echo "$(gettext ' Found contents page : ')$Projectdir/$1.contents"; echo
        echo " create $Projectdir/$1.list with :"; echo "    $Projectdir/$1.contents"; echo
#O     The book must be included at the root of wikibooks
        echo "$Bookfullurl" > $Project/$1.list
        echo " Do not use {{BASEPAGENAME}} in Contents page"
        cat "$Projectdir/$1.contents" | sed -f ~/Add_appendix/datas/content_cleaner.dat > $Projectdir/$1.contents.cleaned
        cat "$Projectdir/$1.contents.cleaned" | grep -v '=' | sed "s/\[\[/https:\/\/$Site\/wiki\//g" | sed "s/\]\]//g" | grep "wiki" | tr ' ' '_' | cut -d '|' -f1 > $Projectdir/$1.list
        cat "$Projectdir/$1.contents.cleaned" | grep -v '=' | sed "s/\[\[//g" | sed "s/\]\]//g" | cut -d '|' -f1 > $Projectdir/$1.prj
      }
#O   Case Summary suffix
    elif test -e "$Workdir/books/$1/$1.summary"
    then
      {
#w      Check upstream $Projectdir is not validaded for 'summary'
        Projets=$Workdir/books
        echo "$(gettext ' Found Summary page : ')"$Projets/$1/$1.summary; echo
        echo " create $Projets/$1/$1.list with :"; echo "    $Projets/$1/$1.summary"; echo
#O     The book must be included at the root of wikibooks
        echo "$Bookfullurl" > $Projets/$1/$1.list
        echo " Do not use {{BASEPAGENAME}} in Summary page"
        cat "$Projets/$1/$1.summary" | sed -f ~/Add_appendix/datas/content_cleaner.dat > "$Projets/$1/$1".summary.cleaned
        cat "$Projets/$1/$1.summary.cleaned" | grep -v '=' | sed "s/\[\[/https:\/\/$Site\/wiki\//g" | sed "s/\]\]//g" | grep "wiki" | tr ' ' '_' | cut -d '|' -f1 >> $Projets/$1/$1.list
        cat "$Projets/$1/$1.summary.cleaned" | grep -v '=' | sed "s/\[\[//g" | sed "s/\]\]//g" | cut -d '|' -f1  > "$Projets/$1/$1".prj
      }
    #else echo "bookname.suffix : $1.$Suffix not found"
    fi
#O Print file Project.list and file Project.prj
    echo
    echo "$(gettext '  File Project.list')"
    cat $Workdir/books/$1/$1.list
    echo
    echo "$(gettext '  File Project.prj')"
    cat $Workdir/books/$1/$1.prj
    echo " "
    read -p "If all OK : return to continue, Ctrl-C to quit > "
# End list.sh

tests_list.bash[modifier | modifier le wikicode]

#! /bin/bash
#P file : tests_list.bash
#P Syntax ./tests_list.bash

VERSION=210522

#O Clean screen
    clear
#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
#O Print test_header.inc.bash version
    echo " test_list.bash version = $VERSION"
    sleep 2
#T    echo "----"
#O Control if the test list.sh file is clean
    echo -e "\033[1;33m Control list.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo -e "\033[1;33m ----  \033[0m"
    grep -n -e "#T\|#O\|#P" list.sh >> text-control.txt
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
#O test list.sh in test-mode
    echo "Command ./list.sh - --t to verify environnement variables"
    echo "  in test mode with first param empty"
    ./list.sh - --t
    echo;echo " wait for 2 sec"
    sleep 5; echo "----"
#O Test with first param empty
    echo "Command ./list.sh without parameter"
    ./list.sh
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"
#O Test, all with option --t 
   echo " All tests whith parameter --t"   
#O List local books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./list.sh LivreTest --t
      elif [ "$Inkey" = "2" ]; then ./list.sh Hélices_de_navires_à_déplacement --t
      elif [ "$Inkey" = "3" ]; then ./list.sh TestBook --t
      elif [ "$Inkey" = "4" ]; then ./list.sh Mkd_\(Extracteur_de_documents\) --t
      elif [ "$Inkey" = "5" ]; then ./list.sh Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./list.sh Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./list.sh Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./list.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs
      elif [ "$Inkey" = "9" ]; then ./list.sh LivreTest --t
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_header.inc.bash

content_cleaner.dat[modifier | modifier le wikicode]

Ce fichier supprime l'espace après ';' et ": ", ':', "* ", '*' "# ", '#' devant la parenthèse '['

S'utilise de la façon suivante :

echo "Chaîne de caractères" | sed -f $Datasdir/content_cleaner.dat

ou :

cat "$Bookname.$Suffix" | sed -f $Datasdir/content_cleaner.dat > "$Bookname.$Suffix.cleaned"

s/: \[/\[/g;s/:\[/\[/g
s/# \[/[/g;s/#\[/\[/g
s/* \[/[/g;s/*\[/\[/g
s/; /;/g 


Add appendix
download.sh
Éditeur : Goelette Cardabela


download.sh[modifier | modifier le wikicode]

En finition/En voie de finition? terminaison? vβ 210528

download.sh[modifier | modifier le wikicode]

#! /bin/bash
#H File download.sh
#H Syntax in console : "./bin/dowload <bookname>"
#H Example : "./download.sh LivreTest" in test mode in a terminal
#H Creation date : 28/03/2020
#H Modified : 26 april 2020 par GC
#H Modified : 30 may 2020 par GC for automatic insrallation
#H Modified : 27 may 2021 for Add_Appendix
#H Documentation version de la documentation on WikiLivres le : 26 april 2020
#H
#D download.sh documentation
#D header.inc is included and there is no need to recreate the environment
#D   variables
#D Download creates or recreates a local html book with html subdirectories of all articles
#D Create a concatenated sub-list locale.list of the book from book articles-list 
#D To document the book with its subpages :
#D Create a directory containing the main html page of the book and local directories 
#D   containing an html version of the articles 
#D
VERSION=210619
#O . gettext.sh for translation
   . gettext.sh
#O Include the file header.inc
    if test -e ~/Add_appendix/bin/header.inc; then source ~/Add_appendix/bin/header.inc
    else echo "$Bindir/header.inc not found. Execute sbin/cp-src2bin.sh"; exit -1
    fi
#O Download the complete book structure in working directory
    Projectdir=$Workdir/books/$1
    cd $Projectdir
    mkdir temp
    if [ "$2" = "--t" ]; then echo "current dir : "; pwd; fi
    echo "download all directories of the book '$1'"
    wget -r -linf -k -p -E  -i $1.list -o $Projectdir/temp/wget-log-download.txt
    echo "----------"
#O Move the html pages into working sub-directories to document the pages and sub pages
#O   create a local list to the downloaded directories $ Projectdir/$1.locale.list
      echo "create the complete concatenated hierarchy of the directories of the book '$1'"
      cat $Projectdir/$1.list | sed "s/https:\/\///g" | sed "s/\ /\\\ /g" | tr '\n' ',' > $Projectdir/$1.locale.list
      echo "   Concatenated local list $Projectdir/$1.locale.list :"
      echo ""
      cat $Projectdir/$1.locale.list
      echo "----------"
#O Copy the html files to respective directories
#O   Create a file with the pagename $Projectdir/$1.mainPage
      echo "créer la page du lien local vers la page principale, 'le livre'."
      echo "create the page from the local link to the main page, 'the book'"
      cat $Projectdir/$1.locale.list | sed "s/ /\\ /g" | cut -d ',' -f1 > $Projectdir/$1.mainPage
      echo "----------"
#O   Initialize the variable $mainPage
      read mainPage < $Projectdir/$1.mainPage
      echo "variable mainPage = $mainPage"     
    #T cat $Projet/$1.mainPage | awk -F"/" '{print NF}' > nbchamps
    #T read NbChamps < nbchamps
    #T echo "Variable NbChamps = $NbChamps"
      echo "----------"
#O   Create a file of the working directories to be created.
      ls "$mainPage" | sed "s/.html//g"  > $Projectdir/$1.dirs
      echo "sub-working-diectories : "
      cat  $Projectdir/$1.dirs
      echo "----------" 
#O   Copy the html pages and subpages in the respective directories
      while read line
      do
        echo "$line".html | sed "s/https:\/\///g" | tr '\n' ' ' > source
        read Source < source
        echo "Source = $Source"

        echo "$line" | awk -F"/" '{ print $NF }'| tr '\n' '/' > destination 
        read dir < destination
        mkdir $dir
        echo "$line".html | awk -F"/" '{ print $NF }' >> destination
        read Destination < destination
        echo "Destination = $Destination"
        echo "To copy : 'cp -f ./$Source $Destination'"
        cp -f "./$Source" "$Destination"
      done < $Projectdir/$1.list
      rm source ; rm destination
#O Quitter le programme d'essai et passer à la création de la page "Annexe" des articles.
    echo "----------"
# echo -en "\033[31mRetour-chariot une pour créer l'Annexe des articles, Ctrl-C pour quitter.\033[0m "
# read -p ">"
# "\033[31mRetour-chariot une pour créer l'Annexe, Ctrl-C pour quitter >"
# exit 0
# End download.sh

tests_download.sh[modifier | modifier le wikicode]

#! /bin/bash
#P file : tests_download.bash
#P Syntax ./tests_download.bash

VERSION=210528

#O Clean screen
    clear
#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
#O Print tests_download.bash version
    echo " tests_download.bash version = $VERSION"
    sleep 2
#T    echo "----"
#O Control if the test download.sh file is clean
    echo -e "\033[1;33m Control download.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo -e "\033[1;33m ----  \033[0m"
    grep -n -e "#T\|#O\|#P" download.sh >> text-control.txt
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
#O test download.sh in test-mode
    echo "Command ./download.sh - --t to verify environnement variables"
    echo "  in test mode with first param empty"
    ./download.sh - --t
    echo;echo " wait for 2 sec"
    sleep 5; echo "----"
#O Test with first param empty
    echo "Command ./download.sh without parameter"
    ./download.sh
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"
#O Test, all with option --t 
   echo " All tests whith parameter --t"   
#O download local books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./download.sh LivreTest --t
      elif [ "$Inkey" = "2" ]; then ./download.sh Hélices_de_navires_à_déplacement --t
      elif [ "$Inkey" = "3" ]; then ./download.sh TestBook --t
      elif [ "$Inkey" = "4" ]; then ./download.sh Mkd_\(Extracteur_de_documents\) --t
      elif [ "$Inkey" = "5" ]; then ./download.sh Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./download.sh Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./download.sh Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./download.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs
      elif [ "$Inkey" = "9" ]; then ./download.sh LivreTest --t
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_download.bash


Add appendix
add_sclt.sh
Éditeur : Goelette Cardabela


add_sclt.sh[modifier | modifier le wikicode]

En finition/En voie de finition? terminaison?

add_sclt.sh[modifier | modifier le wikicode]

cette commande se décompose en un programme principal et des sous programmes en français et en anglais d'autres langues peuvent s'ajouter en fonction des livres de sites wikibooks autres que français et anglais

#! /bin/bash
#HF Fichier : add_sclt.sh
#HF Nom du fichier de commandes : add_sclt
#HF Syntaxe : "add_sclt <nom du livre> [ --t ]"
#HF Exemple : "./add_sclt LivreTest --t" à la console.
#HF Date de création : 12 avril 2020
#HF Modifié le : par GC le 1er mai 2020
#HF Modifié le : par GC pour l'installation automatique.
#HF Adapté le 28 mai 2021 pour la version Add_appendix
#HF Version de la documentation sur WikiLivres le : 30 avril 2020
#HF
#HF LES FICHIERS DE COMMANDES 
#HF
#HF## header.sh ##############
#HF header.sh, a créé le répertoire des commandes si celui-ci ne préexistait pas
#HF   il a vérifié la validité ou invalidé de ligne de commande, initialisé
#HF   les variables $Projet, $Site, $SitePrefix, vérifié l'existence des
#HF   fichiers de liste "$Projet/$1".list et "$Projet/$1".prj, puis affiché le
#HF   contenu du répertoire de travail.
#HF
#HF## lister #################
#HF lister a créé le fichier de liste $Projet/$1.list par l'extraction du fichie
#HF   fichier $Projet/$1.contenu, copie de la page "Contenus" de la version
#HF   imprimable du livre, ou du fichier $Projet/$1.compilé issu d'une
#HF   compilation destinée à la publication par PediaPress.
#HF   il crée aussi le fichier $Projet/$1.prj qui conserve l'ordre d'affichage
#HF de la publication.
#HF
#HF## télécharger ############
#HF la commande aura téléchargé toutes les page du livre et aura copié les pages
#HF   html dans des répertoires qui leurs sont dédiés pour y extraire toute la
#HF   documentation nécessaire à la création de la page "Annexe" du livre.
#w      à ce stade, pour les tests; on dispose des répertoires de travail :
#w      LivreTest, ArticleUn, ArticleDeux, ArticleTrois 
#HF   qui contiennent chacun le fichier html de la page ou de l'article qui le
#HF   concerne.
#HF   L'ensemble de commandes aura créé les fichiers de listes :
#HF   $Projet/$1.dirs, $Projet/$1.list, $Projet/$1.mainPage, $Projet/$1.prj
#HF
#DF La commande ./add_sclt <wikilivre> commence par créer la page
#DF   $Projet/$1.sclt comme elle apparaîtra dans la première partie de la page
#DF   "Annexe" du livre avec les titre en wikitexte et les sections :
#DF   Références: toutes celles qui n'ont pas été affichées dans les pages.
#DF   Contenus: liens établis vers la page du livre et les articles (sous-pages)
#DF   Source de l'édition: lien vers la page qui a permis de créer l' "Annexe".
#DF   Sources licences et contributeurs des articles: ne concerne que les
#DF   articles, les sous-pages.
#DF
#DE the command ./add_sclt <Wiki-book>[--t], first create the page 
#DE   $ Project / $ 1.sclt as it will appear in the "Appendix" page with the 
#DE   titles and Wikitext sections:
#DE   References : all references not referenced in articles
#DE   Contents : links to book articles
#DE   Sources of the edition : link to the page that allows you to create the
#DE     annex page
#DE   Licenses sources and article contributors : only articles and sub-pages
#DE
#www English sclt files will probably be with translation

VERSION=210622
#O . gettext.sh for translation
   . gettext.sh
if [ "$0" = "./add_sclt" ]; then echo "add_sclt : Version "$VERSION; fi
#O Include the file header.inc
    if test -e ~/Add_appendix/bin/header.inc; then source ~/Add_appendix/bin/header.inc
    else echo "$Bindir/header.inc not found. Execute sbin/cp-src2bin.sh"; exit -1
    fi
#O Create variable PageSclt
    Projectdir=$Workdir/books/$1
    PageSclt="$Projectdir/$1.sclt"
    echo $PageSclt
    if [ "$2" = "--t" ]; 
    then 
    {
      pwd > pwd.txt; read Localdir < pwd.txt; rm pwd.txt
      if [ "$Site" = "fr.wikibooks.org" ]; then source $Localdir/fr_sclt.inc.sh
      else source $Localdir/en_sclt.inc.sh
      fi
    }
    else
      if [ "$Site" = "fr.wikibooks.org" ]; then source $Bindir/fr_sclt.inc
      else source $Bindir/en_sclt.inc
      fi
    fi
# End of add_sclt.sh

fr_sclt.inc[modifier | modifier le wikicode]

#! /bin/bash
#H Fichier : fr_sclt.inc pour inclure dans add_sclt.sh
Version=210614
cd $Projectdir
#T echo "Projectdir : $Projectdir" exit 0
#O but final: créer la page "Annexe" avec les pages Projet.sclt et Projet.scli.
#O ---
#O Créer la page PageSclt=$Projectdir/$1.sclt et afficher son contenu.
echo "créer la page $Projectdir/$1.sclt"
echo "----------"
echo "= Annexe =" > "$Projectdir/$1.sclt"
echo "" >> $Projectdir/$1.sclt

#O Ajouter la balise <references />
echo "== Références ==" >> "$PageSclt"
echo "<references />" >> "$PageSclt"
echo " "  >> "$PageSclt"
echo "{{Nouvelle page imprimée}}" >> "$PageSclt"

#? (option) ajouter la liste créée avec la page "Contenus" de la version imprimable ou la page compilée ?
#O ajouter le lien vers : la page du livre imprimable, et vers les articles.
echo "== Contenus ==" >> $PageSclt
echo "<div style="font-zize:85%";>" >> $PageSclt
cat $Projectdir/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/\n\n/g" >> $PageSclt
echo "</div>" >> $PageSclt

#0 Ajouter lien vers la source de cette édition.
echo "=== Source de cette édition ===" >> $PageSclt
echo "<div style="font-zize:85%";>" >> $PageSclt
echo -n "https://" >> $PageSclt
cat $Projectdir/$1.mainPage | sed "s/\\\ /_/g" >> $PageSclt
#P Autre version : cat $Projectdir/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/%\n/g" | grep $1% | tr -d % >> $PageSclt
echo "</div>" >> $PageSclt
echo " "  >> $PageSclt
echo "{{Nouvelle page imprimée}}" >> $PageSclt

#O Créer la section 'Article', 'Source', 'licence', 'Contributeur(?)'
echo "== Sources licences et contributeurs des articles ==" >> $PageSclt
#O   ajouter le texte : style PediaPress ou personnalisé.
#O   Les ''sources'' listées pour chaque article fournissent des informations
#O   de licence plus détaillées, y compris le statut des droits d'auteurs, les
#O   détenteurs de ces droits et les conditions de licence.
echo "<span style="font-zize:85%";>Les ''sources'' listées pour chaque article fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</span>" >> $PageSclt
#O ou, valider l'un ou l'autre de ces textes : 
#O   Les textes sont disponibles avec leurs licences respectives, cependant
#O   d’autres termes peuvent s’appliquer.<br />
#O   Voyez les termes d’utilisation pour plus de détails :<br /> 
#O   https://wikimediafoundation.org/wiki/Conditions_d'utilisation
# echo "<span style="font-zize:85%";>Les textes sont disponibles avec leurs licences respectives, cependant d’autres termes peuvent s’appliquer.<br />Voyez les termes d’utilisation pour plus de détails :<br />https://wikimediafoundation.org/wiki/Conditions_d'utilisation.</span>" >> $PageSclt
echo " " >> $PageSclt
echo "<div style="font-zize:72%";>" >> $PageSclt

#T exit 0
#T echo -n "Répertoire courant : "
#T pwd
echo "----------"
#O Créer ou recréer le fichier de liste $Projectdir/$1.pj
cat $Projectdir/$1.list | awk -F"/" '{ print $NF }' > $Projectdir/$1.pj
Liste=$Projectdir/$1.pj
echo "Fichier de liste : "$Liste
#T exit 0

#O Tant qu'il y a des lignes dans le fichier de liste,
    while read ligne
    do    
#O    Afficher la ligne lue,
       echo ""
       echo "   ligne lue = "$ligne
       echo ""
#O    Extraire et copier toutes les chaînes de caractères du fichier html
#O      $ligne.html dans le fichier $ligne.str et les dupliquer à l'écran
#T pwd
       mkd -pws '**' "$ligne/$ligne.html" $Projectdir/$ligne/$ligne.tmp | tr ',' '\n' > $Projectdir/$ligne/$ligne.str
#T break
#O    Créer les fichiers de documentation des pages :
       echo "*** Références : articles, src, lic, contrib. "
    
#O    Article,
       if [ $ligne != $1 ]
       then  
         echo "'''"$ligne"'''" >> $PageSclt
       fi
       echo "'''"$ligne"'''" > $Projectdir/$ligne/$ligne.article
       cat $Projectdir/$ligne/$ligne.article
       
#O    Source,
       echo -n ", ''source : ''https://"$Site"/w/index.php?oldid=" > $Projectdir/$ligne/$ligne.RevisionId
       cat $Projectdir/$ligne/$ligne.str | grep -n -m 1 -i -e wgRevisionId | tr -d ':' | sed "s/\"/%/g" | cut -d'%' -f3 >> $Projectdir/$ligne/$ligne.RevisionId
       if [ $ligne != $1 ]
       then          
         cat $Projectdir/$ligne/$ligne.RevisionId  >> $PageSclt
       fi
       cat $Projectdir/$ligne/$ligne.RevisionId
       

#P    licence du bas de page : 
#P    <li id="footer-info-copyright">Les textes sont disponibles sous <a href="https://creativecommons.org/licenses/by-sa/3.0/">licence Creative Commons attribution partage à l’identique</a> ; d’autres termes peuvent s’appliquer.<br/>
#P      Voyez les <a href="https://wikimediafoundation.org/wiki/Conditions_d'utilisation">termes d’utilisation</a> pour plus de détails.<br/></li>
#P
#P    license :
#P    licence s'écrit license en anglais (langage de base en programmation).
#P    <link rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"/>

#T echo ", ''Droits de copie :''"  >> ArticleUn.tmp
#T cat ArticleUn.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 |sed "s/\/\//https:\/\//g"  >> ArticleUn.tmp
#O    Licence :
       echo -n ", ''licence : ''" > $Projectdir/$ligne/$ligne.license
    #T cat $Projectdir/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f4 >> $Projectdir/$ligne/$ligne.license
       cat $Projectdir/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 >> $Projectdir/$ligne/$ligne.license
    #T cat $Projectdir/$ligne/$ligne.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 | sed "s/\/\//https:\/\//g" >> $Projectdir/$ligne/$ligne.license
       if [ $ligne != $1 ]
       then  
         cat $Projectdir/$ligne/$ligne.license >> $PageSclt
       fi
       cat $Projectdir/$ligne/$ligne.license
       #
       #P spécial pour bas de page fr ## 
       cat $Projectdir/$ligne/$ligne.str | grep -n -m 1 -i -e footer-info-copyright | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4  > $Projectdir/$ligne/$ligne.licence

#O    Auteur(s).  
       echo -n ", ''auteur(s) : ''" > $Projectdir/$ligne/$ligne.auteur
       
       cat $Projectdir/$ligne/$ligne.str | grep -n -m 1 -i -e wgRelevantUserName | sed "s/\"/%/g" | cut -d'%' -f4 > tmp
       if test -s tmp; 
         then cat tmp >> $Projectdir/$ligne/$ligne.auteur; rm tmp;
         else 
           echo "Auteur non trouvé ! " >> $Projectdir/$ligne/$ligne.auteur
           if wget --spider https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$ligne 2>/dev/null
           then
             echo ".  éditer : https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$ligne" >> $Projectdir/$ligne/$ligne.auteur
           elif wget --spider https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$Bookname/$ligne 2>/dev/null
           then 
             echo ".  éditer : https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$Bookname/$ligne" >> $Projectdir/$ligne/$ligne.auteur
           else echo ".  éditer ''contributeurs'' du livre ''$Bookname'' historique de la page ''$ligne''"  >> $Projectdir/$ligne/$ligne.auteur
           fi
       fi
       
       if [ $ligne != $1 ]
       then
         cat $Projectdir/$ligne/$ligne.auteur >> $PageSclt
         cat $Projectdir/$ligne/$ligne.auteur
       fi
       
       echo "" >> $PageSclt
       
#O fin du tant que.
    done < $Projectdir/$1.pj #< $Liste
    echo "</div>" >> $PageSclt
    echo "{{Nouvelle page imprimée}}" >> $PageSclt

    if [ "$2" = "--t" ]; then more $PageSclt; fi
    
exit 0
# Fin de fr_sclt.inc

en_sclt.inc[modifier | modifier le wikicode]

Version pour l'internatioalistion avec gettext

#! /bin/bash
#H File : en_sclt.inc include in add at add_sclt.sh
#P . gettext for translation
. gettext.sh
Version=210712
cd $Projectdir
#T echo "Projectdir : $Projectdir" exit 0
#O but final: créer la page "Annexe" avec les pages Projet.sclt et Projet.scli.
#O ---
#O Créer la page PageSclt=$Projectdir/$1.sclt et afficher son contenu.
echo "$Projectdir/$1.sclt creation"
echo "----------"
echo "$(gettext '= Appendix = ')" > "$Projectdir/$1.sclt"
echo >> $Projectdir/$1.sclt

#O Add <references />
echo "$(gettext '== References == ')" >> "$PageSclt"
echo "$(gettext '<references /> ')" >> "$PageSclt"
echo  >> "$PageSclt"
echo "$(gettext '{{Newpage}} ')" >> "$PageSclt"

#? (option) add the la list create with "Contents" page for printable book version or compiled page (collection) ?
#O add the link to printable book and to articles.
echo "$(gettext '== Contents == ')" >> $PageSclt
echo "<div style="font-zize:85%">" >> $PageSclt
cat $Projectdir/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/\n\n/g" >> $PageSclt
echo "</div>" >> $PageSclt

#0 Add the link to the source of this edition.
echo "$(gettext '=== Source for this edition === ')" >> $PageSclt
echo "<div style="font-zize:85%";>" >> $PageSclt
echo -n "https://" >> $PageSclt
cat $Projectdir/$1.mainPage | sed "s/\\\ /_/g" >> $PageSclt
#P other version : cat $Projectdir/$1".list" | tr ' ' '_' | tr '\n' '%' | sed "s/%/%\n/g" | grep $1% | tr -d % >> $PageSclt
echo "</div>" >> $PageSclt
echo " " >> $PageSclt
echo "$(gettext '{{Newpage}} ')" >> $PageSclt

#O Create section 'Article', 'Source', 'License', 'Contributors(?)'
echo "$(gettext '== Articles Sources, and contributors == ')" >> $PageSclt
#O   add the text : style PediaPress or personalized.
#O   The ''sources'' listed for each article provide more detailled licencing
#O   information including the copyright status, the copyleft owner and the license conditions.
echo "$(gettext '<span style="font-zize:85%";>The ''sources'' listed for each article provide more detailled licencing information including the copyright status, the copyleft owner and the license conditions..</span> ')" >> $PageSclt
#O or, validate one or the other of these texts : 
# echo "<span style="font-zize:85%";>The texts are available with their respective licenses, however other terms may apply.<br />See the terms of use for more details : <br />https://wikimediafoundation.org/wiki/Conditions_d'utilisation.</span>" >> $PageSclt
echo " " >> $PageSclt
echo "<div style="font-zize:72%";>" >> $PageSclt






#T exit 0
#T echo -n "Current directory : "
#T pwd
echo "----------"
#O Create or recreate the list-file $Projectdir/$1.pj
cat $Projectdir/$1.list | awk -F"/" '{ print $NF }' > $Projectdir/$1.pj
Pjlist=$Projectdir/$1.pj
echo "Pjlist : "$PjList
#T exit 0

#O While exist line in file $List ,
    while read line
    do    
#O    Print the line read,
       echo
       echo "$(gettext '   line read = ')"$line
       echo
#O    Extract and copy all strings from the fichier html file
#O      $line.html in the file $line.str and add to screen
#T pwd
       mkd -pws '**' "$line/$line.html" $Projectdir/$line/$line.tmp | tr ',' '\n' > $Projectdir/$line/$line.str
#T break
#O    Create the documentation file of pages :
       echo "*** References : articles, src, lic, contrib. "
    
#O    Print article,
       if [ $line != $1 ]
       then  
         echo "'''$line'''" >> $PageSclt
       fi
       echo "'''"$line"'''" > $Projectdir/$line/$line.article
       cat $Projectdir/$line/$line.article
       
#O    Print source,
       echo -n "$(gettext ', ''source : ')''https://"$Site"/w/index.php?oldid=" > $Projectdir/$line/$line.RevisionId
       cat $Projectdir/$line/$line.str | grep -n -m 1 -i -e wgRevisionId | tr -d ':' | sed "s/\"/%/g" | cut -d'%' -f3 >> $Projectdir/$line/$line.RevisionId
       if [ "$line" != "$1" ]
       then          
         cat $Projectdir/$line/$line.RevisionId  >> $PageSclt
       fi
       cat $Projectdir/$line/$line.RevisionId
       

#P    license du bas de page : 
#P    <li id="footer-info-copyright">Les textes sont disponibles sous <a href="https://creativecommons.org/licenses/by-sa/3.0/">license Creative Commons attribution partage à l’identique</a> ; d’autres termes peuvent s’appliquer.<br/>
#P      Voyez les <a href="https://wikimediafoundation.org/wiki/Conditions_d'utilisation">termes d’utilisation</a> pour plus de détails.<br/></li>
#P
#P    Print license :
#P    <link rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"/>


#T echo ", ''Copyright :''"  >> ArticleUn.tmp
#T cat ArticleUn.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 |sed "s/\/\//https:\/\//g"  >> ArticleUn.tmp
#O    Print license :
       echo -n "$(gettext ', ''license : '' ')" > $Projectdir/$line/$line.license
    #T cat $Projectdir/$line/$line.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f4 >> $Projectdir/$line/$line.license
       cat $Projectdir/$line.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4 >> $Projectdir/$line/$line.license
    #T cat $Projectdir/$line/$line.str | grep -n -m 1 -i -e license | sed "s/\"\//%\//g" | cut -d'%' -f2 | sed "s/\/\//https:\/\//g" >> $Projectdir/$line/$line.license
       if [ $line != $1 ]
       then  
         cat $Projectdir/$line/$line.license >> $PageSclt
       fi
       cat $Projectdir/$line/$line.license
       #
       #P spécial pour bas de page fr ## 
       cat $Projectdir/$line/$line.str | grep -n -m 1 -i -e footer-info-copyright | sed "s/\"\//%\//g" | tr '"' '%' | cut -d'%' -f4  > $Projectdir/$line/$line.license

#O    Author(s).  
       echo -n "$(gettext ', ''author(s) : '' ')" > $Projectdir/$line/$line.author
       
       cat $Projectdir/$line/$line.str | grep -n -m 1 -i -e wgRelevantUserName | sed "s/\"/%/g" | cut -d'%' -f4 > tmp
       if test -s tmp; 
         then cat tmp >> $Projectdir/$line/$line.author; rm tmp;
         else 
           echo "Author not found ! " >> $Projectdir/$line/$line.author
           if wget --spider https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$line 2>/dev/null
           then
             echo "$(gettext '.  see :') https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$line" >> $Projectdir/$line/$line.author
           elif wget --spider https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$Bookname/$line 2>/dev/null
           then 
             echo "$(gettext '.  see :') https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/$Bookname/$line" >> $Projectdir/$line/$line.author
           else echo "$(gettext '.  see ''contributors'' in book ''$Bookname'' history page of ''$line'' ')"  >> $Projectdir/$line/$line.author
           fi
       fi
       #https://xtools.wmflabs.org/articleinfo/en.wikibooks.org/Guide_to_Unix/Introduction
       
       if [ $line != $1 ]
       then
         cat $Projectdir/$line/$line.author >> $PageSclt
         cat $Projectdir/$line/$line.author
       fi
       
       echo >> $PageSclt
       
#O fin du tant que.
    done < $Pjlist
    echo "</div>" >> $PageSclt
    echo "$(gettext '{{Newpage}} ')" >> $PageSclt
    
    if [ "$2" = "--t" ]; then more $PageSclt; fi

exit 0
# End of en_sclt.inc

tests_add_sclt.bash[modifier | modifier le wikicode]

#! /bin/bash
#P file : tests_add_sclt.bash
#P Syntax ./tests_add_sclt.bash <short-bookname> [ --t ]
VERSION=210528
#O Clean screen
    clear
#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 add_sclt global variables
    source $Workdir/vars/installdir.var
#O Print tests_add_sclt.bash version
    echo " tests_add_sclt.bash version = $VERSION"
    sleep 2
#T    echo "----"
#O Control if the test add_sclt.sh file is clean
    echo -e "\033[1;33m Control add_sclt.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo -e "\033[1;33m ----  \033[0m"
    echo -e "\033[1;33m### add_sclt.sh ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" add_sclt.sh >> text-control.txt
    echo -e "\033[1;33m###### en_sclt.inc ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" en_sclt.inc >> text-control.txt 
    echo -e "\033[1;33m###### fr_sclt.inc ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" fr_sclt.inc >> text-control.txt 
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
    #O Test with first param empty
    echo "Command ./add_sclt.sh without parameter"
    ./add_sclt.sh
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"
#O Test, all with option --t 
   echo " All tests whith parameter --t"   
#O add_sclt local books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./add_sclt.sh LivreTest --t
      elif [ "$Inkey" = "2" ]; then ./add_sclt.sh Hélices_de_navires_à_déplacement --t
      elif [ "$Inkey" = "3" ]; then ./add_sclt.sh TestBook --t
      elif [ "$Inkey" = "4" ]; then ./add_sclt.sh Mkd_\(Extracteur_de_documents\) --t
      elif [ "$Inkey" = "5" ]; then ./add_sclt.sh Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./add_sclt.sh Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./add_sclt.sh Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./add_sclt.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs --t
      elif [ "$Inkey" = "9" ]; then ./add_sclt.sh LivreTest --t
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_add_sclt.bash

See results[modifier | modifier le wikicode]

LivreTest[modifier | modifier le wikicode]

LivreTest.sclt

TestBook[modifier | modifier le wikicode]

TestBook.sclt


Add appendix
scli.inc.sh
Éditeur : Goelette Cardabela


scli.inc.sh[modifier | modifier le wikicode]

Non commencé

scli.inc.sh[modifier | modifier le wikicode]

Ce fichier est l'entête des fichiers d'images scli, il est inclus dans toutes les commandes scli : add_sclic, add_sclipco, add_sclipwb

This file is included in all scli image commands, add_sclic, add_sclipco, add_sclipwb

#! /bin/bash
# Fichier : sclip.inc.sh
#H Nom du fichier de commandes : sclip.inc
#H Syntaxe : "sclip.inc <nom du livre>"
#H Exemple : "./sclip.inc LivreTest" à la console.
#H Date de création :  9 mai 2020
#P Modifié le : 21/06/2021 pour la version internationalisée Add_appendix
#P La version de la documentation sur WikiLivres le : 17 mai 2020 est obsolète
#P
VERSION=210621
#O . gettext.sh for translation
   . gettext.sh
#O Si la commande est une commande de test afficher la version
if [ "$0" = "./sclip.inc.sh" ]; then echo "sclip.inc.sh : Version "$VERSION; fi
if [ "$2" = "--t" ]; then echo "sclip.inc : Version "$VERSION; fi
#O Include the file header.inc
    if test -e ~/Add_appendix/bin/header.inc; then source ~/Add_appendix/bin/header.inc
    else echo "$Bindir/header.inc not found. Execute sbin/cp-src2bin.sh"; exit -1
    fi
#0  Initialisation de la variable d'entête des fichiers scli.
     Headscli=$Projectdir/$1.scli
     echo > $Headscli

#O Si le livre est sur site wikibooks français
    if [ "$Site" = "fr.wikibooks.org" ] 
    then 
    {
     echo "$Headscli version en français"
     echo "Entête des fichiers sclic, slipco, sclipwb : $Headscli"; echo
#O  Créer la section 'Image', 'Source', 'licence', 'Contributeur(?)'
     echo "== Sources des images licences et contributeurs ==" > $Headscli
#O  Ajouter le texte : style PediaPress ou personnalisé.
#O   style PediaPress :
     echo "<span style=\"font-size:85%\">Les ''sources'' listées pour chaque illustration fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.</span>" >>  $Headscli
#O  Ou: (imprimer l'un ou l'autre de ces textes)
#O   style personnalisé :
#O    Les textes sont disponibles avec leurs licences respectives, cependant
#O    d’autres termes peuvent s’appliquer.<br />
#O    Voyez les termes d’utilisation pour plus de détails :<br /> 
#O    https://wikimediafoundation.org/wiki/Conditions_d'utilisation
#      echo "<span style=\"font-size:85%\">Les textes sont disponibles avec leurs licences respectives, cependant d’autres termes peuvent s’appliquer.<br />Voyez les termes d’utilisation pour plus de détails :<br />https://wikimediafoundation.org/wiki/Conditions_d\'utilisation.</span>" >>  $Headscli
    }
    else
      echo "$Headscli english version"; echo
      echo "== Images sources licenses and contributors ==" > $Headscli
      echo "<span style=\"font-size:85%\">The ''sources'' listed for each illustration provide more detailed licensing information, including copyright status, the holders of these rights and the license conditions.</span>" >>  $Headscli
    fi

echo " " >>  $Headscli
echo "<div style=\"font-size:72%\">" >> $Headscli
echo >>  $Headscli
#T
 cat $Headscli
#T exit
# Fin de scli.inc.sh

Tests_scli.inc.bash[modifier | modifier le wikicode]

 [ --t ]
VERSION=210621
#O Clean screen
    clear
#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 add global variables
    source $Workdir/vars/installdir.var
#O Print tests_scli.inc.bash version
    echo " tests_scli.inc.bash version = $VERSION"
    sleep 2
#T    echo "----"
#O Control if the test scli.inc.sh file is clean
    echo -e "\033[1;33m Control scli.inc.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo >> text-control.txt

    echo -e "\033[1;33m### scli.inc.sh ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" scli.inc.sh >> text-control.txt
    echo >> text-control.txt
    
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
    #O Test with first param empty
    echo "Command ./scli.inc.sh without parameter"
    ./scli.inc.sh
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"
#O Test, all with option --t 
   echo " All tests whith parameter --t"   
#O scli.inc local books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./scli.inc.sh LivreTest --t
      elif [ "$Inkey" = "2" ]; then ./scli.inc.sh Hélices_de_navires_à_déplacement --t
      elif [ "$Inkey" = "3" ]; then ./scli.inc.sh TestBook --t
      elif [ "$Inkey" = "4" ]; then ./scli.inc.sh Mkd_\(Extracteur_de_documents\) --t
      elif [ "$Inkey" = "5" ]; then ./scli.inc.sh Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./scli.inc.sh Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./scli.inc.sh Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./scli.inc.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs --t
      elif [ "$Inkey" = "9" ]; then ./scli.inc.sh LivreTest --t
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_scli.inc.bash

Exemple de présentation[modifier | modifier le wikicode]

Pour les livres en français[modifier | modifier le wikicode]

Sources des images licences et contributeurs[modifier | modifier le wikicode]

Les sources listées pour chaque illustration fournissent des informations de licence plus détaillées, y compris le statut des droits d'auteurs, les détenteurs de ces droits et les conditions de licence.

For books in English[modifier | modifier le wikicode]

Images sources licenses and contributors[modifier | modifier le wikicode]

The sources listed for each illustration provide more detailed licensing information, including copyright status, the holders of these rights and the license conditions.


Add appendix
add_sclic.sh
Éditeur : Goelette Cardabela


add_sclic.sh[modifier | modifier le wikicode]

Non commencé

add-sclic.sh[modifier | modifier le wikicode]

Cette commande appelle en_scli.inc ou fr_scli.inc selon l'origine de wikibooks

#! /bin/bash
#HF Fichier : add-sclic.sh
#HF Nom du fichier de commandes : add-sclic
#HF Syntaxe : "add-sclic <nom du livre> [ --t ]"
#HF Exemple : "./add-sclic LivreTest --t" à la console.
#HF
#DF La commande ./add_sclic <wikilivre> commence par créer la page
#DF   $Projet/$1.sclic comme elle apparaîtra dans la première partie de la page
#DF   "Annexe" du livre avec les titre en wikitexte et les sections :
#DF   Références: toutes celles qui n'ont pas été affichées dans les pages.
#DF   Contenus: liens établis vers la page du livre et les articles (sous-pages)
#DF   Source de l'édition: lien vers la page qui a permis de créer l' "Annexe".
#DF   Sources licences et contributeurs des articles: ne concerne que les
#DF   articles, les sous-pages.
#DF
#DE the command ./add_sclic <Wiki-book>[--t], first create the page 
#DE   $ Project / $ 1.sclic as it will appear in the "Appendix" page with the 
#DE   titles and Wikitext sections:
#DE   References : all references not referenced in articles
#DE   Contents : links to book articles
#DE   Sources of the edition : link to the page that allows you to create the
#DE     annex page
#DE   Licenses sources and article contributors : only articles and sub-pages
#DE

VERSION=210622
#O . gettext.sh for translation
   . gettext.sh
#O If first parameter is './add-sclic' print the add_sclic version 
    if [ "$0" = "./add-sclic" ]; then echo "add-sclic : Version "$VERSION; fi
#O Include the file header.inc
    if test -e ~/Add_appendix/bin/header.inc; then source ~/Add_appendix/bin/header.inc
    else echo "$Bindir/header.inc not found. Execute sbin/cp-src2bin.sh"; exit -1
    fi
#O Create variable PageSclic
    Projectdir=$Workdir/books/$1
    PageSclic="$Projectdir/$1.sclic"
    echo $PageSclic
#O Inclure la commande scli.inc
    source $Bindir/scli.inc
#O Page scli classique initialization with the title 'Images sources, etc.
    cat $Projectdir/$1.scli > $PageSclic
#O Include the command corresponding to the origin of the book, depending on execution in test mode
    if [ "$2" = "--t" ]
    then pwd > pwd.txt; read Localdir < pwd.txt; rm pwd.txt; else Localdir=$Bindir; fi
    {
      pwd > pwd.txt; read Localdir < pwd.txt; rm pwd.txt
      if [ "$Site" = "fr.wikibooks.org" ]; then source $Localdir/fr_sclic.inc.sh
      else source $Localdir/en_sclic.inc.sh
      fi
    };
    else
      if [ "$Site" = "fr.wikibooks.org" ]; then source $Bindir/fr_sclic.inc
      else source $Bindir/en_sclic.inc
      fi
    fi
# end file add_sclic.sh

en_scli.inc[modifier | modifier le wikicode]

#! /bin/bash
#H File : en_scli.inc include in add at add_scli.sh
#P . gettext for translation
. gettext.sh
Version=210709
    cd $Projectdir
    if [ "$2" = "--t" ]
    then 
      echo "Projectdir = $Projectdir"
      echo "en_sclic version = $Version"
    fi   
#O Select lines containing 'fichier:', 'file', image and create bookname.files
    cat $Projectdir/$1/$1.str | grep -n -i -e fichier: -e file: -e image: > $Projectdir/$1/$1.files
#O Select lines containing 'fichier:', '.jpg', '.png', '.gif' and create bookname.pict
    cat $Projectdir/$1/$1.str | grep -n -i -e fichier: -e .jpg -e .png -e .gif > $Projectdir/$1/$1.picts
#O Sélect in bookname.files, the lines containing 'title', remove the tag <div> cut ">" and select the last champ to create bookname.illustrations
    cat $Projectdir/$1/$1.files | grep title |sed "s/<\/div>//g" | awk -F">" '{print $NF}' > $Projectdir/$1/$1.illustrations
#O Dans le fichier .files avec le séparateur "=" imprimer dans le champ 'i' le retour chariot, sélectionner le slignes conteneant 'https', remplacer le caractère '"' par '!'
#O   et sélectionner le trosième champ, puis relélectionner la ligne contenant https, remplacer le caractère '>' par !, supprimer </a, puis supprimer le caractère '!'
#O   et créer le fichier.links
       cat $Projectdir/$1/$1.files | awk -F"=" '{for (i=1;i<=NF;i++) print $i "\n"}' | grep https | sed "s/\"/!/g" | cut -d '!' -f3 \
       | grep https | tr '>' ! | sed "s/<\/a//g" |sed "s/!//g" > $Projectdir/$1/$1.links
#OF Télécharger les fichiers contenus dans la liste du fichier bookname.links
#O Download the files contained in the list of the bookname.links file
    wget -P $Projectdir/$1 -r -linf -k -p -E -i $Projectdir/$1/$1.links       
#O Copy html liles from ./commons.wikimedia.org/wiki in the curreny directory
    cd $1
    if test -e commons.wikimedia.org; then cp -R commons.wikimedia.org/wiki/*.html . ; fi
#O html.list initialization
    echo -n "" > html.list
    if test -s $Projectdir/$1/$1.links
    then 
    { 
      echo "$Projectdir/$1/$1.links is not empty" 
#OF  Tant qu'on lit des lignes dans le fichier .links, lire les images et les lister dans html.list  
#O   As long as there is a line in file html.links, read the line and copy it to html.list
      while read line
      do
      echo $line | awk -F"/" '{print $NF}' | cut -d '%' -f1 | cut -d '.' -f1 > tmp
      read Image < tmp
      ls $Image*.html  >> html.list
      echo "Image : "$Image.html  
      done < $Projectdir/$1/$1.links
    }
    elif test -s $Projectdir/html.list; then cp $Projectdir/html.list $Projectdir/$1/html.list
    else echo "No images found in $Projectdir/$1"; exit 0
    fi
    
    echo " *** References : image, src, lic, contrib."
#O As long as there is a line in file html.list extract illustrations, sources, licenses, authors(s)	   
    while read line
    do
       echo
       echo
       echo "$(gettext '---- line = ')$line ----"
       echo
	   
       mkd -pw '**' $line $line.tmp
       cat $line.tmp | tr ',' '\n' > $line.str 
     
       echo -n "'''$(gettext ' Illustration : ')'''" > $line.title
       cat $line.str |grep wgTitle | cut -d '"' -f4 >> $line.title
       cat $line.title >> $PageSclic 
       cat $line.title

       echo -n ", ''$(gettext ' source : ')''https://"$Site"/w/index.php?title= " > $line.source
       echo $line | sed "s/.html//g" >> $line.source
       cat $line.source >> $PageSclic
       cat $line.source

       echo -n ", ''$(gettext ' license : ')''" > $line.license
       cat $line.str | grep licensetpl_short | sed "s/<td>//g" | sed "s/<span class//g" | sed "s/<\/span>//g" | sed "s/style=\"display:none;\"//g" | tr '=' '\n' | grep licensetpl_short | awk -F">" '{print $NF}' >> $line.license
       cat $line.license >> $PageSclic
       cat $line.license
	   
       echo -n ", ''$(gettext ' author(s) : ')''" > $line.authors
       rm tmp
       cat $line.str | grep -i -n -m1 -A 1 -e Author | grep -i -e user -e utilisteur -e auteur | tr '/' '\n' | grep -i -e user -e utilisteur -e auteur | cut -d '"' -f1 > tmp
       if test -s tmp 
       then cat tmp >> $line.authors
       else echo "-" >> $line.authors
       fi
       cat $line.authors >> $PageSclic
       cat $line.authors	   
       echo >> $PageSclic
    done < html.list
	
    echo "</div>" >> $PageSclic
    echo "$(gettext ' {{Newpage}} ')" >> $PageSclic
exit 0 
#end of file en_sclic.inc.sh

fr_scli.inc[modifier | modifier le wikicode]

#! /bin/bash
#H File : fr_scli.inc include in add at add_scli.sh
Version=210622
    cd $Projectdir
    if [ "$2" = "--t" ]
    then 
      echo "Projectdir = $Projectdir"
      echo "fr_sclic version = $Version"
    fi    
#O Sélectionner les lignes contenant 'fichier:', 'file', image et créer le fichier .files
    cat $Projectdir/$1/$1.str | grep -n -i -e fichier: -e file: -e image: > $Projectdir/$1/$1.files
#O Sélectionner les lignes contenant 'fichier:', '.jpg', '.png', '.gif' et créer le fichier .pict
    cat $Projectdir/$1/$1.str | grep -n -i -e fichier: -e .jpg -e .png -e .gif > $Projectdir/$1/$1.picts
#O Sélectionner dans le fichier .files, les lignes contenant 'title', supprimer le tag <div> couper ">" et sélectionner le dernier champ pour créer le fichier des illustrations
    cat $Projectdir/$1/$1.files | grep title |sed "s/<\/div>//g" | awk -F">" '{print $NF}' > $Projectdir/$1/$1.illustrations
#O Dans le fichier .files avec le séparateur "=" imprimer dans le champ 'i' le retour chariot, sélectionner le slignes conteneant 'https', remplacer le caractère '"' par '!'
#O   et sélectionner le troième champ, puis relélectionner la ligne contenant https, remplacer le caractère '>' par !, supprimer </a, puis supprimer le caractère '!'
#O   et créer le fichier.links
       cat $Projectdir/$1/$1.files | awk -F"=" '{for (i=1;i<=NF;i++) print $i "\n"}' | grep https | sed "s/\"/!/g" | cut -d '!' -f3 \
       | grep https | tr '>' ! | sed "s/<\/a//g" |sed "s/!//g" > $Projectdir/$1/$1.links
#O Télécharger les fichiers contenus dans la liste du fichier bookname.links
    wget -P $Projectdir/$1 -r -linf -k -p -E  -i $Projectdir/$1/$1.links
#O Copy html files from commons.wikimedia.org/wiki if this file exist, in current directory 
    cd $1
    if test -e commons.wikimedia.org; then cp -R commons.wikimedia.org/wiki/*.html . ; fi
#O Copy html files from $Site if this file exist, in current directory
    if test -e $Site; then cp -R $Site/wiki/*.html . ; fi
#O Initialiser le fichier html.list
    echo -n "" > html.list
    if test -s $Projectdir/$1/$1.links
    then {
#O Tant qu'on lit des lignes dans le fichier .links, lire les images et les lister dans html.list  
    while read line
    do
    echo $line | awk -F"/" '{print $NF}' | cut -d '%' -f1 | cut -d '.' -f1 > tmp
    read Image < tmp
    ls $Image*.html  >> html.list
    echo "Image : "$Image.html  
    done < $Projectdir/$1/$1.links
    }
    elif test -s $Projectdir/html.list; then cp $Projectdir/html.list $Projectdir/$1/html.list
    else echo "Aucune images trouvées dans $Projectdir/$1"; exit 0
    fi

    echo "*** Références : image, src, lic, contrib. "
#O tant que l'on lit des lignes dans le fichier html.list extraire les illustrations, sources, licences, auteurs(s)	   
    while read line
    do
       echo ""
       echo ""
       echo "---- ligne lue = $line ---"
       echo ""
	   
       mkd -pw '**' $line $line.tmp
       cat $line.tmp | tr ',' '\n' > $line.str 
     
       echo -n "'''Illustration : '''" > $line.title
       cat $line.str |grep wgTitle | cut -d '"' -f4 >> $line.title
       cat $line.title >> $PageSclic 
       cat $line.title

       echo -n ", ''source : ''https://"$Site"/w/index.php?title=" > $line.source
       echo $line | sed "s/.html//g" >> $line.source
       cat $line.source >> $PageSclic
       cat $line.source

       echo -n ", ''licence : ''" > $line.license
       cat $line.str | grep licensetpl_short | sed "s/<td>//g" | sed "s/<span class//g" | sed "s/<\/span>//g" | sed "s/style=\"display:none;\"//g" | tr '=' '\n' | grep licensetpl_short | awk -F">" '{print $NF}' >> $line.license
       cat $line.license >> $PageSclic
       cat $line.license
	   
       echo -n ", ''auteur(s) : ''" > $line.auteur
       rm tmp
       cat $line.str | grep -i -n -m1 -A 1 -e Author | grep -i -e user -e utilisteur -e auteur | tr '/' '\n' | grep -i -e user -e utilisteur -e auteur | cut -d '"' -f1 > tmp
       if test -s tmp 
       then cat tmp >> $line.auteur
       else echo "-" >> $line.auteur
       fi
       cat $line.auteur >> $PageSclic
       cat $line.auteur 	   
       echo >> $PageSclic
    done < html.list
	
    echo "</div>" >> $PageSclic
    echo "{{Nouvelle page imprimée}}" >> $PageSclic
exit 0
# fin de fichier fr_sclic.sh

tests_add_sclic.bash[modifier | modifier le wikicode]

#! /bin/bash
#P file : tests_add_sclic.bash
#P Syntax ./tests_add_sclic.bash <short-bookname> [ --t ]
VERSION=210618
#O Clean screen
    clear
#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 add_sclic global variables
    source $Workdir/vars/installdir.var
#O Print tests_add_sclic.bash version
    echo " tests_add_sclic.bash version = $VERSION"
    sleep 2
#T    echo "----"
#O Control if the test add_sclic.sh file is clean
    echo -e "\033[1;33m Control add_sclic.sh in the local test directory \033[0m" > text-control.txt 
    echo -e "\033[1;33m Please check that the comment line does not contain an command \033[0m" >> text-control.txt
    echo >> text-control.txt
    
    echo -e "\033[1;33m### add_sclic.sh ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" add_sclic.sh >> text-control.txt
    echo >> text-control.txt
    
    echo -e "\033[1;33m###### en_sclic.inc.sh ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" en_sclic.inc.sh >> text-control.txt 
    echo >> text-control.txt
    
    echo -e "\033[1;33m###### fr_sclic.inc.sh ###\033[0m" >> text-control.txt
    grep -n -e "#T\|#O\|#P" fr_sclic.inc.sh >> text-control.txt 
    echo -e "\033[1;33m ----  \033[0m" >> text-control.txt
    more text-control.txt
    echo; echo -e "\033[47m\033[1;30m Continue ? \033[0m"
    read -s -e -n 1 -t 60 -p "y/n ? : " Inkey;echo
#T     echo "Inkey = $Inkey"
    if [ "$Inkey" != 'y' ]; then echo " Inkey is not yes, or time out after 60 sec, exit from $0"; exit 0;fi
    #O Test with first param empty
    echo "Command ./add_sclic.sh without parameter"
    ./add_sclic.sh
    echo;echo " wait for 2 sec"
    sleep 2; echo "----"
#O Test, all with option --t 
   echo " All tests whith parameter --t"   
#O add_sclic local books for tests
    Inkey=1
    for i in 'seq 1 9'
    do 
      cat $Workdir/tests/sitelist.txt; echo
      echo -e "\033[47m\033[1;30m Choose the site number to test \033[0m"
      read -s -n1 -p "inkey number 1 to 9 : " Inkey; echo;
      if [ "$Inkey" = "1" ]; then ./add_sclic.sh LivreTest --t
      elif [ "$Inkey" = "2" ]; then ./add_sclic.sh Hélices_de_navires_à_déplacement --t
      elif [ "$Inkey" = "3" ]; then ./add_sclic.sh TestBook --t
      elif [ "$Inkey" = "4" ]; then ./add_sclic.sh Mkd_\(Extracteur_de_documents\) --t
      elif [ "$Inkey" = "5" ]; then ./add_sclic.sh Faire_fleurir_le_sel --t
      elif [ "$Inkey" = "6" ]; then ./add_sclic.sh Faire_sa_fleur_de_sel --t      
      elif [ "$Inkey" = "7" ]; then ./add_sclic.sh Guide_to_Unix --t
      elif [ "$Inkey" = "8" ]; then ./add_sclic.sh Tests_de_la_capacité_des_batteries_d%27accumulateurs --t
      elif [ "$Inkey" = "9" ]; then ./add_sclic.sh LivreTest --t
      else echo "$inkey local url of site not found"; exit 0
      fi
    done
#O End tests_add_sclic.bash


Add appendix
add_sclipco.sh
Éditeur : Goelette Cardabela


add_sclipco.sh[modifier | modifier le wikicode]

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


Add appendix
add_sclipwb.sh
Éditeur : Goelette Cardabela


add_sclipwb.sh[modifier | modifier le wikicode]

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


Add appendix
Programmes de maintenance
Éditeur : Goelette Cardabela


copy sources to bin[modifier | modifier le wikicode]

cp-src2bin.sh installe les fichiers exécutables du programme dans le répertoire bin à partir des fichiers sources.
En finition/En voie de finition? terminaison? vβ 210419 Modèle:;Auto-éditer un wikilivre/Annexer (Version internationalisée)/cp-src2bin.sh

copy all tested commands to src and bin directories[modifier | modifier le wikicode]

cp_all_to_Add_appendix.bash copie toutes les commandes testées vers les répertoires src et bin de Add_appendix.
En finition/En voie de finition? terminaison? vβ 210616 Ce script commande la mise à jour, ou l'installation, de tous les fichiers éprovés dans le répertoire des tests de l'appli cation Add_appendix

#!/bin/bash
#H Directory : tests
#H File      : cp_all_to_Add_appendix.bash
#H Syntax    : in tests directory ./cp_all_to_Add_appendix.bash
VERSION=210616

Rootdir=~/Add_appendix
Testdir=$Rootdir/tests
Libdir=$Rootdir/lib

echo "cp_all_to_Add_appendix.bash version : $VERSION"

# 0-pre-annex.sh
File0=pre-annex
echo -e "\033[1;33m### Copy $File0 to src and bin directories ###\033[0m"
cat $Testdir/0-$File0.sh/$File0.sh > $Rootdir/src/$File0.sh
chmod 666 $Rootdir/src/$File0.sh
cat $Testdir/0-$File0.sh/$File0.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/$File0
chmod 755 $Rootdir/bin/$File0

# 1-annex.lib
#File1=annex.lib
#echo -e "\033[1;33m### Copy $File1 to lib/src and lib directories ###\033[0m"
#cat $Testdir/1-$File1.sh/$File1.sh > $Rootdir/lib/src/$File1.sh
#chmod 666 $Rootdir/Lib/src/$File1.sh
#cat $Testdir/1-$File01.sh/$File1.sh | grep -v "#T\|#O\|#P" > $Rootdir/lib/$File1
#chmod 666 $Rootdir/lib/$File1
## 1-annex.lib/11-findbook.sh
File11=findbook
echo -e "\033[1;31m### Copy $File11 to $Libdir/src directory ###\033[0m"
cat $Testdir/1-annex.lib/11-$File11.sh/$File11.sh > $Libdir/src/$File11.sh
chmod 666 $Libdir/src/$File11.sh
## 12-ecfpb.sh
## 13-ecfpc.sh
#echo -e "\033[1;33m### Make annex.lib to lib directory ###\033[0m"
#cat $Libdir/src/$File11.sh > $Libdir/src/annex.lib.sh
#cat $Libdir/src/$File12.sh >> $Libdir/src/annex.lib.sh
#cat $Libdir/src/$File13.sh >> $Libdir/src/annex.lib.sh
#cat $Libdir/src/annex.lib.sh | grep -v "#T\|#O\|#P" > $Libdir/annex.lib

# 2-annex.sh
#File2=annex
#echo -e "\033[1;33m### Copy $File2 to src and bin directories ###\033[0m"
#cat $Testdir/2-$File2.sh/$File2.sh > $Rootdir/src/$File2.sh
#chmod 666 $Rootdir/src/$File2.sh
#cat $Testdir/2-$File2.sh/$File2.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/$File2
#chmod 755 $Rootdir/bin/$File2

# 3-header.inc.sh
File3=header.inc
echo -e "\033[1;33m### Copy $File3 to src and bin directories ###\033[0m"
cat $Testdir/3-$File3.sh/$File3.sh > $Rootdir/src/$File3.sh
chmod 666 $Rootdir/src/$File3.sh
cat $Testdir/3-$File3.sh/$File3.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/$File3
chmod 755 $Rootdir/bin/$File3

# 4-list.sh
File4=list
echo -e "\033[1;33m### Copy $File4 to src and bin directories ###\033[0m"
cat $Testdir/4-$File4.sh/$File4.sh > $Rootdir/src/$File4.sh
chmod 666 $Rootdir/src/$File4.sh
cat $Testdir/4-$File4.sh/$File4.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/$File4
chmod 755 $Rootdir/bin/$File4

# 5-download.sh
File5=download
echo -e "\033[1;33m### Copy $File5 to src and bin directories ###\033[0m"
cat $Testdir/5-$File5.sh/$File5.sh > $Rootdir/src/$File5.sh
chmod 666 $Rootdir/src/$File5.sh
cat $Testdir/5-$File5.sh/$File5.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/$File5
chmod 755 $Rootdir/bin/$File5

# 6-add_sclt.sh
# 6 add_sclt
echo -e "\033[1;33m### Copy add_sclt to src and bin directories ###\033[0m"
cat $Testdir/6-add_sclt.sh/add_sclt.sh > $Rootdir/src/add_sclt.sh
chmod 666 $Rootdir/src/add_sclt.sh
cat $Testdir/6-add_sclt.sh/add_sclt.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/add_sclt
chmod 755 $Rootdir/bin/add_sclt
# 6 en_sclt
echo -e "\033[1;33m###   Copy en_sclt to src and bin directories ###\033[0m"
cat $Testdir/6-add_sclt.sh/en_sclt.inc.sh > $Rootdir/src/en_sclt.inc.sh
chmod 666 $Rootdir/src/en_sclt.inc.sh
cat $Testdir/6-add_sclt.sh/en_sclt.inc.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/en_sclt.inc
chmod 666 $Rootdir/bin/en_sclt.inc
# 6 fr_sclt
echo -e "\033[1;33m###   Copy fr_sclt to src and bin directories ###\033[0m"
cat $Testdir/6-add_sclt.sh/fr_sclt.inc.sh > $Rootdir/src/fr_sclt.inc.sh
chmod 666 $Rootdir/src/fr_sclt.inc.sh
cat $Testdir/6-add_sclt.sh/fr_sclt.inc.sh | grep -v "#T\|#O\|#P" > $Rootdir/bin/fr_sclt.inc
chmod 666 $Rootdir/bin/fr_sclt.inc

# 7-add_sclic.sh
# 8add_sclip.inc.sh
# 10-sclipwb.sh