ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/bin/cfshell
Revision: 1.5
Committed: Tue Apr 8 20:26:32 2008 UTC (16 years, 1 month ago) by root
Branch: MAIN
CVS Tags: rel-2_01, rel-1_30, rel-1_222, rel-1_221, rel-1_2, rel-1_29, rel-1_24, rel-1_25, rel-1_22, rel-1_23, HEAD
Changes since 1.4: +2 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2    
3 root 1.3 BEGIN { $ENV{PERL_RL} = "gnu" } use Term::ReadLine; # this suxx
4 root 1.5
5 root 1.1 use AnyEvent;
6     use Storable;
7     use YAML;
8    
9     @ARGV == 5 or die "Usage: $0 host port login password dm-pass\n";
10    
11 root 1.5 use base Deliantra::Protocol::Base;
12 root 1.1
13 root 1.2 my $login = AnyEvent->condvar;
14 root 1.3 my $quit = AnyEvent->condvar;
15     my $rl = new Term::ReadLine "cfshell";
16 root 1.1
17     sub logged_in {
18     my ($self) = @_;
19    
20 root 1.2 $login->broadcast;
21    
22 root 1.1 $self->send_command ("dmhide $ARGV[4]");
23     print "\nlogged in.\n";
24     }
25    
26 root 1.2 sub fatal {
27 root 1.3 $rl->crlf;
28     $rl->deprep_terminal;
29     print "$_[0]\n";
30 root 1.2 exit 1;
31     }
32    
33 root 1.1 sub eof {
34     my ($self) = @_;
35    
36 root 1.2 fatal "server closed connection.";
37     }
38    
39     sub query {
40     my ($self, $flags, $prompt) = @_;
41     fatal "unexpected prompt: $prompt";
42     }
43    
44     sub drawinfo {
45     my ($self, $flags, $text) = @_;
46    
47 root 1.3 $rl->crlf;
48     print "$text\n";
49     $rl->forced_update_display;
50 root 1.1 }
51    
52     my $cf = new main
53     host => $ARGV[0],
54     port => $ARGV[1] || 13327,
55     user => $ARGV[2],
56     pass => $ARGV[3],
57     mapw => 1,
58     maph => 1;
59    
60 root 1.3 $login->wait;
61 root 1.2
62 root 1.3 my $w = AnyEvent->io (fh => $rl->IN, poll => 'r', cb => sub { $rl->callback_read_char });
63 root 1.2
64 root 1.3 $rl->callback_handler_install ("$ARGV[0]> ", sub {
65     $rl->add_history ($_[0]);
66 root 1.4 $cf->send_ext_req (perl_eval => code => $_[0], sub {
67     my ($msg) = @_;
68 root 1.1
69 root 1.3 $rl->crlf;
70 root 1.1
71     my ($status, $result) = split / /, $data, 2;
72 root 1.4 if (exists $msg->{error}) {
73     print "$msg->{error}\n";
74 root 1.1 } else {
75 root 1.4 print Dump Storable::thaw $msg->{result};
76 root 1.1 }
77 root 1.3
78     $rl->forced_update_display;
79 root 1.1 });
80 root 1.3 });
81    
82     $quit->wait;
83     $rl->callback_handler_remove;
84 root 1.1