Newer Older
89 lines | 2.099kb
copy gitweblite soruce code
root authored on 2012-11-23
1
package Mojolicious::Command::eval;
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
2
use Mojo::Base 'Mojolicious::Command';
copy gitweblite soruce code
root authored on 2012-11-23
3

            
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
4
use Getopt::Long qw(GetOptionsFromArray :config no_auto_abbrev no_ignore_case);
copy gitweblite soruce code
root authored on 2012-11-23
5

            
6
has description => "Run code against application.\n";
update Mojolicious to 4.57
Yuki Kimoto authored on 2013-12-02
7
has usage       => <<EOF;
copy gitweblite soruce code
root authored on 2012-11-23
8
usage: $0 eval [OPTIONS] CODE
9

            
10
  mojo eval 'say app->ua->get("/")->res->body'
11
  mojo eval -v 'app->home'
update Mojolicious to 4.57
Yuki Kimoto authored on 2013-12-02
12
  mojo eval -V 'app->renderer->paths'
copy gitweblite soruce code
root authored on 2012-11-23
13

            
14
These options are available:
15
  -v, --verbose   Print return value to STDOUT.
update Mojolicious to 4.57
Yuki Kimoto authored on 2013-12-02
16
  -V              Print returned data structure to STDOUT.
copy gitweblite soruce code
root authored on 2012-11-23
17
EOF
18

            
19
sub run {
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
20
  my ($self, @args) = @_;
copy gitweblite soruce code
root authored on 2012-11-23
21

            
update Mojolicious to 4.57
Yuki Kimoto authored on 2013-12-02
22
  GetOptionsFromArray \@args, 'v|verbose' => \my $v1, 'V' => \my $v2;
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
23
  my $code = shift @args || '';
copy gitweblite soruce code
root authored on 2012-11-23
24

            
25
  # Run code against application
26
  my $app = $self->app;
27
  no warnings;
update Mojolicious to 4.57
Yuki Kimoto authored on 2013-12-02
28
  my $result = eval "package main; sub app; local *app = sub { \$app }; $code";
29
  return $@ ? die $@ : $result unless defined $result && ($v1 || $v2);
30
  $v2 ? print($app->dumper($result)) : say $result;
copy gitweblite soruce code
root authored on 2012-11-23
31
}
32

            
33
1;
34

            
update Mojolicious to 4.57
Yuki Kimoto authored on 2013-12-02
35
=encoding utf8
36

            
copy gitweblite soruce code
root authored on 2012-11-23
37
=head1 NAME
38

            
39
Mojolicious::Command::eval - Eval command
40

            
41
=head1 SYNOPSIS
42

            
43
  use Mojolicious::Command::eval;
44

            
45
  my $eval = Mojolicious::Command::eval->new;
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
46
  $eval->run(@ARGV);
copy gitweblite soruce code
root authored on 2012-11-23
47

            
48
=head1 DESCRIPTION
49

            
50
L<Mojolicious::Command::eval> runs code against applications.
51

            
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
52
This is a core command, that means it is always enabled and its code a good
53
example for learning to build new commands, you're welcome to fork it.
54

            
copy gitweblite soruce code
root authored on 2012-11-23
55
=head1 ATTRIBUTES
56

            
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
57
L<Mojolicious::Command::eval> inherits all attributes from
58
L<Mojolicious::Command> and implements the following new ones.
copy gitweblite soruce code
root authored on 2012-11-23
59

            
update Mojolicious and added...
Yuki Kimoto authored on 2013-03-20
60
=head2 description
copy gitweblite soruce code
root authored on 2012-11-23
61

            
62
  my $description = $eval->description;
63
  $eval           = $eval->description('Foo!');
64

            
65
Short description of this command, used for the command list.
66

            
update Mojolicious and added...
Yuki Kimoto authored on 2013-03-20
67
=head2 usage
copy gitweblite soruce code
root authored on 2012-11-23
68

            
69
  my $usage = $eval->usage;
70
  $eval     = $eval->usage('Foo!');
71

            
72
Usage information for this command, used for the help screen.
73

            
74
=head1 METHODS
75

            
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
76
L<Mojolicious::Command::eval> inherits all methods from
77
L<Mojolicious::Command> and implements the following new ones.
copy gitweblite soruce code
root authored on 2012-11-23
78

            
update Mojolicious and added...
Yuki Kimoto authored on 2013-03-20
79
=head2 run
copy gitweblite soruce code
root authored on 2012-11-23
80

            
upgraded Mojolicious to v3.7...
Yuki Kimoto authored on 2013-01-28
81
  $eval->run(@ARGV);
copy gitweblite soruce code
root authored on 2012-11-23
82

            
83
Run this command.
84

            
85
=head1 SEE ALSO
86

            
87
L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicio.us>.
88

            
89
=cut