Mojolicious::Command

简介

# 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!');

将文件写入相对于当前工作目录的文件中,并在必要时创建目录。

你可能感兴趣的:(Mojolicious::Command)