Modul "SL::System::Process" für system-relevante Befehle
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 8 Aug 2012 14:04:53 +0000 (16:04 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 8 Aug 2012 14:54:48 +0000 (16:54 +0200)
Wie z.B. einer Funktion, die den absoluten Pfad zu den
Kivitendo-Programmdateien zurückliefert.

SL/System/Process.pm [new file with mode: 0644]

diff --git a/SL/System/Process.pm b/SL/System/Process.pm
new file mode 100644 (file)
index 0000000..0bddfd6
--- /dev/null
@@ -0,0 +1,61 @@
+package SL::System::Process;
+
+use strict;
+
+use parent qw(Rose::Object);
+
+use English qw(-no_match_vars);
+use File::Spec;
+use File::Basename;
+
+sub exe_dir {
+  my $dir        = dirname(File::Spec->rel2abs($PROGRAM_NAME));
+  my $system_dir = File::Spec->catdir($dir, 'SL', 'System');
+  return $dir if -d $system_dir && -f File::Spec->catfile($system_dir, 'TaskServer.pm');
+
+  my @dirs = reverse File::Spec->splitdir($dir);
+  shift @dirs;
+  $dir        = File::Spec->catdir(reverse @dirs);
+  $system_dir = File::Spec->catdir($dir, 'SL', 'System');
+  return File::Spec->curdir unless -d $system_dir && -f File::Spec->catfile($system_dir, 'TaskServer.pm');
+
+  return $dir;
+}
+
+1;
+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+SL::System::Process - assorted system-relevant functions
+
+=head1 SYNOPSIS
+
+  # Get base path to Kivitendo scripts
+  my $path = SL::System::Process->exe_dir;
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<exe_dir>
+
+Returns the absolute path to the directory the Kivitendo executables
+(C<login.pl> etc.) and modules (sub-directory C<SL/> etc.) are located
+in.
+
+=back
+
+=head1 BUGS
+
+Nothing here yet.
+
+=head1 AUTHOR
+
+Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
+
+=cut