Thread Ordnung auf der Kommandozeile (21 answers)
Opened by rosti at 2014-09-18 08:44

rosti
 2014-09-19 18:37
#177386 #177386
User since
2011-03-19
3194 Artikel
BenutzerIn
[Homepage]
user image
Update: Eine methode manpage() zur automatischen Ausgabe einer man page, die erzeugt wird anhand der initial deklarierten Optionen.

Ausgegeben wird sowohl die Lang- als auch die Kurzform einer Option (--date, -d) wobei die mögliche Kurzform automatisch ermittelt wird.

Dieses optionale Feature erleichtert die Erstellung von Kommandoklassen insofern als dass nur noch an einer Stelle die möglichen Optionen deklariert werden müssen, z.B.:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
sub init{
        my $self = shift;
        # declare opts
        $self->{OPTS} = {
            date => {type => 's', descr => "Datum, Format T.M.J oder T.M.-J (v. Chr.)"},
            version => { descr => "Zeigt die Version dieser Anwendung, wenn als Flag gesetzt"},
            verbose => { descr => "Gibt weitere Informationen aus, wenn als Flag gesetzt" },
        };
}


Das erzeugt mit $self->manpage("Untersucht ein eingegebenes Datum, Optionen:"); auch die möglichen Kurzformen für die Optionen:

Code: (dl )
1
2
3
4
5
D:\>cli.pl Date
Untersucht ein eingegebenes Datum, Optionen:
--date, -d: Datum, Format T.M.J oder T.M.-J (v. Chr.)
--verbose, -verb: Gibt weitere Informationen aus, wenn als Flag gesetzt
--version, -vers: Zeigt die Version dieser Anwendung, wenn als Flag gesetzt


Update: Es gibt Fälle, da ist die Bildung einer Kurzform der Long-Opt nicht möglich, das sollte beim Design der Long-Opts berücksichtigt werden. Da Getopt::Long selbst die Kurzform einer Long-Option zuordnen kann, habe ich in der Methode manpage() eine Prüfung eingebaut, welche dem Designer eine Warnung ausgibt, wenn die deklarierten Long-Opts keine Kurzform ermöglichen (Qualitätssicherung beim Entwicklen einer Kommandoklasse).
Last edited: 2014-09-21 08:18:22 +0200 (CEST)

View full thread Ordnung auf der Kommandozeile