« Auto-éditer un wikilivre/Annexer (Version internationalisée)/cp-src2bin.sh » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Ajout du script compil2bin.bash
→‎Compil2bin.bash : mise à jour du code
Ligne 1 : Ligne 1 :
== Compil2bin.bash ==
== Compil2bin.sh ==
* Attention this script is common for lib, sbin, and src for Add_appendix software
* Attention this script is common for lib, sbin, and src for Add_appendix software
* this script is used in package ''addappendix-O~210927''
* this script is used in package ''addappendix-O~210927''
<syntaxhighlight lang="bash"
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
#H File : compil2bin
#H File : use compil2bin.shell for compress to compil2bin executable
#D Documentation for compil2bin shell file
#D Compil2bin is used in package to product addappendix-<version>.deb and
#D to copy sources files to bin directories
#D Syntax : compil2bin $(SRC) [ $(BIN) | $(SBIN) | $(LIB) ] <file-list>
#D Example: compil2bin ~/Add_appendix/src ~/Add_appendix/bin addappendix pre-annex annex etc.
#D Compilation shell bash file-list product binaries files to directories
#D specified in first parameter.
#D file-list are shell files to compil from $(SRC) directory
#D The compilation consists of eliminating the #D#O#P comments and producing
#D the .pot files for the translations


VERSION=210928
VERSION=211016


#T echo "Sources = $1 ; Bin is : $2"; exit 0
#T echo "Sources = $1 ; Bin is : $2"; exit 0


#O Si le premier paramètre est vide afficher la syntaxe
#O Afficher la version si le prelier argument est --v
if [ "$1" = "--t" ]; then clear screen; echo "compil2bin version $VERSION"; exit 0; fi
if test -z "$1";then echo "Syntax : compil2bin $(SRC) [ $(BIN) | $(SBIN) | $(LIB) ] <file-list>"

#O Afficher la version si le premier argument est --v
if [ "$1" = "--t" ]
then
clear screen
echo "compil2bin version $VERSION"
echo "Directories: "
echo "SRC=?$1, BIN=?$2"
if test -e $3; then echo "file list is not empty, see forward."; fi
exit 0
fi
#O if [ "$1" = "compil2bin.sh" ]; then echo "cannot self extracting compil2bin.sh"; exit -1; fi


#O Affect Srcdir variable
#O Affect Srcdir variable
Ligne 30 : Ligne 33 :
#O Affect Resourcesdir variable
#O Affect Resourcesdir variable
if test -d "./resources"; then Resourcesdir="./resources"; echo "Variable Resources is found: $Resourcesdir"; fi
if test -d "./resources"; then Resourcesdir="./resources"; echo "Variable Resouces is found: $Resourcesdir"; fi


#O Indicate the number of pameters
#O Indiquer le nombre de pamètres
echo "Number of parameter : $#"
echo "Number of parameter : $#"
#T exit 0
#T
exit 0


function cpcleaned2bin
#P include $Libdir/annex.lib to access at cpcleaned2bin function
source $Libdir/annex.lib
{
#O Print $1
echo "*** $1 *** in cpcleaned2bin"
#O Cleaner
mkdir -p ./tmp
cat ./$Srcdir/$1.sh | grep -v "#O\|#P\|#T" | sed "s/eval_gettext /echo \$/g" | sed "s/; echo//g" \
| sed "s/\"\$(gettext '/\$\"/g" | sed "s/' )//g" | sed "s/')//g" > ./tmp/$1
cp ./tmp/$1 $Bindir/$1
if echo $Bindir/$1 | grep ".inc"; then chmod 644 $Bindir/$1; else chmod 755 $Bindir/$1; fi
#O Create new .pot files
xgettext -L shell -o $Resourcesdir/lang/po/$1.pot --from-code=UTF-8 $Bindir/$1
#O Create or update fr .po files
if test -z $Resourcesdir/lang/po/fr/$1.po
then cp $Resourcesdir/lang/po/$1.pot $Resourcesdir/lang/po/fr/$1.po
else msgmerge --update $Resourcesdir/lang/po/fr/$1.po $Resourcesdir/lang/po/$1.pot
fi
#O Create or update fr .mo files in resources directory
msgfmt $Resourcesdir/lang/po/fr/$1.po -o $Resourcesdir/lang/po/fr/$1.mo
echo -e "\033[1;33m### Only if you are edit and update $1.po with Poedit: ###\033[0m"
echo "copy $Resourcesdir/lang/po/fr/$1.mo to /usr/share/locale/fr/LC_MESSAGES/$1.mo"
#O Create or update es .po files
if test -z $Resourcesdir/lang/po/es/$1.po
then cp $Resourcesdir/lang/po/$1.pot $Resourcesdir/lang/po/es/$1.po
else msgmerge --update $Resourcesdir/lang/po/es/$1.po $Resourcesdir/lang/po/$1.pot
fi
#O Create or update fr .mo files in resources directory
msgfmt $Resourcesdir/lang/po/es/$1.po -o $Resourcesdir/lang/po/es/$1.mo
echo -e "\033[1;33m### Only if you are edit and update $1.po with Poedit: ###\033[0m"
echo "copy $Resourcesdir/lang/po/es/$1.mo to /usr/share/locale/es/LC_MESSAGES/$1.mo"
rm -r ./tmp
}


#O Create loop to ...for i in `seq 1 $#`
#O Create loop to ...for i in `seq 1 $#`
Ligne 83 : Ligne 53 :
fi
fi
done
done
exit 0

#D
#D Documentation for compil2bin shell file
#D ----------------------------------------
#D Compil2bin is used in package to product addappendix-<version>.deb and
#D to copy sources files to bin directories.
#D
#D Makefile syntax: compil2bin SRC-OPTIONS BIN-OPTIONS <file-list>
#D SRC-OPTIONS: [ $(SRCS) | $(SBINS) | $(SLIBS) ]
#D BIN-OPTIONS: [ $(BIN) | $(SBIN) | $(LIB) ]
#D <file-list> are shell files list to compil from SRC directory
#D
#D Shell syntax: compil2bin <SRC> <BIN> <file-list>
#D SRC OPTIONS: $Installdir/src or $Workdir/tests/xx-shell.sh-directories
#D BIN OPTIONS: [ $BIN | $SBIN | $LIB ]
#D
#D Examples: with file-list: users_install_annex.sh and install_annex.sh in SRC.
#D SRC=$HOME/Add_appendix/tests/01-sbsrc SBIN=$HOME/Add_appendix/sbin file-list
#D or: compil2bin $Testsdir/01-sbsrc $Sbindir users_install_annex.sh compil2bin.sh
#D or: ~/Add_appendix/sbin/compil2bin $Testsdir/01-sbsrc $Sbindir install_annex.sh
#D or: ~/Add_appendix/sbin/compil2bin $HOME/Add_appendix/tests/01-sbsrc $HOME/Add_appendix/sbin install_annex.sh
#D Compilation shell bash file-list product files to directories specified by
#D first parameter.
#D
#D The compilation consists of eliminating the tags of Documentation, Manual,
#D Organization-charts, Programmers-doc Tests-doc and producing .pot .po files
#D for the translations, can also update .mo files.
#D

#P Note: The manuals must be extracted with the command grep -v "#M ".
#P There must always be a space between #M and the text to extract.
#M .\ Manual man1 extraction: cat compil2bin.sh | sed "s/#M//g" | grep -v "cat" > compil2bin.1
#M .\ This manual is included in compil2bin.sh source file
#M .\"Replace <program> with the program name, x with the Section Number
#M .TH compil2bin 1 "9 oct 2021" "compil2bin(1)" "Linux User's Manual"
#M .SH NAME
#M compi2bin \- compilation program consists of eliminating the tags of Documentation, Manual, Organization-charts, Programmers-doc Tests-doc and producing .pot .po files for the translations, can also update .mo files.
#M .SH SYNOPSIS
#M .B compil2bin
#M .RI $(SRC) [$(BIN)|$(SBIN)|$(LIB)] <file-list>
#M .br
#M .SH DESCRIPTION
#M This manual page explains the \fBcompil2bin\fP program. The \fBcompil2bin\fP program is included in Makefile to install sources files in binary directories such as bin lib sbin and product .pot .po .mo files to lang resources directories. If you are edit and saved po files you can copy .mo files to /usr/share/locale/lang/LC_MESSAGES/.
#M .SH OPTIONS
#M .IP \fB\-$(SRC)\fP
#M This variable is used in makefile example: SRC = /usr/local/src
#M .IP \fB\-[$(BIN)|$(SBIN)|$(LIB)]\fP
#M This variables are used in makefile example: SBIN = /usr/local/sbin
#M .IP \fB\-<file-list>\fP
#M This arguments list are list of files to convert and install to $(BIN) or $(SBIN) or $(LIB)
#M .SH NOTES
#M To compete your information:
#M https://fr.wikibooks.org/wiki/Annexes_de_wikibooks#Makefile_proposé_aux_essais
#M .SH "SEE ALSO"
#M addapendix packages
#M
#O End of compil2bin
#O End of compil2bin
</syntaxhighlight>
</syntaxhighlight>

Version du 25 octobre 2021 à 15:55

Compil2bin.sh

  • Attention this script is common for lib, sbin, and src for Add_appendix software
  • this script is used in package addappendix-O~210927
#!/bin/bash
#H File   : use compil2bin.shell for compress to compil2bin executable

VERSION=211016

#T echo "Sources = $1 ; Bin is : $2"; exit 0

#O Si le premier paramètre est vide afficher la syntaxe
    if test -z "$1";then echo "Syntax : compil2bin $(SRC) [ $(BIN) | $(SBIN) | $(LIB) ] <file-list>"

#O Afficher la version si le premier argument est --v
    if [ "$1" = "--t" ] 
	then 
	  clear screen 
	  echo "compil2bin version $VERSION"
	  echo "Directories: "
	  echo "SRC=?$1, BIN=?$2"
	  if test -e $3; then echo "file list is not empty, see forward."; fi
	  exit 0
	fi
	
#O if [ "$1" = "compil2bin.sh" ]; then echo "cannot self extracting compil2bin.sh"; exit -1; fi

#O Affect Srcdir variable
    if test -d "$1" || test -e "$1"/addappendix.sh ]; then echo "Sources directory is found: $1"; Srcdir=$1; else echo "Sources directory is not found"; exit -1; fi
	
#O Affect bindir variable
    if test -d "$2"; then Bindir="$2"; echo "Variable Bindir is $Bindir"; else echo "$2 bin directory not found"; exit -1; fi
	
#O Affect Resourcesdir variable
    if test -d "./resources"; then Resourcesdir="./resources"; echo "Variable Resouces is found: $Resourcesdir"; fi

#O Indicate the number of pameters
	echo "Number of parameter : $#"
	
#T 
exit 0

#P include $Libdir/annex.lib to access at cpcleaned2bin function
source $Libdir/annex.lib

#O Create loop to ...for i in `seq 1 $#`
  for i in "$@"
  do
    if test $i != $1 && test $i != $2
	then
      echo "$i"
      cpcleaned2bin $i
	fi
  done
exit 0  

#D
#D Documentation for compil2bin shell file
#D ----------------------------------------
#D Compil2bin is used in package to product addappendix-<version>.deb and
#D   to copy sources files to bin directories.
#D
#D Makefile syntax: compil2bin SRC-OPTIONS BIN-OPTIONS <file-list>
#D   SRC-OPTIONS: [ $(SRCS) | $(SBINS) | $(SLIBS) ]
#D   BIN-OPTIONS: [ $(BIN) | $(SBIN) | $(LIB) ]
#D   <file-list> are shell files list to compil from SRC directory
#D
#D Shell syntax: compil2bin <SRC> <BIN> <file-list>
#D   SRC OPTIONS: $Installdir/src or $Workdir/tests/xx-shell.sh-directories
#D   BIN OPTIONS: [ $BIN | $SBIN | $LIB ]
#D
#D Examples: with file-list: users_install_annex.sh and install_annex.sh in SRC.
#D  SRC=$HOME/Add_appendix/tests/01-sbsrc SBIN=$HOME/Add_appendix/sbin file-list
#D or: compil2bin $Testsdir/01-sbsrc $Sbindir users_install_annex.sh compil2bin.sh
#D or: ~/Add_appendix/sbin/compil2bin $Testsdir/01-sbsrc $Sbindir install_annex.sh
#D or: ~/Add_appendix/sbin/compil2bin $HOME/Add_appendix/tests/01-sbsrc $HOME/Add_appendix/sbin install_annex.sh
#D Compilation shell bash file-list product files to directories specified by
#D   first parameter.
#D
#D The compilation consists of eliminating the tags of Documentation, Manual,
#D   Organization-charts, Programmers-doc Tests-doc and producing .pot .po files
#D   for the translations, can also update .mo files.
#D

#P Note: The manuals must be extracted with the command grep -v "#M ". 
#P There must always be a space between #M and the text to extract.
#M .\ Manual man1 extraction: cat compil2bin.sh | sed "s/#M//g" | grep -v "cat" > compil2bin.1 
#M .\ This manual is included in compil2bin.sh source file
#M .\"Replace <program> with the program name, x with the Section Number
#M .TH compil2bin 1 "9 oct 2021" "compil2bin(1)" "Linux User's Manual"
#M .SH NAME
#M compi2bin \- compilation program consists of eliminating the tags of Documentation, Manual, Organization-charts, Programmers-doc Tests-doc and producing .pot .po files for the translations, can also update .mo files.
#M .SH SYNOPSIS
#M .B compil2bin
#M .RI $(SRC) [$(BIN)|$(SBIN)|$(LIB)] <file-list> 
#M .br
#M .SH DESCRIPTION
#M This manual page explains the \fBcompil2bin\fP program. The \fBcompil2bin\fP program is included in Makefile to install sources files in binary directories such as bin lib sbin  and product .pot  .po .mo files to lang resources directories. If you are edit and saved po files you can copy .mo files to /usr/share/locale/lang/LC_MESSAGES/.
#M .SH OPTIONS
#M .IP \fB\-$(SRC)\fP
#M This variable is used in makefile example: SRC = /usr/local/src
#M .IP \fB\-[$(BIN)|$(SBIN)|$(LIB)]\fP
#M This variables are used in makefile example: SBIN = /usr/local/sbin
#M .IP \fB\-<file-list>\fP
#M This arguments list are list of files to convert and install to $(BIN) or $(SBIN) or $(LIB)
#M .SH NOTES
#M To compete your information:
#M https://fr.wikibooks.org/wiki/Annexes_de_wikibooks#Makefile_proposé_aux_essais
#M .SH "SEE ALSO"
#M addapendix packages
#M
#O End of compil2bin

old version cp-src2bin.sh

WARNING, this is an old version revised on Sep 18, 2021
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
#P File : .../sbin/cp-src2bin.sh. This file must be copied in executable mode
#P Copy the source files to the executables directory.
#P The tests directory is used to individual test bash files from annex programm.

clear

VERSION=210419

if [ "$1" = "--v" ]; then echo "cp-src2bin.sh : VERSION $VERSION rrevised on Sep 18, 2021"; exit 0; fi

#P Find the current directory
    pwd > pwd.txt
    read Currentdir<pwd.txt

#P Find the working name directory
    cat pwd.txt | cut -d "/" -f4 > workname.txt
    read Workname<workname.txt
	echo -n "Working name directory= $Workname"
	if [ $Workname = "Annexer" ] || [ $Workname = "Add_appendix" ]
	then echo " is found"; 
	else echo " is not a working name directory"; exit -1
	fi
	
#P Find full directories install, working etc.
	source ~/$Workname/vars/installdir.var
    echo "Install directory : $Installdir"
	echo "Working dir : $Workdir"

#T Test break exit 0

#P Make list files.pj 
    echo "Make files list from src directory in files.pj"
    ls -1 $Installdir/src/*.sh > files.pj

#P If files.pj is not empty copy all files *.sh to executable directory
    if [ -s "files.pj" ]
    then
      echo "files in files.pj :"
      cat files.pj
    else
      echo "files.pj is empty, exit from cp-src2bin.sh"
      exit 1
    fi

#P Copy copy without extension .sh, and make files executables
    echo "#####################################################################"
    echo "# Warning: this script move all src/*.sh to bin/* without comments. #"
    echo "# Warning: is not available to product POT files for translations.  #"
    echo "#####################################################################"
    while read line
    do
#T      echo "copy the ligne $line from files.pj '.sh' in the file exename without extension .sh"
      echo $line | sed s/.sh//g | awk -F "/" '{print $NF}'> exename.txt

#P   Affect the value in 'exename.txt' at the variable $Exename
      read Exename < exename.txt
      echo "copy $Installdir/src/$Exename.sh to $Installdir/bin/$Exename"
      cat $Installdir/src/$Exename.sh | grep -v "#O\|#P\|#T" >  $Installdir/bin/$Exename
      echo "Add mode 755 'executable' at file $Installdir/bin/$Exename"
      chmod 755 $Installdir/bin/$Exename
      echo "----"
    done < files.pj
#T Breakpoint exit 0

#P clean sbin directory
    rm files.pj pwd.txt exename.txt

#P End cp-src2bin