App-Greple-update
view release on metacpan or search on metacpan
lib/App/Greple/update.pm view on Meta::CPAN
182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212our
$opt_U
=
''
;
my
$current_file
;
my
$contents
;
my
@update_diffcmd
;
sub
debug {
$debug
= 1;
}
sub
update_initialize {
@update_diffcmd
= shellwords
$opt_update_diffcmd
;
if
(
$opt_U
ne
''
) {
@update_diffcmd
= (
'diff'
,
"-U$opt_U"
);
}
if
(
defined
$opt_backup
) {
$opt_suffix
=
$opt_backup
ne
''
?
$opt_backup
:
'.bak'
;
}
}
sub
update_begin {
my
%arg
=
@_
;
$current_file
=
delete
$arg
{
&FILELABEL
} or
die
;
$contents
=
$_
if
$remember_data
;
}
#
# define &divert_stdout and &recover_stdout
#
{
my
$diverted
= 0;
lib/App/Greple/update.pm view on Meta::CPAN
222223224225226227228229230231232233234235236237238239240241242
sub
recover_stdout {
$diverted
=
$diverted
== 1 ? 0 :
return
;
close
STDOUT;
open
STDOUT,
'>&'
, \
*UPDATE_STDOUT
or
die
"open: $!"
;
}
}
sub
update_diff {
my
$orig
=
$current_file
;
my
$fh
;
state
$fdpath
=
do
{
my
$fd
= DATA->
fileno
;
first { -r
"$_/$fd"
}
qw( /dev/fd /proc/self/fd )
;
};
if
(
$fdpath
and
$remember_data
) {
lib/App/Greple/update.pm view on Meta::CPAN
249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
$orig
=
sprintf
"%s/%d"
,
$fdpath
,
$fh
->
fileno
;
}
@update_diffcmd
or confess
"Empty diff command"
;
exec
@update_diffcmd
,
$orig
,
"-"
;
die
"exec: $!\n"
;
}
my
$divert_buffer
;
sub
update_divert {
my
%arg
=
@_
;
my
$filename
=
delete
$arg
{
&FILELABEL
};
$divert_buffer
=
''
;
divert_stdout(\
$divert_buffer
);
}
sub
update_file {
my
%arg
=
@_
;
my
$filename
=
delete
$arg
{
&FILELABEL
};
my
$newname
=
''
;
recover_stdout() or
die
;
return
if
$arg
{discard};
$divert_buffer
= decode
'utf8'
,
$divert_buffer
;
return
if
$divert_buffer
eq
$_
;
return
if
$divert_buffer
eq
''
;
91011121314151617181920212223242526272829my
$greple_path
= get_path(
'greple'
,
'App::Greple'
) or
die
Dumper \
%INC
;
sub
greple {
Runner->new(
$greple_path
,
@_
);
}
sub
run {
greple(
@_
)->run;
}
sub
update {
greple
'-Mupdate'
,
@_
;
}
sub
slurp {
my
$file
=
shift
;
open
my
$fh
,
"<:utf8"
,
$file
or
die
"open: $!"
;
do
{
local
$/; <
$fh
> };
}
sub
line {
( run in 0.369 second using v1.01-cache-2.11-cpan-ec4f86ec37b )