Prty::ApplicationPaths - Ermittele Pfade einer Unix-Applikation
# Homedir: <prefix>/opt/<application> (<prefix> kann leer sein) use FindBin qw/$Bin/; use lib "$Bin/../lib/perl5"; # .. d.h. $depth == 1 use Prty::ApplicationPaths; my $app = Prty::ApplicationPaths->new; my $name = $app->name; # <application> my $prefix = $app->prefix; # <prefix> my $homeDir = $app->homeDir; # <prefix>/opt/<application> my $etcDir = $app->etcDir; # <prefix>/etc/opt/<application> my $varDir = $app->varDir; # <prefix>/var/opt/<application>
Die Klasse ermöglicht einer Perl-Applikation unter Unix ohne hartkodierte absolute Pfade auszukommen. Alle Pfade, unter denen sich die verschiedenen Teile der Applikation (opt-, etc-, var-Bereich) im Dateisystem befinden, werden von der Klasse aus dem Pfad des ausgeführten Programms hergeleitet.
Das Layout entspricht der opt-Installationsstruktur eines Unix-Systems:
/opt/<application> (Programmcode und statische Daten)
/etc/opt/<application> (Konfiguration)
/var/opt/<application> (Bewegungsdaten)
Die Pfade müssen nicht im Root-Verzeichnis beginnen, ihnen kann auch ein Präfix-Pfad <prefix> vorangestellt sein. Z.B. kann sich die Struktur im Home-Verzeichnis des Benutzers befinden (siehe Abschnitt "EXAMPLES").
/opt/<application>/...
prefix() : (Leerstring) name() : <application> homeDir() : /opt/<application> etcDir() : /etc/opt/<application> varDir() : /var/opt/<application>
/home/<user>/opt/<application>/...
prefix() : /home/<user> name() : <application> homeDir() : /home/<user>/opt/<application> etcDir() : /home/<user>/etc/opt/<application> varDir() : /home/<user>/var/opt/<application>
$app = $class->new; $app = $class->new($depth);
Instantiiere ein Objekt der Klasse und liefere dieses zurück.
Gibt an, wie viele Subverzeichnisse tief das Programm unterhalb des Applikations-Homedir (<prefix>/opt/<application>) angesiedelt ist.
$name = $app->name;
Liefere den Namen <name> der Applikation.
$prefix = $app->prefix; $prefix = $app->prefix($subPath);
Liefere den Pfad-Präfix <prefix> der Applikations-Installation, also den Pfad oberhalb des opt-Verzeichnisses. Ist die Applikation in /opt (opt im Wurzelverzeichnis) installiert, wird ein Leerstring geliefert. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
$homeDir = $app->homeDir; $homeDir = $app->homeDir($subPath);
Liefere das Verzeichnis, in dem der Programmcode und die statischen Daten der Applikation abgelegt sind. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
$etcDir = $app->etcDir; $etcDir = $app->etcDir($subPath);
Liefere das Verzeichnis, in dem die Konfigurationsdateien der Applikation abgelegt sind. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
$varDir = $app->varDir; $varDir = $app->varDir($subPath);
Liefere das Verzeichnis, in dem die Applikation Bewegungsdaten speichert. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
Andere Layouts sind möglich und könnten von der Klasse ebenfalls behandelt werden. Bei Bedarf kann der Konstruktor um eine Option -layout=>$layout erweitert und das betreffende Layout innerhalb des Konstruktors behandelt werden. Beispiele:
-layout=>$layout
Installation mit Unterscheidung nach Versionsnummer:
<prefix>/opt/<application>/<version> <prefix>/etc/opt/<application>/<version> <prefix>/var/opt/<application>/<version>
Installation mit Unterscheidung nach Versionsnummer in eigenem Subverzeichnis:
<prefix>/opt/<application>/version/<version> <prefix>/etc/opt/<application>/<version> <prefix>/var/opt/<application>/<version>
Kein opt-Unterverzeichnis in etc und var:
<prefix>/opt/<application> <prefix>/etc/<application> <prefix>/var/<application>
Die Methoden etcDir() und varDir() könnten um eine Variante mit zwei Parametern erweitert werden, die die Vorgabe des Trennzeichens erlaubt:
$path = $app->etcDir('','.conf'); # <prefix>/etc/opt/<application>.conf $path = $app->varDir('','.log'); # <prefix>/etc/opt/<application>.log
1.114
Frank Seitz, http://fseitz.de/
Copyright (C) 2017 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Prty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prty
CPAN shell
perl -MCPAN -e shell install Prty
For more information on module installation, please visit the detailed CPAN module installation guide.