mktdir, mvtdir, rmtdir & co

Werkzeuge für ein Hypertext-Dateisystem

Wer ein neuen Ast erstellt, sollte dazu nicht ‘mkdir’ sondern ‘mktdir’ aufrufen. Dadurch wird weit mehr als ein neues Verzeichnis erzeugt. In ähnlicher Weise gibt es zum Umbenennen, Verschieben und Löschen Pendants höherer Ebene, die nicht nur im Dateisystem sondern in der Hypertext-Datenbank und dem Subversion-Archiv ihre die entsprechenden Operationen durchführen.

1 Chronik

  • 2008-12-28 version 0.1.7 with lots of improvements but still containing some site-specific stuff that ought to be forked out into a private package
  • 2008-05-08 packaged this directory’s software as compressed tar, source rpm and object rpm package, named a2e-mktdir, for the repository, version 0.1.2
  • 2008-04-02 create version 0.0.1 of package a2e-mktdir, containing includable makefile pieces and templates used for meta-programming at a2e. The actual programs and libraries etc have moved.

Das folgende ist veraltet, muss baldmöglichst verschoben werden.

Hier entsteht eine wachsende Sammlung von Kommandozeilenbefehlen a la ‘rm’, ‘mv’, ‘cp’, ‘mkdir’, aber nicht für bloße Dateien sondern für Dokumente. Vielleicht nennen wir das demnächst mal etwas hochtrabend ‘dokfs’ oder ‘htfs’ (Hypertext File System). Ziel ist es, Hypertext auf der Kommandozeilenebene zu steuern: unabhängig vom Webbrowser, tauglich für Kollborationssysteme und draufgepfropfte Oberflächen aller Art, auch wiki-artige.

Die Sammlung ist jetzt per als Tar-Paket und als RPM-Paket a2e-mktdir-0.0.1 verfügbar.

2.1 

$ cd /svn/eupat
$ mktdir4 07 eupat07 de "EU-Patentsystem 2007" 
"Entwicklungen des Jahres" "Das EPLA geriet Anfang 
des Jahres in schwierige Fahrwasser, aber ..." en 
"2007" "EU Patent System 2007" "Developments of 
the year" "The EPLA ran into difficulties at the 
beginning of the year, but ..."

Dadurch wird folgendes erreicht:

  • Es werden Vorlagen in mehreren Sprachen mit fertigem Kopfteil angelegt, in die man schreiben kann.
  • Es werden Einträge in die Datenbank geschrieben
  • Man kann durch auf den Dokument-Identifikator eupat07 statt auf die volle URL verlinken, die Links bleiben bei veränderter URL stabil
  • Der Identifikator eupat07 bekommt eine bestimmte Position in der Dokumentenhierarchie zugewiesen, aus der sich URL und Menüstrukturen ableiten lassen.
  • Man kann im lokalen Dateisystem in das Verzeichnis ‘eupat07’ wechseln, ohne zu wissen, welches Verzeichnis sich dahinter verbirgt
  • Es wird eine Steuerdatei (Makefile) für das Gesamtdokument und eine pro Sprache angelegt. Nach Änderung des Quelltextes muss dann nur ‘make’ aufgerufen werden, und schon werden die Zielformate HTML und LaTeX/PDF erzeugt
  • Die Quelltexte werden in das SVN-Archiv aufgenommen –- die Objektdateien werden auf dem Server mit ‘make’ erzeugt

In Analogie zu den Unix-Befehlen mkdir, mv, cp, rm etc gibt es Pendants ‘mvtdir’, ‘rmtdir’ etc, mit denen man auf der Ebene ganzer Hypertextdokumente statt bloßer Dateien arbeitet.

Ein wirkliches neues Dateisystem wird hierdurch nicht geschaffen, wohl aber ein Quasi-Dateisystem auf höherer Ebene, welches sich auf andere Dateisysteme legt.

Das System lässt sich sehr bequem mit dem Universalformat für Multilingualen Hypertext verbinden.

2.2 Programme

Diese sind längst in ein anderes Verzeichnis verschoben.

  • mktdir4: Dokumentations-Zweigverzeichnis (node) anlegen
  • nav2html: linkes Menü erzeugen
  • makedoksrow: Menü am Dokumentfuß erzeugen
  • mvtdok: Verzeichnis-Ast umbenennen, s. auch ‘mvtdok –manpage’
  • dokdata2db: Dokument-Metadatan in Datenbank einlesen, s. auch ‘dokdata2db –manpage’
  • Makefile: Steuerdatei, enthält Hinweise auf einige weitere Programme und Bausteine
  • suse_version: aktuelle SuSE-Versionsnummer ausgeben

2.3 Argumente

mktdir SUB DOK LNG TIT DES [ LNG1 TIT1 DES1 [ LNG2 TIT2 DES2 [ ... ] ] ]
Name Bedeutung Voreinstellung bei Nicht-Angabe
SUB Unterverzeichnis aktuelles Verzeichnis
DOK Dokument-Identifikator im angegebenen Verzeichnis vorgefundener Dokumentidentifikator
TIT Titel oder ‘LAB|TIT’ SUB
LAB Etikett (label) für Menü-Eintrag SUB
DES Beschreibung oder ‘SUT|DES’ TIT
SUT Untertitel (subtitle) DES

Die Voreinstellungen wählt man durch Angabe des Null-Platzhalters ‘.’.

2.4 Optionen

2.4.1 Konverter mit -c

Statt ‘deplate’ (Voreinstellung) lassen sich auch ‘pod2html’ (für selbstdokumentierende Perl-Programme) und txt2html (in alten Anwendungen) verwenden:

$ mktdir -c pod2html mktdir en “mktdir(1)” “produce a hypertext directory node”

2.4.2 Datenbankwahl mit -d

$ mktdir -d ffii -l fr 08 ffiisrv0608 “FFII en Aout” “plein de travail”

Voreinstellung: ‘a2e’

2.4.3 Stammprojekt mit -s

$ mktdir -s eupat bmwi_siemens0701 de “Siemens-Pamflet im BMWi” “Europa-Staatssekretär J.W. kann es nicht lassen ….”

Hiermit das zu erzeugende Dokument als Unterdokument von ‘eupat’ behandelt. Dies kann Wirkungen auf die Wahl diverser Bausteine und Einstellung diverser Parameter haben.

2.4.4 Simples Verzeichnis ohne Subversion: -n

Normalerweise wird ein Eintrag im Subversion-Projektarchiv erzeugt. Manchmal ist das aber nicht gewünscht. Dann sagt man ‘-n’:

$ mktdir -n testdir test060816 “mal schaun” “was rauskommt”

Unerwünscht sind Projektarchiveinträge z.B. dann, wenn an der Dauerhaftigkeit des Verzeichnisses Zweifel besteht. Ein Verzeichnis aus dem Projektarchiv zu löschen kann nämlich tückisch sein.

Um ein ohne Subversion erzeugtes Verzeichnis nachträglich einzutragen, ruft man vorher mal ‘make clean’ auf, um alle sekundären Dateien zu löschen.

$ mv testdir takoJ8 $ cd takoJ8 $ make clean $ cd .. $ svn add takoJ8 $ cd takoJ8 $ make $ cd .. $ svn commit -m “takoJ8-Quelltexte hinzugefuegt, index.de.html und nav.de.html nur lokal erzeugt”

2.5 E-Post-Archiv mit Hypermail erzeugen

Das geschieht von selbst, sofern ein Ordner gleichen Namens (auch als Symlink) in mbox/$DOK vorhanden ist. Dieser Name wird dann als Verweis mit Namen $DOK/$DOK.mbox angelegt und daraus wird über die Steuerungsregeln in mktdir_defs.mk ein Hypermail-Archiv ./HM erzeugt.

2.6 MKTJAR, MKTMON, MKTDAG: Verzeichnisbäume für ganze Zeiträume anlegen

Aufrufbeispiele

2.6.1 Für ein ganzes Jahr

cd /sig/oas mktjar oas 07

im geschwätzigen Modus

env VERBOSE=true mktjar oas 07

mit Sprachangabe

mktjar oas 07 de en

mit Unterverzeichnissen für alle Monate:

env MKTMONP=true mktjar oas 07

mit Unterverzeichnissen für alle Monate und Tage

env MKTDAGP=true mktjar oas 07 de en

mit Unterverzeichnissen für alle Monate und Tage in SVN-Archiv, aber nur deutsch:

env SVNDAGP=true mktjar oas 07 de

und noch dazu im geschwätzigen Modus:

env VERBOSE=true SVNDAGP=true mktjar oas 07 de

2.6.2 Für einen Monat

cd /m8a/07 mktmon m8a 07 01

mit Sprachangaben geschwätzig:

env VERBOSE=true mktmon m8a 07 01 zh en de

mit Unterverzeichnissen für alle Tage

env MKTDAGP=true mktmon m8a 07 01 zh en de

2.6.3 Für einen Tag

cd /sig/nist/07/01 mktdag nist 07 01 31

nur Deutsch (sonst wäre de en vorgegeben):

mktdag nist 07 01 31 de

mit Eintrag des Verzeichnisses in SVN:

env SVNDAGP=true mktdag nist 07 01 31 de

geschwätzig, mit SVN-Eintrag, in Deutsch und Englisch:

env VERBOSE=true SVNDAGP=true mktdag nist 07 01 31 env VERBOSE=true SVNDAGP=true mktdag nist 07 01 31 de en

2.7 Systemvoraussetzungen

Das System funktioniert auf dem Rechner a2e.de, und man betreibt es zunächst dadurch, dass man Dokumente in dessen Subversion-Archiv von A2E bearbeiten und einliefert. Die Objekt-Dateien werden dann automatisch auf dem Server erzeugt.

Wer die Erzeugung auf seinem eigenen Rechner nachahmen will, braucht folgendes

Das Datenbankschema besteht aus 3-4 Tabellen, die noch dokumentiert werden.

2.8 Installation

Das System wurde schon auf einigen Rechnern außerhalb von A2E installiert.

Folgendes sollte man als ein normaler Benutzer ausführen, der allerdings mit ‘sudo’ Administratorenbefehle absetzen kann (ohne deshalb jedesmal ein Passwort eingeben zu müssen). Wir nehmen dabei an, dass ein Verzeichnis ‘/svn’ vorhanden ist, unter dem Subversion-Projektarchive liegen.

$ cd /svn
$ svn checkout http://a2e.de/svn/adv/
$ cd adv
$ make install

Ferner schreibt man seine Datenbank-Passwort in die Datei ~/.dbpass_a2e. Falls man der Datenbank unter einem anderen Namen (Login) als dem lokal verwendeten bekannt ist, schreibt man auch diesen in die Datei, und zwar in eine zweite Zeile.

2.9 Aufgaben

  • Mktdir.pm: Aufrufe weiterer Perl-Programme sowie Quelltext-Verdoppelung vermeiden und allgemeiner verwendbare Prozeduren nach A2E::Mktdir auslagern, z.B. deldok, mktdir_add_subdoks, mktdirlangs, dokdata2db, mbox2cwd, dir2dir
  • POD::Long und Pod::Usage verwenden, wie in dokdata2db u.a. geschehen
  • mvtsig implementieren (Umbenennung von Benutzern samt Verzeichnissen, Login-Daten etc)
  • Unterschied subdoks und postdoks in mktdir_add_subdoks, nav2html etc konsequent unterstützen
  • Angabe von alias mit Option -a ermöglichen
  • deltdok soll dok auch aus Vorspann des übergeordneten dok löschen
  • Installationsprozedur weiter vereinfachen, verallgemeinern, automatisieren.

2.10 Unterlagen

2.11 

  • ICM – dieses System hat mit unserem viele Ziele gemeinsam und setzt ebenfalls auf Subversion auf

2.12 Chronik

  • 2008-04-02 Die Sammlung ist jetzt per als Tar-Paket und als RPM-Paket a2e-mktdir-0.0.1 verfügbar.
  • 2008-02-29 Deplate v 0.8.1 kommt ohne Sprachpaket ‘-m de’ aus, mktdir_deplate.mk angepasst
  • 2007-12-21 phm fügt Funktionen kommits, aktuals, aktuins zu mktdir_bashrc hinzu
  • 2007-11-02 mktjar.scm verbessert, es werden jetzt die Gruppenverzeichnisse für “Was war” und “Was wird” erzeugt und die Monate dort eingesetzt. Analoges ist für mktmon.scm noch zu tun.
  • 2007-09-16 mktdir_add_subdoks von Fehlern befreit und mit POD-Doku versehen
  • 2007-09-05 allerlei Verbesserungen, Skript suse_version hinzugefügt
  • 2007-08-11 Konfigurationsdateien und Konfigurationsmechanismus für mktdir und darauf basierende Anwendungen wie lnsig geschaffen
  • 2007-08-09 externe Übersetzungsvorlagen für mehrsprachige Schablonen geschaffen
  • 2007-07-20 phm verfeinert in den letzten Tagen mktdir4 & Co, beseitigt Fehler
  • 2007-07-17 Das Programm verhält sich jetzt anders, wenn nur eine Sprachversion hinzugefügt wird, s. Schalter $LANG0
  • 2007-07-17 SET_DOK: Konsistenzprüfung für DOK hinzugefügt, Mehrfachverwendung von Bezeichnern wird vermieden.
  • 2007-07-17 Umstellung auf Perl vollendet: mktdir ist nun ein Vorderende zu mktdir4.pl
  • 2007-07-16 phm stellt auf Perl-Version mktdir4 mit 4 Titel-Parametern pro Sprache um
  • 2007-07-15 phm macht mktdir von Text-Version von PHP Users aus zugänglich
  • 2007-07-14 phm fügt mktdir_add_subdoks hinzu
  • 2007-07-01 phm ermöglicht Angabe von LAB (label) und SUT (subtitle) durch Trenn-Senkrechtstrich in den Parametern TIT (title) und DES (description)
  • 2007-07-01 phm ermöglicht Aufruf ohne DOK-Parameter, nützlich z.B. für Hinzufügung neuer Sprache
deplate
http://a2e.de/adv/mktdir
© 2006-07-29 Hartmut PILCH