Changeset 26254

Show
Ignore:
Timestamp:
12/10/08 03:52:24 (4 years ago)
Author:
ktat
Message:

add query function to ask before processing; change function name setup_helper -> setup_script

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

Legend:

Unmodified
Added
Removed
  • lang/perl/Helper-Simple/trunk/lib/Helper/Simple.pm

    r26081 r26254  
    2828BEGIN {$PROGRESSBAR = eval "require Term::ProgressBar;";} 
    2929our @EXPORT_FUNCS = qw/file copy my_var template_option template_tags var default_var 
    30                        download dl 
     30                       download dl ask 
    3131                      /; 
    3232our %DATA = 
     
    227227} 
    228228 
     229sub ask { 
     230  my ($self, $target_option) = _here(@_); 
     231  if (ref $target_option eq 'HASH') { 
     232    $target_option->{ask} = 1; 
     233    return $target_option; 
     234  } 
     235} 
     236 
    229237sub copy { 
    230238  my ($self, @data) = _here(@_); 
     
    246254    } 
    247255    $self->_files($target, $option); 
     256    return $self->{files}->{$target}; 
    248257  } 
    249258} 
     
    254263    my ($target, $option) = ref $d eq 'ARRAY' ? (@$d) : $d; 
    255264    $self->_dls($target, $option || {}); 
     265    return $self->{dls}->{$target}; 
    256266  } 
    257267} 
     
    309319 
    310320sub setup_script { 
    311   my ($class, $helper_place, $generator) = @_; 
    312   my $helper; 
    313  
    314   Carp::croak('specify helper place.') unless $helper_place; 
     321  my ($class, $script_place, $generator) = @_; 
     322  my $script; 
     323 
     324  Carp::croak('specify script place.') unless $script_place; 
    315325  local $Data::Dumper::Purity = 1; 
    316326  local $Data::Dumper::Terse  = 1; 
    317   $helper = $generator->($class, Dumper(\%DATA))  if defined $generator; 
    318   $helper ||= sprintf <<'__PL__', $Config{startperl}, ($class) x 5, Dumper(\%DATA); 
     327  $script = $generator->($class, Dumper(\%DATA))  if defined $generator; 
     328  $script ||= sprintf <<'__PL__', $Config{startperl}, ($class) x 5, Dumper(\%DATA); 
    319329%s 
    320330 
     
    338348 
    339349  local $/ = undef; 
    340   $helper .= "\n"; 
    341   $helper .= slurp(_where_pm(__PACKAGE__)); 
    342   $class->_write_file($helper_place, $helper); 
    343   chmod 0755, $helper_place; 
     350  $script .= "\n"; 
     351  $script .= slurp(_where_pm(__PACKAGE__)); 
     352  $script =~s{\n\=head1 NAME.+$}{}s; 
     353  $script .= _script_document($script_place); 
     354  $class->_write_file($script_place, $script); 
     355  chmod 0755, $script_place; 
     356} 
     357 
     358sub _script_document { 
     359  my ($place) = @_; 
     360  $place =~s{^[\./]+}{}; 
     361  return sprintf <<__DOC__, $place; 
     362=head1 Name 
     363 
     364=head1 DESCRIPTION 
     365 
     366=head1 USAGE 
     367 
     368 %s ./dir 
     369 
     370=head1 OPTIONS 
     371 
     372=head2 -h 
     373 
     374show this help 
     375 
     376__DOC__ 
     377} 
     378 
     379sub _ask_skip { 
     380  my ($self, $target, $option) = @_; 
     381  return if not ref $option or not $option->{ask}; 
     382 
     383  print "process $target ?(Y/N) "; 
     384  while (my $s = <STDIN>) { 
     385    chomp $s; 
     386    return 0 if $s =~ /^y$/i; 
     387    return 1 if $s =~ /^n$/i; 
     388    print " Y/N ?"; 
     389  } 
     390 
    344391} 
    345392 
     
    349396 
    350397  while (my ($file, $c) = each %{$pkg->_files}) { 
     398    next if $pkg->_ask_skip($file, $c); 
     399 
    351400    my ($o, $render_file) = ('', 1); 
    352401    unless (ref $c) { 
     
    544593 
    545594  while (my ($target, $option) = each %{$pkg->_dls}) { 
     595    next if $pkg->_ask_skip($target, $option); 
     596 
    546597    my $dir = $pkg->dir; 
    547598 
     
    9971048request method. default is get. 
    9981049 
     1050=head2 ask 
     1051 
     1052ask user to process. 
     1053You can put this function before some functions, copy and dl/download. 
     1054For example. 
     1055 
     1056 ask copy $file; 
     1057 
     1058Only when user answer 'Y/y', this process will be done. 
     1059 
    9991060=head2 var 
    10001061 
  • lang/perl/Helper-Simple/trunk/t/03-create_files.t

    r25952 r26254  
    99 
    1010MyHelper->setup_files('./t/tmp'); 
    11 MyHelper->setup_helper('./t/tmp/myhelper.pl'); 
     11MyHelper->setup_script('./t/tmp/myhelper.pl'); 
  • lang/perl/Helper-Simple/trunk/t/03-create_files2.t

    r25952 r26254  
    99 
    1010MyHelper2::Test->setup_files('./t/tmp2'); 
    11 MyHelper2::Test->setup_helper('./t/tmp2/myhelper2.pl'); 
     11MyHelper2::Test->setup_script('./t/tmp2/myhelper2.pl'); 
  • lang/perl/Helper-Simple/trunk/t/03-create_files3.t

    r25988 r26254  
    1111 
    1212MyHelper2::Test->setup_files('./t/tmp3'); 
    13 MyHelper2::Test->setup_helper('./t/tmp3/myhelper2.pl'); 
     13MyHelper2::Test->setup_script('./t/tmp3/myhelper2.pl');