1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
# 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.14'; # 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.14
=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
|