Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
[kivitendo-erp.git] / scripts / console
index fd3ad84..e183ac8 100755 (executable)
@@ -9,16 +9,17 @@ BEGIN {
   push    @INC, "modules/fallback"; # Only use our own versions of modules if there's no system version.
 }
 
-use Config::Std;
 use Data::Dumper;
 use Devel::REPL 1.002001;
 use Term::ReadLine::Perl::Bind;     # use sane key binding for rxvt users
 
-read_config 'config/console.conf' => my %config;# if -f 'config/console.conf';
+use SL::LxOfficeConf;
+SL::LxOfficeConf->read;
 
-my $login        = shift || $config{Console}{login}        || 'demo';
-my $history_file =          $config{Console}{history_file} || '/tmp/lxoffice_console_history.log'; # fallback if users is not writable
-my $autorun      =          $config{Console}{autorun};
+my $login        = shift || $::lx_office_conf{console}{login}        || 'demo';
+my $history_file =          $::lx_office_conf{console}{history_file} || '/tmp/lxoffice_console_history.log'; # fallback if users is not writable
+my $debug_file   =          $::lx_office_conf{console}{log_file}     || '/tmp/lxoffice_console_debug.log';
+my $autorun      =          $::lx_office_conf{console}{autorun};
 
 # will be configed eventually
 my @plugins      = qw(History LexEnv Colors MultiLine::PPI FancyPrompt PermanentHistory AutoloadModules);
@@ -29,15 +30,21 @@ $repl->load_history($history_file);
 $repl->eval('help');
 $repl->print("trying to auto login as '$login'...");
 $repl->print($repl->eval("lxinit '$login'"));
-$repl->print($repl->eval($autorun)) if $autorun;
+if ($autorun) {
+  my $result = $repl->eval($autorun);
+  $repl->print($result->message) if ref($result) eq 'Devel::REPL::Error';
+}
 $repl->run;
 
 package Devel::REPL;
 
 use utf8;
 use CGI qw( -no_xhtml);
+use DateTime;
 use SL::Auth;
 use SL::Form;
+use SL::Helper::DateTime;
+use SL::InstanceConfiguration;
 use SL::Locale;
 use SL::LXDebug;
 use Data::Dumper;
@@ -53,21 +60,12 @@ sub lxinit {
 
   package main;
 
-  { no warnings 'once';
-    $::userspath  = "users";
-    $::templates  = "templates";
-    $::sendmail   = "| /usr/sbin/sendmail -t";
-  }
-
-  $::lxdebug = LXDebug->new;
-
-  eval { require "config/lx-erp.conf"; };
-  eval { require "config/lx-erp-local.conf"; } if -f "config/lx-erp-local.conf";
-
-  $::locale = Locale->new($::language);
-  $::cgi    = CGI->new qw();
-  $::form   = Form->new;
-  $::auth   = SL::Auth->new;
+  $::lxdebug       = LXDebug->new(file => $debug_file);
+  $::locale        = Locale->new($::lx_office_conf{system}->{language});
+  $::form          = Form->new;
+  $::auth          = SL::Auth->new;
+  $::instance_conf = SL::InstanceConfiguration->new;
+  $::request       = { cgi => CGI->new({}) };
 
   die 'cannot reach auth db'               unless $::auth->session_tables_present;
 
@@ -75,9 +73,14 @@ sub lxinit {
 
   require "bin/mozilla/common.pl";
 
-  die "cannot find user $login"            unless %::myconfig = $::auth->read_user($login);
+  die "cannot find user $login"            unless %::myconfig = $::auth->read_user(login => $login);
+
+  $::form->{login} = $login; # normaly implicit at login
+
   die "cannot find locale for user $login" unless $::locale   = Locale->new($::myconfig{countrycode});
 
+  $::instance_conf->init;
+
   return "logged in as $login";
 }
 
@@ -120,8 +123,9 @@ EOL
 }
 
 sub pp {
-  $Data::Dumper::Indent   = 2;
-  $Data::Dumper::Maxdepth = 2;
+  local $Data::Dumper::Indent   = 2;
+  local $Data::Dumper::Maxdepth = 2;
+  local $Data::Dumper::Sortkeys = 1;
   Data::Dumper::Dumper(@_);
 }
 
@@ -131,7 +135,7 @@ __END__
 
 =head1 NAME
 
-scripts/console - Lx Office Console
+scripts/console - Lx-Office console
 
 =head1 SYNOPSIS
 
@@ -184,8 +188,8 @@ of the classes they were created with.
 
 Configuration of this script is located in:
 
- config/console.conf
- config/console.conf.default
+ config/kivitendo.conf
+ config/kivitendo.conf.default
 
 See there for interesting options.