#!/usr/bin/perl

use utf8;
use warnings;
use strict;

BEGIN {
	if(@ARGV and $ARGV[0] eq "-") {
		open(STDIN,"/dev/null");
		shift;
	} else {
		die "Nein, du machst KEINE Pipe ins Kundeprogramm!\n" unless -t STDIN or $ENV{'TESTING'};
	}
	if(not @ARGV and ($< == 0 or $> == 0)) {
		die "Mach das NICHT als Root. Nächstes Mal gibt es Elektroschocktherapie!\n";
	}

	unless($ENV{'KUNDE_NO_PERLPATH'}) {
		my $home = $ENV{'POPHOME'}||'@POPHOME@';
		$home = $1 if $home =~ /(.*)/; # untaint
		unshift(@INC,$home.'/lib');
	}
}

select(STDERR); $|=1; select(STDOUT);
use Cf qw($DESCR $MODE); # global
use Dbase::Help qw(DoTrans);
use Fehler qw(report_status);
use Getopt::Long qw(GetOptions);
use Umlaut qw(textmodus);

{ no warnings 'once';
  $Fehler::in_kunde = 1;
}

select(STDIN); $/="\n"; select(STDOUT); # Debugger support

sub Usage() {
	textmodus(\*STDERR);
	die <<END;

Usage: $0 [Optionen] [FUNKTION Argument...]

Mögliche Optionen:

 -import-all           alles global laden
                       (Bug-Workaround; Default in Produktion; kann dort
		        mit -noimport-all abgeschaltet werden)

END
}

GetOptions(
	'import-all|d!' => \my $ImportAll,
	'help|?' => sub { Usage(); exit },
  ) or exit 1;

require Loader;
if ( lc $MODE eq 'production' || uc $MODE eq 'QSU' ? defined $ImportAll && !$ImportAll : !$ImportAll ) {
	eval "use warnings; use strict;";
	no warnings 'once';
	$^W = 1;
	Loader->import(qw(current_user edit_kunden check_perm));
} else {
	Loader->import(':global');
	require Dbase::Globals and Dbase::Globals->import;
}

if(@ARGV) {
	no strict "refs";

	my $what = shift @ARGV;
	Loader->import($what) if $ImportAll;
	my @args = @ARGV; @ARGV = ();
	my @ret = &$what(@args);
	if(@ret) {
		print "@ret\n";
	}
	report_status;
	exit(0);
}

if(current_user() <= 1) {
	my $uname = $ENV{'USER'} || $ENV{'LOGNAME'} || getpwuid($<);
	print "Für '$uname' existiert kein Usereintrag in der Datenbank.\n";
	print "Bitte korrigieren lassen!\n";
	exit 3;
}
Dbase::db_handle(no_write => 1) if check_perm("readonly",1);
my $vers = '@RPM_PACKAGE_VERSION@-@RPM_PACKAGE_RELEASE@';

print "*** $DESCR *** Kundenverwaltung *** $vers ***\n\n";
print "Helptext bei allen '>'-Prompts mit '?'.\n\n";

DoTrans {
	# wir sind in einem ffehler()-Aufruf (weil Transaktion),
	# wollen aber trotzdem fehler:-Labels beachtet wissen
	# (weil alle Prompts das verwenden).
	local $Fehler::in_ffehler = 0;

	edit_kunden(2,"###");
};

exit 0;
