NAME
Mojolicious::Command - Command base class
SYNOPSIS
# Lowercase command name
package
Mojolicious::Command::mycommand;
# Short description
has
description
=>
'My first Mojo command'
;
# Usage message from SYNOPSIS
has
usage
=>
sub
(
$self
) {
$self
->extract_usage };
sub
run (
$self
,
@args
) {
# Magic here! :)
}
=head1 SYNOPSIS
Usage: APPLICATION mycommand [OPTIONS]
Options:
-s, --something Does something
=cut
DESCRIPTION
Mojolicious::Command is an abstract base class for Mojolicious commands.
See "COMMANDS" in Mojolicious::Commands for a list of commands that are available by default.
ATTRIBUTES
Mojolicious::Command implements the following attributes.
app
my
$app
=
$command
->app;
$command
=
$command
->app(Mojolicious->new);
Application for command, defaults to a Mojo::HelloWorld object. Note that this attribute is weakened.
# Introspect
say
"Template path: $_"
for
@{
$command
->app->renderer->paths};
description
my
$description
=
$command
->description;
$command
=
$command
->description(
'Foo'
);
Short description of command, used for the command list.
quiet
my
$bool
=
$command
->quiet;
$command
=
$command
->quiet(
$bool
);
Limited command output.
template
my
$template
=
$command
->template;
$command
=
$command
->template({
vars
=> 1});
Attribute values passed to Mojo::Template objects used to render templates with "render_data", defaults to activating vars
.
usage
my
$usage
=
$command
->usage;
$command
=
$command
->usage(
'Foo'
);
Usage information for command, used for the help screen.
METHODS
Mojolicious::Command inherits all methods from Mojo::Base and implements the following new ones.
chmod_file
$command
=
$command
->chmod_file(
'/home/sri/foo.txt'
, 0644);
Change mode of a file.
chmod_rel_file
$command
=
$command
->chmod_rel_file(
'foo/foo.txt'
, 0644);
Portably change mode of a file relative to the current working directory.
create_dir
$command
=
$command
->create_dir(
'/home/sri/foo/bar'
);
Create a directory if it does not exist already.
create_rel_dir
$command
=
$command
->create_rel_dir(
'foo/bar/baz'
);
Portably create a directory relative to the current working directory if it does not exist already.
extract_usage
my
$usage
=
$command
->extract_usage;
Extract usage message from the SYNOPSIS section of the file this method was called from with "extract_usage" in Mojo::Util.
help
$command
->help;
Print usage information for command.
rel_file
my
$path
=
$command
->rel_file(
'foo/bar.txt'
);
Return a Mojo::File object relative to the current working directory.
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'
});
Render a template from the DATA
section of the command class with Mojo::Loader and Mojo::Template. The template can be configured with "template".
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
);
$command
=
$command
->render_to_file(
'foo_bar'
,
'/home/sri/foo.txt'
, {
foo
=>
'bar'
});
Render a template with "render_data" to a file if it does not exist already, and create the directory if necessary.
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
);
$command
=
$command
->render_to_rel_file(
'foo_bar'
,
'foo/bar.txt'
, {
foo
=>
'bar'
});
Portably render a template with "render_data" to a file relative to the current working directory if it does not exist already, and create the directory if necessary.
run
$command
->run;
$command
->run(
@ARGV
);
Run command. Meant to be overloaded in a subclass.
write_file
$command
=
$command
->write_file(
'/home/sri/foo.txt'
,
'Hello World!'
);
Write text to a file if it does not exist already, and create the directory if necessary.
write_rel_file
$command
=
$command
->write_rel_file(
'foo/bar.txt'
,
'Hello World!'
);
Portably write text to a file relative to the current working directory if it does not exist already, and create the directory if necessary.