summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2015-08-19 15:33:38 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2015-08-25 10:45:11 +0000
commit79cfccb7d8165299fbdffdc6663cea8f259c859b (patch)
tree4ec53d6ee218bca66d16bdaee21747b1dfc61001
parent4af5e0541fe3dee884cf8f5a1f6201770254b9fa (diff)
downloadimport-79cfccb7d8165299fbdffdc6663cea8f259c859b.tar.gz
Add perl importer base
Change-Id: Ieb1a0d2047746e68db0e494d9dc73fe5aae782a3
-rw-r--r--baserockimport/exts/ImporterBase.pm70
1 files changed, 70 insertions, 0 deletions
diff --git a/baserockimport/exts/ImporterBase.pm b/baserockimport/exts/ImporterBase.pm
new file mode 100644
index 0000000..6d05cab
--- /dev/null
+++ b/baserockimport/exts/ImporterBase.pm
@@ -0,0 +1,70 @@
+#!/usr/bin/env perl
+# Base class for import extensions written in Perl.
+#
+# Copyright © 2015 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+package ImportExtension;
+{
+ use 5.020;
+ use strict;
+ use warnings;
+
+ use Moose;
+ use FileHandle;
+ use Log::Log4perl qw(get_logger :levels);
+ use Log::Dispatch;
+ use Scalar::Util qw (looks_like_number);
+
+ sub BUILD
+ {
+ my $self = shift;
+
+ $self->setup_logging();
+ }
+
+ sub setup_logging
+ {
+ my $self = shift;
+
+ my $fd = looks_like_number($ENV{MORPH_LOG_FD})
+ ? $ENV{MORPH_LOG_FD} : 1;
+
+ my $fh = FileHandle->new_from_fd($fd, "w");
+ unless (defined $fh) {
+ die "Couldn't obtain file handle from morph log file descriptor";
+ }
+
+ my $logger = Log::Log4perl->get_logger(ref $self);
+ my $appender = Log::Log4perl::Appender->new(
+ "Log::Dispatch::Handle",
+ handle => $fh,
+ name => 'Handle'
+ );
+
+ $appender->layout("Log::Log4perl::Layout::SimpleLayout");
+ $logger->add_appender($appender);
+ $logger->level($DEBUG);
+
+ $logger->debug("Logging started");
+ }
+
+ sub run
+ {
+ ...
+ }
+}
+
+1;