Mojolicious::Command - コマンド基底クラス
使い方
# 小文字のコマンド名 package Mojolicious::Command::mycommand; use Mojo::Base 'Mojolicious::Command'; # 短い説明 has description => 'My first Mojo command.'; # 短い使用方法のメッセージ has usage => <<EOF; Usage: APPLICATION mycommand [OPTIONS] # 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はMojoコマンドの抽象基底クラスです。
デフォルトで利用できるコマンドのリストについてはMojolicious::Commandsのコマンド
の項目を見てください。
属性
Mojolicious::Commandは次の属性を実装しています。
app
my $app = $command->app; $command = $command->app(Mojolicious->new);
コマンドのためのアプリケーション。 デフォルトはMojo::HelloWorldオブジェクト。
# 内観 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);
コマンドの出力の制限。
template
my $template = $command->template; $command = $command->template({vars => 1});
"render_data"でテンプレートを描画するために使用されるMojo::Templateオブジェクトに渡される属性の値。 デフォルトはvars
です。
usage
my $usage = $command->usage; $command = $command->usage('Foo');
コマンドの使用方法の情報。ヘルプ画面で利用されます。
メソッド
Mojolicious::CommandはMojo::Baseのすべてのメソッドを継承しており、 次の新しいメソッドを継承しています。
chmod_file
$command = $command->chmod_file('/foo/bar.txt', 0644);
ポータブルにファイルのモードを変更します。
chmod_rel_file
$command = $command->chmod_rel_file('foo/foo.txt', 0644);
ポータブルに相対ファイルのモードを変更します。 現在のワーキングディレクトリからの相対パスで指定できます。
create_dir
$command = $command->create_dir('/foo/bar/baz');
ポータブルにディレクトリを作成します。
create_rel_dir
$command = $command->create_rel_dir('foo/bar/baz');
ポータブルに作業ディレクトリに対する相対ディレクトリを作成します。
extract_usage
my $usage = $command->extract_usage;
Extract usage message from the ファイルの
このメソッドが呼び出されるファイルのSYNOPSISセクションから使用方法のメッセージを抽出します。
help
$command->help;
コマンドの使用方法の情報を出力します。
rel_file
my $path = $command->rel_file('foo/bar.txt');
ポータブルに現在の作業ディレクトリから相対パスから絶対パスを生成します(ファイル名)。
render_data
my $data = $command->render_data('foo_bar'); my $data = $command->render_data('foo_bar', @args); my $data = $command->render_data('foo_bar', {foo => 'bar'});
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::Templateを使って、 コマンドクラスのDATA
セクションを元にテンプレートをファイルに描画し、 必要であればディレクトリも作成されます。
render_to_rel_file
$command = $command->render_to_rel_file('foo_bar', 'foo/bar.txt');
Mojo::Templateを使って、 ポータブルに コマンドクラスのDATA
セクションを元にテンプレートを 現在の作業ディレクトリからの相対パスでファイルに描画し、 必要であればディレクトリも作成されます。
run
$commands->run; $commands->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, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年6月3日更新)