summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/WWW/Pocket/Script.pm15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/WWW/Pocket/Script.pm b/lib/WWW/Pocket/Script.pm
index ddf7291..5238931 100644
--- a/lib/WWW/Pocket/Script.pm
+++ b/lib/WWW/Pocket/Script.pm
@@ -50,7 +50,7 @@ sub run {
my @argv = @_;
my $method = shift @argv;
- if ($self->can($method)) {
+ if ($self->_method_is_command($method)) {
return $self->$method(@argv);
}
else {
@@ -58,6 +58,19 @@ sub run {
}
}
+sub _method_is_command {
+ my $self = shift;
+ my ($name) = @_;
+
+ return if $name eq 'run' || $name eq 'meta';
+ return if $name =~ /^_/;
+ my $method = $self->meta->find_method_by_name($name);
+ return unless $method;
+ return if $method->isa('Class::MOP::Method::Accessor');
+
+ return 1;
+}
+
sub authenticate {
my $self = shift;
$self->pocket;