13.022013

Von der Kommandozeile zu Programmen, von kurzen zu langen Parameternamen

// <![CDATA[
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.

Copyright (C) 2012 Free Software Foundation, Inc.

The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.

As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.

@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
*/
// ]]>

Programmiert wird heutzutage in den seltensten Fällen vollständig in
einer geschlossenen Umgebung. An den Schnittstellen zu Kollegen und
Systemen, etwa Versionskontrolle, Testdeploy, Codereview, etc. werden
Werkzeuge auf der Kommandozeile genutzt. Arbeitsschritte, die
häufiger als drei Mal manuell auf der Kommandozeile ausgeführt
werden, sollten in einem Script zusammengefasst werden.

Das einfachste und daher meist angewandte Vorgehen besteht darin,
einfach die genutzte Kommandozeile in das Script zu übernehmen.

Hier muss man sich zwingen, einige Minuten mehr zu investieren und
die Kommandozeile so abzuändern, dass statt kurzen – meist ein
Buchstabe – Optionen auf die vorhandenen entsprechenden langen
Optionsnamen umzustellen. Diese geben wesentlich mehr Informationen,
welche Funktion der Parameter hat. Auch ist es wesentlich, den Aufruf
lesbar zu formatieren, z.B. sehr lange Aufrufe sinnvoll auf mehrere
Zeilen aufzuteilen.

Diese Informationen erleichtern einem selbst in der Zukunft, aber auch
Kollegen und anderen Mitarbeitern, das Script zu verstehen, anzupassen
und zu erweitern.

So kann zum Beispiel folgender Befehl, der ein Debian-Paket eines
fiktiven Webservers erstellt

fpm -s dir -t deb -n webserver -v 1.4.32 --iteration 1 -C /tmp/jldeb-RkV9hh -p webserver-VERSION_ARCH-ITERATION.deb -d libcurl3 -d libdb4.8 -d libpcre3 -d libgeoip1 -d liblua
5.1-0 usr/sbin usr/lib

zu folgendem Script umgebaut werden, dass auch die Installation und
die Übernahme eines Sys-V init-Scriptes vornimmt

#!/bin/shITER="$1"if [ -z "$ITER" ]; thenITER="0"fiIDIR=$(mktemp -d /tmp/jldeb-XXXXXX)

mkdir -p $IDIR/etc/init.d

cp ../../init/startstop $IDIR/etc/init.d/webserver

make install DESTDIR="$IDIR"

fpm -s dir -t deb 
    --name webserver 
    --version 1.4.32 
    --iteration $ITER
    -C $IDIR
    --maintainer "you@mail.addre.ss"
    --vendor "Company"
    --description "Webserver "
    --package webserver-VERSION_ARCH-ITERATION.deb 
    --depends libcurl3 
    --depends libdb4.8 
    --depends libpcre3 
    --depends libgeoip1 
    --depends liblua5.1-0 
    usr/sbin usr/lib etc/init.d

rm -rf $IDIR

Hier können natürlich weitere Optionen verbaut werden (Version,
Maintainer, …), dann muss die hier nicht vorhandene
Parameterbehandlung vernünftig eingebaut werden.