view release on metacpan or search on metacpan
lib/Beagle/Cmd/Command/att.pm view on Meta::CPAN
131132133134135136137138139140141142143144145146147148149150151my
$bh
;
my
$pid
;
if
(
$self
->info ) {
$bh
= current_handle();
$pid
=
$bh
->info->id;
}
elsif
(
$self
->parent ) {
my
@ret
= resolve_entry(
$self
->parent,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$pid
) or die_entry_not_found(
$pid
);
}
die_entry_ambiguous(
$pid
,
@ret
)
unless
@ret
== 1;
$pid
=
$ret
[0]->{id};
$bh
=
$ret
[0]->{handle};
}
if
(
$self
->add ) {
my
@added
;
for
my
$file
(
@$args
) {
if
( -f
$file
) {
lib/Beagle/Cmd/Command/cast.pm view on Meta::CPAN
192021222324252627282930313233343536373839die
"beagle cast --type new_type id1 id2 [...]"
unless
@$args
&&
$self
->type;
my
$type
=
lc
$self
->type;
my
$new_class
= entry_type_info->{
$type
}{class};
die
"invalid type: $type"
unless
$new_class
;
for
my
$i
(
@$args
) {
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
my
$id
=
$ret
[0]->{id};
my
$bh
=
$ret
[0]->{handle};
my
$entry
=
$ret
[0]->{entry};
my
$new_object
=
$new_class
->new(
%$entry
);
if
(
$bh
->create_entry(
$new_object
,
message
=>
"cast $id to type $type"
lib/Beagle/Cmd/Command/cat.pm view on Meta::CPAN
2526272829303132333435363738394041424344sub
execute {
my
(
$self
,
$opt
,
$args
) =
@_
;
$args
=
$self
->resolve_ids(
$args
);
die
"beagle cat id [...]"
unless
@$args
;
my
$first
= 1;
for
my
$i
(
@$args
) {
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
my
$id
=
$ret
[0]->{id};
my
$bh
=
$ret
[0]->{handle};
my
$entry
=
$ret
[0]->{entry};
puts
'='
x term_width()
unless
$first
;
undef
$first
if
$first
;
lib/Beagle/Cmd/Command/comment.pm view on Meta::CPAN
5455565758596061626364656667686970717273sub
execute {
my
(
$self
,
$opt
,
$args
) =
@_
;
my
$pid
=
$self
->parent;
die
"beagle comment --parent parent_id ..."
unless
$pid
;
my
@ret
= resolve_entry(
$pid
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$pid
) or die_entry_not_found(
$pid
);
}
die_entry_ambiguous(
$pid
,
@ret
)
unless
@ret
== 1;
$pid
=
$ret
[0]->{id};
my
$bh
=
$self
->inplace ?
$ret
[0]->{handle} : current_handle();
$bh
||=
$ret
[0]->{handle};
my
$author
=
$self
->author || current_user() ||
''
;
my
$body
=
join
' '
,
@$args
;
lib/Beagle/Cmd/Command/comments.pm view on Meta::CPAN
18192021222324252627282930313233343536
return
super;
};
override
'filter'
=>
sub
{
my
$self
=
shift
;
my
@found
= super;
my
$pid
=
$self
->parent;
return
@found
unless
defined
$pid
;
my
@ret
= resolve_entry(
$pid
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$pid
) or die_entry_not_found(
$pid
);
}
die_entry_ambiguous(
$pid
,
@ret
)
unless
@ret
== 1;
my
$id
=
$ret
[0]->{id};
return
grep
{
$_
->parent_id eq
$id
}
@found
;
};
sub
command_names {
'comments'
};
lib/Beagle/Cmd/Command/log.pm view on Meta::CPAN
141516171819202122232425262728293031323334no
Any::Moose;
__PACKAGE__->meta->make_immutable;
sub
execute {
my
(
$self
,
$opt
,
$args
) =
@_
;
my
(
$id
,
$entry
,
$bh
);
if
(
$self
->id ) {
my
$i
=
$self
->id;
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
$id
=
$ret
[0]->{id};
$bh
=
$ret
[0]->{handle};
$entry
=
$ret
[0]->{entry};
}
$bh
||= Beagle::Handle->new(
root
=> current_root() );
my
(
$ret
,
$out
) =
lib/Beagle/Cmd/Command/mark.pm view on Meta::CPAN
154155156157158159160161162163164165166167168169170171172173my
@ids
;
$args
=
$self
->resolve_ids(
$args
);
for
my
$i
(
@$args
) {
if
(
length
$i
== 32 ) {
push
@ids
,
$i
;
}
else
{
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
push
@ids
,
$ret
[0]->{id};
}
}
if
(
$self
->add ||
$self
->
delete
||
$self
->set ||
$self
->unset ) {
for
my
$id
(
@ids
) {
lib/Beagle/Cmd/Command/mv.pm view on Meta::CPAN
2526272829303132333435363738394041424344my
@created
;
my
$relation
;
my
$to_root
= name_root(
$name
) or
die
"no such beagle with name: $name"
;
require
Beagle::Handle;
my
$to
= Beagle::Handle->new(
root
=>
$to_root
);
for
my
$i
(
@$args
) {
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
my
$id
=
$ret
[0]->{id};
my
$bh
=
$ret
[0]->{handle};
my
$entry
=
$ret
[0]->{entry};
if
(
$bh
->name eq
$to
->name ) {
warn
"$id is already in $name"
;
next
;
}
lib/Beagle/Cmd/Command/rm.pm view on Meta::CPAN
293031323334353637383940414243444546474849$args
=
$self
->resolve_ids(
$args
);
die
"beagle rm id [...]"
unless
@$args
;
my
@deleted
;
my
$relation
;
for
my
$i
(
@$args
) {
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1 ||
$self
->force;
for
my
$ret
(
@ret
) {
my
$id
=
$ret
->{id};
my
$bh
=
$ret
->{handle};
my
$entry
=
$ret
->{entry};
if
(
$bh
->delete_entry(
$entry
,
message
=>
$self
->message ) ) {
push
@deleted
, {
handle
=>
$bh
,
id
=>
$entry
->id };
lib/Beagle/Cmd/Command/spread.pm view on Meta::CPAN
7273747576777879808182838485868788899091$args
=
$self
->resolve_ids(
$args
);
die
'beagle spread id1 id2 [...]'
unless
@$args
;
die
"can't use both --template and --template-file"
if
defined
$self
->template &&
defined
$self
->template_file;
my
$cmd
=
$self
->command;
for
my
$i
(
@$args
) {
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
my
$id
=
$ret
[0]->{id};
my
$bh
=
$ret
[0]->{handle};
my
$entry
=
$ret
[0]->{entry};
my
$msg
;
my
$template
;
lib/Beagle/Cmd/Command/update.pm view on Meta::CPAN
404142434445464748495051525354555657585960sub
execute {
my
(
$self
,
$opt
,
$args
) =
@_
;
$args
=
$self
->resolve_ids(
$args
);
die
"beagle update id [...]"
unless
@$args
;
for
my
$i
(
@$args
) {
my
@ret
= resolve_entry(
$i
,
handle
=> current_handle() ||
undef
);
unless
(
@ret
) {
@ret
= resolve_entry(
$i
) or die_entry_not_found(
$i
);
}
die_entry_ambiguous(
$i
,
@ret
)
unless
@ret
== 1;
my
$id
=
$ret
[0]->{id};
my
$bh
=
$ret
[0]->{handle};
my
$entry
=
$ret
[0]->{entry};
if
(
$self
->set ) {
for
my
$item
( @{
$self
->set } ) {
my
(
$key
,
$value
) =
split
/=/,
$item
, 2;
if
(
$entry
->can(
$key
) ) {
lib/Beagle/Util.pm view on Meta::CPAN
636465666768697071727374757677787980818283
};
}
our
@EXPORT
= (
@Beagle::Helper::EXPORT
, qw/
enabled_devel enable_devel disable_devel enabled_cache enable_cache disable_cache
set_current_root current_root root_name set_current_root_by_name check_root
static_root kennel user_alias roots set_roots
core_config set_core_config set_user_alias relation set_relation
default_format split_id root_name name_root root_type
system_alias create_backend alias aliases resolve_id die_entry_not_found
die_entry_ambiguous current_handle handles resolve_entry
is_in_range parse_wiki parse_markdown parse_pod
whitelist set_whitelist
detect_roots backends_root cache_root
share_root marks set_marks
spread_template_roots web_template_roots
entry_type_info entry_types
relation_path marks_path
web_options tweak_name plugins po_roots
web_all web_names web_admin
lib/Beagle/Util.pm view on Meta::CPAN
238239240241242243244245246247248249250251252253254255256257258259260
return
$ROOT
=
$dir
;
}
else
{
die
"$dir is invalid backend root"
;
}
}
sub
current_root {
return
$ROOT
if
defined
$ROOT
;
my
$not_die
=
shift
;
eval
{ set_current_root() };
if
( $@ && !
$not_die
) {
die
$@;
}
return
$ROOT
if
$ROOT
;
return
;
}
sub
set_current_root_by_name {
my
$name
=
shift
or
die
'need name'
;
return
set_current_root( name_root(
$name
) );
lib/Beagle/Util.pm view on Meta::CPAN
715716717718719720721722723724725726727728729730731732733734735
for
my
$entry
( @{
$bh
->entries } ) {
if
(
$entry
->serialize(
id
=> 1 ) =~
qr/$str/
im ) {
push
@found
,
{
id
=>
$entry
->id,
entry
=>
$entry
,
handle
=>
$bh
};
}
}
}
return
@found
;
}
sub
die_not_found {
my
$str
=
shift
;
die
"no such entry match $str"
;
}
sub
resolve_id {
my
$i
=
shift
or
return
;
my
%opt
= (
handle
=>
undef
,
@_
);
my
$bh
=
$opt
{
'handle'
};
lib/Beagle/Util.pm view on Meta::CPAN
744745746747748749750751752753754755756757758759760761762763764
my
@ret
;
for
my
$i
(
@ids
) {
my
$root
= name_root(
$relation
->{
$i
} );
my
$bh
= Beagle::Handle->new(
root
=>
$root
);
push
@ret
, {
id
=>
$i
,
entry
=>
$bh
->
map
->{
$i
},
handle
=>
$bh
};
}
return
@ret
;
}
}
sub
die_entry_not_found {
my
$i
=
shift
;
die
"no such entry matching $i"
;
}
sub
die_entry_ambiguous {
my
$i
=
shift
;
my
@items
=
@_
;
my
@out
=
"ambiguous '$i':"
;
for
my
$item
(
@items
) {
push
@out
,
join
(
' '
,
$item
->{id},
$item
->{entry}->summary(10) );
t/api/01.util.t view on Meta::CPAN
1234567891011121314151617181920use
Test::More;
use
Beagle::Util;
my
@subs
= qw/
enabled_devel enable_devel disable_devel enabled_cache enable_cache disable_cache
set_current_root current_root root_name set_current_root_by_name check_root
static_root kennel core_config user_alias
set_core_config set_user_alias roots set_roots relation
set_relation default_format split_id root_name name_root root_type
system_alias create_backend alias aliases resolve_id die_entry_not_found
die_entry_ambiguous current_handle handles share_root resolve_entry
is_in_range parse_wiki parse_markdown parse_pod marks set_marks
whitelist set_whitelist detect_roots
detect_roots backends_root cache_root
share_root marks set_marks
spread_template_roots web_template_roots
entry_type_info entry_types
relation_path marks_path web_options
tweak_name plugins po_roots
web_all web_names web_admin