SVK::Command - Base class and dispatcher for SVK commands
use SVK::Command; my $xd = SVK::XD->new ( ... ); my $cmd = 'checkout'; my @args = qw( file1 file2 ); open my $output_fh, '>', 'svk.log' or die $!; SVK::Command->invoke ($xd, $cmd, $output_fh, @args);
This module resolves alias for commands and dispatches them, usually with the
invoke method. If the command invocation is incorrect, usage information is displayed instead.
Takes a SVK::XD object, the command name, the output scalar reference, and the arguments for the command. The command name is translated with the
On Win32, after
@args is parsed for named options, the remaining positional arguments are expanded for shell globbing with
Takes a arrayref of argv for run getopt for the command, with additional %opt getopt options.
SVK::Command->invoke loads the corresponding class
SVK::Command::$name, so that's the class you want to implement the following methods in:
Returns a hash where the keys are Getopt::Long specs and the values are a string that will be the keys storing the parsed option in
Subclasses should override this to add their own options. Defaults to an empty list.
Defines if the command needs the recursive flag and its default. The value will be stored in
This method is called with the remaining arguments after parsing named options with
options above. It should use the
arg_* methods to return a list of parsed arguments for the command's
run method to process. Defaults to return a single
lock_* methods to lock the SVK::XD object. The arguments will be what is returned from
Actually process the command. The arguments will be what is returned from
Returned undef on success. Return a string message to notify the caller errors.
arg_* methods below returns a SVK::Path object, which consists of a hash with the following keys:
The hashes are handy to pass to many other functions.
Argument is a number of checkout paths.
Argument might be a URI or a depotpath. If it is a URI, try to find it at or under one of currently mirrored paths. If not found, prompts the user to mirror and sync it.
Argument might be a checkout path or a depotpath. If argument is URI then handles it via
Argument is a checkout path.
Argument is a depotpath, including the slashes and depot name.
Argument is a depot root, or a checkout path that needs to be resolved into a depot root.
Argument is a name of depot. such as '' or 'test' that is being used normally between two slashes.
Argument is a plain path in the filesystem.
Apply the given revision from command line to
Parse -c or -r to a list of [from, to] pairs.
Display an one-line brief usage of the command object. Optionally, a file could be given to extract the usage from the POD.
Return the filename for the command module.
Display usage. If
$want_detail is true, the
DESCRIPTION section is displayed as well.
Construct a command object of the
$cmd subclass and return it.
The new object will share the
xd from the calling command object; contents in
%args is also assigned into the new object.
command above, but modifies the calling object instead of creating a new one. Useful for a command object to recast itself into another command class.
$target and and invoke
$code with each node.