7 |
|
|
8 |
#use Continuity::Widget::DomNode; |
#use Continuity::Widget::DomNode; |
9 |
use Data::Dump qw/dump/; |
use Data::Dump qw/dump/; |
10 |
use Carp qw/confess cluck/; |
use Carp qw/confess cluck carp/; |
11 |
use File::Slurp; |
use File::Slurp; |
12 |
|
|
13 |
use Frey::Bookmarklet; |
use Frey::Bookmarklet; |
26 |
isa => 'Uri', coerce => 1, |
isa => 'Uri', coerce => 1, |
27 |
required => 1, |
required => 1, |
28 |
default => sub { |
default => sub { |
29 |
cluck "undefined request_url"; |
carp "undefined request_url"; |
30 |
'/'; |
'/'; |
31 |
}, |
}, |
32 |
); |
); |
373 |
sub clean_status { |
sub clean_status { |
374 |
my ($self) = shift; |
my ($self) = shift; |
375 |
@head = ( 'static/frey.css' ); |
@head = ( 'static/frey.css' ); |
|
my $params = { request_url => $self->request_url }; |
|
376 |
@status = ( |
@status = ( |
377 |
{ 'ClassBrowser' => Frey::ClassBrowser->new( %$params, usage_on_top => 0 )->as_markup }, |
{ 'ClassBrowser' => Frey::ClassBrowser->new( usage_on_top => 0 )->as_markup }, |
378 |
{ 'Bookmarklets' => Frey::Bookmarklet->new( %$params )->as_markup }, |
{ 'Bookmarklets' => Frey::Bookmarklet->new->as_markup }, |
379 |
{ 'INC' => Frey::INC->new( %$params )->as_markup }, |
{ 'INC' => Frey::INC->new->as_markup }, |
380 |
); |
); |
381 |
$icon_html = ''; |
$icon_html = ''; |
382 |
} |
} |
468 |
$Frey::Bootstrap::log_path || die "no log_path?"; |
$Frey::Bootstrap::log_path || die "no log_path?"; |
469 |
} |
} |
470 |
|
|
471 |
|
our $last_log_pos = 0; |
472 |
|
our $last_log_line = 0; |
473 |
|
|
474 |
|
our $pwd = `pwd`; |
475 |
|
chomp $pwd; |
476 |
|
|
477 |
sub warnings_html { |
sub warnings_html { |
478 |
my ($self,$level) = shift; |
my ($self,$level) = shift; |
479 |
$level ||= $self->debug, |
$level ||= $self->debug, |
482 |
my $max = 30; |
my $max = 30; |
483 |
my $pos = 0; |
my $pos = 0; |
484 |
my @warnings = ( '' x $max ); # XXX circualar buffer for 50 lines |
my @warnings = ( '' x $max ); # XXX circualar buffer for 50 lines |
485 |
my $line = 0; |
my $line = $last_log_line; |
486 |
my $multiline_end; |
my $multiline_end; |
487 |
|
|
488 |
# XXX do we really want to do this every time? |
# XXX do we really want to do this every time? |
496 |
} |
} |
497 |
$self->add_css( $css ); |
$self->add_css( $css ); |
498 |
|
|
499 |
open(my $log, '<', $path) || die "can't open $path: $!"; |
open(my $log, '<', $path) || die "can't open $path: $!"; |
500 |
|
seek($log, $last_log_pos, 0) || warn "can't seek: $!"; |
501 |
while(<$log>) { |
while(<$log>) { |
502 |
chomp; |
chomp; |
503 |
$line++; |
$line++; |
530 |
my $level = $1; |
my $level = $1; |
531 |
my $msg = $_; |
my $msg = $_; |
532 |
|
|
533 |
|
# Mojo seems to expand warn messages to full path which is annoying |
534 |
|
$msg =~ s{/[^/]+/\.\./}{/}gs; |
535 |
|
$msg =~ s{$pwd/*}{}gs; |
536 |
|
|
537 |
my $spacer = ' '; |
my $spacer = ' '; |
538 |
my $real_msg = expand( $msg ); |
my $real_msg = expand( $msg ); |
539 |
if ( length($real_msg) > $self->html_dump_width ) { |
if ( length($real_msg) > $self->html_dump_width ) { |
557 |
$warnings[ $pos++ % $max ] = $msg; |
$warnings[ $pos++ % $max ] = $msg; |
558 |
} |
} |
559 |
} |
} |
560 |
warn "log has $line lines tell position ",tell($log); |
$last_log_pos = tell($log); |
561 |
|
$last_log_line = $line; |
562 |
|
warn "log has $line lines tell position $last_log_pos"; |
563 |
close($log) || die "can't close $path: $!"; |
close($log) || die "can't close $path: $!"; |
564 |
|
|
565 |
my $size = -s $path; |
my $size = -s $path; |
574 |
# need to wrap editor link into span so we can have links in warnings |
# need to wrap editor link into span so we can have links in warnings |
575 |
qq|<span class="frey-popup"><a target="editor" href="/editor+$path+$line" title="$path \| $size -> $s bytes \| $line -> $pos lines \| level $level">warn</a><code>| |
qq|<span class="frey-popup"><a target="editor" href="/editor+$path+$line" title="$path \| $size -> $s bytes \| $line -> $pos lines \| level $level">warn</a><code>| |
576 |
. $self->editor_links( $warnings ) |
. $self->editor_links( $warnings ) |
577 |
. qq|</code></span></a>| |
. qq|</code></span>| |
578 |
; |
; |
579 |
} |
} |
580 |
|
|