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