简介
# Lowercase command name
package Mojolicious::Command::mycommand;
use Mojo::Base 'Mojolicious::Command';
# Short description
has description => 'My first Mojo command';
# Usage message from SYNOPSIS
has usage => sub { shift->extract_usage };
sub run {
my ($self, @args) = @_;
# Magic here! :)
}
1;
=head1 SYNOPSIS
Usage: APPLICATION mycommand [OPTIONS]
Options:
-s, --something Does something
=cut
Mojolicious::Command 是Mojolicious中所有命令的抽象基类。
属性
app
my $app = $command->app;
$command = $command->app(Mojolicious->new);
当前对象所属的应用程序,默认为Mojo::HelloWorld对象。
# Introspect
say "Template path: $_" for @{$command->app->renderer->paths};
description
my $description = $command->description;
$command = $command->description('Foo');
当前命令对象的简短描述,用于命令列表。
quiet
my $bool = $command->quiet;
$command = $command->quiet($bool);
尽量少的输出命令信息。
usage
my $usage = $command->usage;
$command = $command->usage('Foo');
命令的使用信息,用于显示帮助信息。
方法
Mojolicious :: Command继承Mojo :: Base中的所有方法,并实现以下方法。
chmod_file
$command = $command->chmod_file('/home/sri/foo.txt', 0644);
更改文件的访问权限。
chmod_rel_file
$command = $command->chmod_rel_file('foo/foo.txt', 0644);
更改相对于当前工作目录的文件的访问权限。
create_dir
$command = $command->create_dir('/home/sri/foo/bar');
创建一个目录。
create_rel_dir
$command = $command->create_rel_dir('foo/bar/baz');
创建一个相对于当前目录的目录。
extract_usage
my $usage = $command->extract_usage;
使用Mojo::Util中的extract_usage方法提取当前文件中摘要信息(SYNOPSIS)。
help
$command->help;
输出当前命令的 usage 信息。
rel_file
my $path = $command->rel_file('foo/bar.txt');
返回相对于当前工作目录的Mojo::File对象。
render_data
my $data = $command->render_data('foo_bar');
my $data = $command->render_data('foo_bar', @args);
使用Mojo::Loader和Mojo::Template类对命令类DATA段中模板进行渲染。
render_to_file
$command = $command->render_to_file('foo_bar', '/home/sri/foo.txt');
$command = $command->render_to_file('foo_bar', '/home/sri/foo.txt', @args);
使用Mojo::Loader和Mojo::Template类对命令类DATA段中模板进行渲染。并且渲染得到的内容写到文件中,并在必要的时候创建目录。
render_to_rel_file
$command = $command->render_to_rel_file('foo_bar', 'foo/bar.txt');
$command = $command->render_to_rel_file('foo_bar', 'foo/bar.txt', @args);
使用Mojo::Loader和Mojo::Template类对命令类DATA段中模板进行渲染。并且渲染得到的内容写到相对于当前工作目录的文件中,并在必要的时候创建目录。
run
$command->run;
$command->run(@ARGV);
运行当前命令对象,需要在子类中重载。
write_file
$command = $command->write_file('/home/sri/foo.txt', 'Hello World!');
将文件写入文件中,并在必要时创建目录。
write_rel_file
$command = $command->write_rel_file('foo/bar.txt', 'Hello World!');
将文件写入相对于当前工作目录的文件中,并在必要时创建目录。