scripts/doku2moin.sh

177 lines
5.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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
# -----------------------------------------------------------
# **********************************************************************************************