#!/usr/bin/perl
 
# Script: makedocs.pl
#
# Dieses Script generiert die Dokumentation.
#
# Anforderungen:
#
# - Der Pfad zu NaturalDocs muss in der Umgebungsvariablen $NATURALDOCS_PATH stehen. 
#  (Dazu kann man in der ~/.bashrc folgende Zeile hinzufuegen: export $NATURALDOCS_PATH=/pfad/zum/naturaldoc/verzeichnis)
# - Das Projektverzeichnis mit dem namen "naturaldocs" muss im gleichen Verzeichnis wie dieses Script liegen.
# - Es muss ein (leeres) Verzeichnis mit dem Namen "documentation" im gleichen Verzeichnis wie dieses Script existieren.
#
# Benutzung dieses Scripts:
# 
# Man startet dieses Script, wenn sich etwas geaendert hat, einfach mit dem Befehl:
#
# > tools/makedocs.pl [OPTIONEN]
#
# Optionen:
#
#  -o - starte makedocs.pl im offline-Modus
#
# Im offline-Modus wird das Changelog nicht erstellt
#
#
# SVN:
#
# Am besten nur die Textdateien des Projektverzeichnises von NaturalDocs einchecken (nicht das Verzeichnis "Data").
#
# Das Verzeichnis "documentation" sollte im SVN leer sein, sodass jeder die Dokumentation selbst erstellen kann, indem er dieses Script ausfuehrt.
 
use strict;
use warnings;
use vars qw (%ENV);
 
# Sub: generatechangelog
#
# Generiert die Datei documents/changelog.txt aus der Ausgabe des Befehls svn log -v
#
sub generatechangelog {
    print "Generating changelog...n";
    $ENV{LANG} = "C";
    my $log = `svn log -v`; 
 
    $log =~ s/(-){2,}//g;
    $log =~ s/(r[0-9]{1,4})/$1:nn$1/g;
    $log =~ s/n/nn/g;
    $log =~ s/Pfade:/Pfade/g;
    $log =~ s/paths:/paths/g;
    $log =~ s/([A-Z] /)/- $1/g;
 
    open(DATEI, ">documents/changelog.txt");
    print DATEI "Title: Changelog\n\n$log";
    close DATEI;
    print "Done.n";
}
 
######### PROGRAM START ############
 
if (defined $ENV{NATURALDOCS_PATH} && $ENV{NATURALDOCS_PATH} ne "") {
    generatechangelog() if (not(defined @ARGV && $ARGV[0] eq "-o"));
# Generate documentation of current directory in HTML and save to directory documentation. Projectdirectory is naturaldocs.
# Ignore directory tests
    system
"$ENV{NATURALDOCS_PATH}/NaturalDocs -i . -o HTML ./documentation -p ./naturaldocs -xi ./tests";
} else {
    print "Environment variable $NATURALDOCS_PATH not defined!n";
}

