]> dxcluster.org Git - spider.git/blob - perl/Script.pm
*** empty log message ***
[spider.git] / perl / Script.pm
1 #
2 # module to do startup script handling
3 #
4 # Copyright (c) 2001 Dirk Koopman G1TLH
5 #
6 # $Id$
7 #
8
9 package Script;
10
11 use strict;
12
13 use DXUtil;
14 use DXDebug;
15 use DXChannel;
16 use DXCommandmode;
17 use DXVars;
18 use IO::File;
19
20 use vars qw($VERSION $BRANCH);
21 $VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
22 $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/  || (0,0));
23 $main::build += $VERSION;
24 $main::branch += $BRANCH;
25
26 my $base = "$main::root/scripts";
27
28 sub new
29 {
30         my $pkg = shift;
31         my $script = shift;
32         my $fn = "$base/$script";
33
34         my $fh = new IO::File $fn;
35         return undef unless $fh;
36         my $self = bless {call => $script}, $pkg;
37         my @lines;
38         while (<$fh>) {
39                 chomp;
40                 push @lines, $_;
41         }
42         $fh->close;
43         $self->{lines} = \@lines;
44         return $self;
45 }
46
47 sub run
48 {
49         my $self = shift;
50         my $dxchan = shift;
51         foreach my $l (@{$self->{lines}}) {
52                 unless ($l =~ /^\s*\#/ || $l =~ /^\s*$/) {
53                         my @out = DXCommandmode::run_cmd($dxchan, $l);
54                         if ($dxchan->can('send_ans')) {
55                                 $dxchan->send_ans(@out);
56                         } else {
57                                 dbg($_) for @out;
58                         }
59                         last if @out && $l =~ /^pri?v?/i;
60                 }
61         }
62 }