scripts/doku2moin.sh

177 lines
5.6 KiB
Bash
Raw Normal View History

2016-10-14 09:40:07 +02:00
#!/bin/sh
################################################################################################
##
## Nom: doku2moin.sh
##
## Version: 0.1
##
## Licence: Creative Commons
##
## Comportement: Transformer une page de Dokuwiki est en page compatible avec le wiki Moinmoin.
##
##
##
################################################################################################
##
## Date de création: 15-12-2011
##
## Auteur: Gardouille
##
##
## Dernière modifications:
## 15-12-2011 - 0.1: Création du script
## -
# **********************************************************************************************
## //2011 - :
## -
## -
# **********************************************************************************************
## À Modifier:
## - Ajouter l'entête pour la syntaxe Moinmoin automatiquement dans le fichier
## - Ajouter une transformation pour:
## - http://packages.debian.org/search?keywords=NOM_PAQUET -> [[DebianPkg:NOM_PAQUET|Détail du paquet]]
## - http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=NOM_PAQUET -> [[DebianBug:NOM_PAQUET|Rapport de bug NOM_PAQUET]]
## - Modifier la transformation de // en '' pour ne pas prendre http:// (par exemple)
##
##
################################################################################################
# **********************************************************************************************
#
# Variables globales
#
# -----------------------------------------------------------
# 
## Choix du mode d'exécution du script:
## Niveau 0 (mode_debug=0)
# Exécution automatique avec normalement aucune interaction avec l'utilisateur.
## Niveau 1 (mode_debug=1)
# ...
## Niveau 2 (mode_debug=2)
# L'installation n'est pas en automatique (aptitude, ...)
# La sortie des différentes commandes est envoyée sur la sortie standard
mode_debug=2
case "$mode_debug" in
0) ## Niveau minimum
# Les questions d'aptitude seront automatiquement validées
options="-y"
# La sortie standard sera redirigée dans un fichier de log
sortie="> /dev/null 2> \"${fichier_erreur}\""
;;
1) ## Niveau moyen
# Les questions d'aptitude seront automatiquement validées
options="-y"
# La sortie standard sera quand même affichée
sortie="2> \"${fichier_erreur}\""
;;
2) ## Niveau maximum
# Aucune options pour aptitude
options=""
# Le résultat des commandes reste sur la sortie standard
sortie=""
;;
esac
## Fichier contenant les dernières erreurs
fichier_erreur="/tmp/erreur_doku2moin.sh.tmp"
touch "${fichier_erreur}"
## Fichier à modifier
file_in=$1
## Fichier modifié
file_out="$1.moin"
## Fichier contenant toutes les expressions à appliquer
expression="sed_expression"
## Liste des expressions sed à appliquer à la commande
titre1="s/^====== /= /\ns/ ======$/ =/\n"
titre2="s/^===== /== /\ns/ =====$/ ==/\n"
titre3="s/^==== /=== /\ns/ ====$/ ===/\n"
titre4="s/^=== /==== /\ns/ ===$/ ====/\n"
titre5="s/^== /===== /\ns/ ==$/ =====/\n"
titre6="s/^= /====== /\ns/ =$/ ======/\n"
code="s/<code>/{{{/\ns/<\/code>/}}}/\n"
## cmd bash:
## dokuwiki: <code bash>
## moinmoin: {{{#!highlight bash
cmd_bash="s/<code \(bash\)>/{{{#!highlight \\\1/\n"
file="s/<file>/{{{/\ns/<\/file>/}}}/\n"
file_type="s/<file \(.*\) .*/{{{#!highlight \\\1/\n"
gras="s/\*\*/\'\'\'/g\n"
italique="s/\/\//\'\'/g\n"
#lien_externe similaire
#liste_puce similaire (-e 's/\(^ \)\*/\1\*/')
liste_num="s/\(^ *\)-/\\\11\./\n"
## Image:
# dokuwiki: {{:teeworlds_01.png|}}
# moinmoin: {{attachment:teeworlds_01.png}}
image="s/{{:\(.*\)|}}/{{attachement:\\\1}}/\n"
# Fin des variables globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Fichiers globaux
#
# -----------------------------------------------------------
#
# Fin des fichiers globaux
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Fonctions globales
#
# -----------------------------------------------------------
## Fonction d'affichage en fonction du mode debug choisi
echod() { [ "$mode_debug" -ge 2 ] && echo "(DEBUG) $*" ; }
echok() { [ "$mode_debug" -ge 2 ] && echo "(ok) $*" ; }
echoi() { [ "$mode_debug" -ge 1 ] && echo "(ii) $*" ; }
echow() { [ "$mode_debug" -ge 1 ] && echo "(!!) $*" ; }
echnk() { [ "$mode_debug" -ge 0 ] && echo "(EE) $*" ; }
# Fin des fonctions globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Programme principale
#
# -----------------------------------------------------------
echo $titre1$titre2$titre3$titre4$titre5$titre6$code$cmd_bash$file$file_type$gras$italique$liste_num$image > $expression
sed --file="${expression}" "${file_in}" > "${file_out}"
echo "-------------------------------"
echo "-------------------------------"
echo "Rajouter au début du fichier (avant le titre):"
echo "#language fr
||<tablestyle=\"width: 100%; border: 0px hidden\">~-Traduction(s): [[$file_in|English]] - Français||
----
<<TableOfContents()>>"
exit 0
# Fin de la boucle principale
# -----------------------------------------------------------
# **********************************************************************************************