# ABSTRACT: force a package to stay in a stack
package App::Pinto::Command::pin;
use strict;
use warnings;
#------------------------------------------------------------------------------
use base 'App::Pinto::Command';
#------------------------------------------------------------------------------
our $VERSION = '0.12'; # VERSION
#-----------------------------------------------------------------------------
sub opt_spec {
my ( $self, $app ) = @_;
return (
[ 'diff-style=s' => 'Set style of diff reports' ],
[ 'dry-run' => 'Do not commit any changes' ],
[ 'message|m=s' => 'Message to describe the change' ],
[ 'stack|s=s' => 'Pin targets to this stack' ],
[ 'use-default-message|M' => 'Use the generated message' ],
);
}
#------------------------------------------------------------------------------
sub args_attribute { return 'targets' }
#------------------------------------------------------------------------------
sub args_from_stdin { return 1 }
#------------------------------------------------------------------------------
1;
__END__
=pod
=encoding UTF-8
=for :stopwords Jeffrey Ryan Thalhammer
=head1 NAME
App::Pinto::Command::pin - force a package to stay in a stack
=head1 VERSION
version 0.12
=head1 SYNOPSIS
pinto --root=REPOSITORY_ROOT pin [OPTIONS] TARGET ...
=head1 DESCRIPTION
This command pins a package so that it cannot be changed even if a
different version is added or pulled to the stack The pin is local
to the stack and does not affect any other stacks.
A package must be registered on the stack before you can pin it. To bring a
package onto the stack, use the L<pull|App::Pinto::Command::pull> or
L<register|App::Pinto::Command::register> commands. To remove the pin
from a package, see the L<unpin|App::Pinto::Command::unpin> command.
When pinning, all its sister packages in that distribution also become
pinned. Pinned packages also cannot be unregistered from the stack
or deleted from the repository without the C<--force> option.
=head1 COMMAND ARGUMENTS
Arguments are the targets you wish to unpin. Targets can be
specified as packages or distributions, such as:
Some::Package
Some::Other::Package
AUTHOR/Some-Dist-1.2.tar.gz
AUTHOR/Some-Other-Dist-1.3.zip
You can also pipe arguments to this command over STDIN. In that case,
blank lines and lines that look like comments (i.e. starting with "#"
or ';') will be ignored.
=head1 COMMAND OPTIONS
=over 4
=item --diff-style=STYLE
Controls the style of the diff reports. STYLE must be either C<concise> or
C<detailed>. Concise reports show only one record for each distribution added
or deleted. Detailed reports show one record for every package added or
deleted.
The default style is C<concise>. However, the default style can changed by
setting the C<PINTO_DIFF_STYLE> environment variable to your preferred STYLE.
This variable affects the default style for diff reports generated by all
other commands too.
=item --dry-run
Go through all the motions, but do not actually commit any changes to
the repository. Use this option to see how the command would
potentially impact the stack.
=item --message=TEXT
=item -m TEXT
Use TEXT as the revision history log message. If you do not use the
C<--message> option or the C<--use-default-message> option, then you will be
prompted to enter the message via your text editor. Use the C<PINTO_EDITOR>
or C<EDITOR> or C<VISUAL> environment variables to control which editor is
used. A log message is not required whenever the C<--dry-run> option is set,
or if the action did not yield any changes to the repository.
=item --stack=NAME
Pins the package on the stack with the given NAME. Defaults to the
name of whichever stack is currently marked as the default stack. Use
the L<stacks|App::Pinto::Command::stacks> command to see the
stacks in the repository.
=item --use-default-message
=item -M
Use the default value for the revision history log message. Pinto
will generate a semi-informative log message just based on the command
and its arguments. If you set an explicit message with C<--message>,
the C<--use-default-message> option will be silently ignored.
=back
=head1 AUTHOR
Jeffrey Ryan Thalhammer <jeff@stratopan.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut