Changeset 21801

Show
Ignore:
Timestamp:
10/21/08 22:48:38 (5 years ago)
Author:
ktat
Message:

make generated helper script including Helper::Simple.

Location:
lang/perl/Helper-Simple/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Helper-Simple/trunk/Makefile.PL

    r21710 r21801  
    2323        'LWP::UserAgent'     => 0, 
    2424        'IO::String'         => 0, 
    25         'File::NCopy'        => 0, 
    2625        'Module::Pluggable'  => 0, 
    2726        'File::Where'        => 0, 
  • lang/perl/Helper-Simple/trunk/lib/Helper/Simple.pm

    r21768 r21801  
    1313use Template (); 
    1414use Tie::Hash::Indexed (); 
    15 use Term::ProgressBar (); 
    1615use Cwd qw/getcwd/; 
    1716use LWP::UserAgent (); 
    1817use IO::String (); 
    19 use File::NCopy (); 
    2018use Module::Pluggable (); 
     19use Clone (); 
    2120use Config; 
    2221 
    23 use Clone (); 
     22eval "require Term::ProgressBar;"; 
     23our $PROGRESSBAR = $@ ? 0 : 1; 
    2424 
    2525our @EXPORT_FUNCS = qw/file copy my_var dir_case subdir_case 
     
    7575      } 
    7676      foreach my $p (@pms) { 
    77         local $@; 
    7877        eval "require $p;"; 
    7978        warn "require error: $p ($@)" if $@; 
     
    350349  local $Data::Dumper::Terse  = 1; 
    351350  $helper = $generator->($class, Dumper(\%DATA))  if defined $generator; 
    352  
    353   _write_file($helper_place, $helper ||= sprintf <<'__PL__', $Config{startperl}, ($class) x 4, Dumper(\%DATA)); 
     351  $helper ||= sprintf <<'__PL__', $Config{startperl}, ($class) x 5, Dumper(\%DATA); 
    354352#!%s 
    355353 
     
    359357no strict 'refs'; 
    360358 
    361 use base 'Helper::Simple'; 
     359push @%s::ISA, 'Helper::Simple'; 
    362360 
    363361foreach my $pkg (grep /^%s::/, keys %%Helper::Simple::DATA) { 
     
    371369} 
    372370__PL__ 
     371 
     372  local $/ = undef; 
     373  $helper .= "\n"; 
     374  $helper .= slurp(File::Where->where_pm(__PACKAGE__)); 
     375  _write_file($helper_place, $helper); 
    373376} 
    374377 
     
    629632 
    630633  _info('download', $target); 
    631   my $progress = new Term::ProgressBar 
    632     ({ 
    633       count => 512, 
    634       name  => "# downloading ", 
    635       ETA   => 'linear', 
    636      }); 
    637   $progress->minor(0);           # turns off the floating asterisks. 
    638   $progress->max_update_rate(1); # only relevant when ETA is used. 
    639  
    640   my $did_set_target = 0; 
    641   my $received_size  = 0; 
    642   my $next_update    = 0; 
    643  
    644   my %args = ( 
    645               ':content_cb' => sub { 
    646                 my ($data, $cb_response, $protocol) = @_; 
    647                 unless ($did_set_target) { 
    648                   if (my $content_length = $cb_response->content_length) { 
    649                     $progress->target($content_length); 
    650                     $did_set_target = 1; 
    651                   } else { 
    652                     $progress->target($received_size + 2 * length $data); 
    653                   } 
    654                 } 
    655                 $received_size += length $data; 
    656                 $content .= $data; 
    657  
    658                 $next_update = $progress->update($received_size) if 
    659                   $received_size >= $next_update; 
    660  
    661               }, 
    662               ':read_size_hint' => 512, 
    663              ); 
     634  my %args; 
     635  if ($PROGRESSBAR) { 
     636    my $progress = new Term::ProgressBar 
     637      ({ 
     638        count => 512, 
     639        name  => "# downloading ", 
     640        ETA   => 'linear', 
     641       }); 
     642    $progress->minor(0);           # turns off the floating asterisks. 
     643    $progress->max_update_rate(1);   # only relevant when ETA is used. 
     644 
     645    my $did_set_target = 0; 
     646    my $received_size  = 0; 
     647    my $next_update    = 0; 
     648 
     649    %args = ( 
     650             ':content_cb' => sub { 
     651               my ($data, $cb_response, $protocol) = @_; 
     652               unless ($did_set_target) { 
     653                 if (my $content_length = $cb_response->content_length) { 
     654                   $progress->target($content_length); 
     655                   $did_set_target = 1; 
     656                 } else { 
     657                   $progress->target($received_size + 2 * length $data); 
     658                 } 
     659               } 
     660               $received_size += length $data; 
     661               $content .= $data; 
     662 
     663               $next_update = $progress->update($received_size) if 
     664                 $received_size >= $next_update; 
     665 
     666             }, 
     667             ':read_size_hint' => 512, 
     668            ); 
     669  } 
    664670  my $res = $ua->$req($target, $req eq 'get' ? (%{$option->{form} || {}}, %args) 
    665671                      : {%{$option->{form} || {}}, %args}); 
     
    10061012 here->dir; # returns "lib/Hoge/" 
    10071013 
     1014=head1 TODO 
     1015 
     1016=over 4 
     1017 
     1018=item need helper program to create template. 
     1019 
     1020like the following; 
     1021 
     1022 helper-template -template catalyst YourApp 
     1023 helper-setup -template catalyst YourApp ./yourapp.pl 
     1024 
     1025=back 
     1026 
    10081027=head1 AUTHOR 
    10091028