App-RewriteVersion
view release on metacpan or search on metacpan
lib/App/RewriteVersion.pm view on Meta::CPAN
my $app = App::RewriteVersion->new;
# Options
$app->verbose(1)->follow_symlinks(0);
# Bump versions for modules in current dist directory
$app->rewrite_versions($app->bump_version($app->current_version));
# Bump versions in specified dist directory
$app->rewrite_versions($app->bump_version($app->current_version(dist_dir => $dist_dir)), dist_dir => $dist_dir);
# Override module to read version from
$app->rewrite_versions($app->bump_version($app->current_version(file => $file)));
# Bump versions in specific subdirectories
$app->rewrite_versions($app->bump_version($app->current_version), subdirs => ['foo','bar']);
# Custom version bump algorithm
$app->rewrite_versions($app->bump_version($app->current_version, sub { shift + 0.05 }));
# Don't bump, just synchronize versions with main module
$app->rewrite_versions($app->current_version);
# Set versions to specified version
$app->rewrite_versions('0.065');
=head1 DESCRIPTION
L<App::RewriteVersion> is a tool for managing Perl module versions in a
distribution. It is heavily based on the L<Dist::Zilla> plugin
L<Dist::Zilla::Plugin::RewriteVersion>. Similarly to that plugin, the C<V>
environment variable can be used to override the version detected from the main
module.
Existing version assignments and new versions must be parseable with the same
rules as in L<Dist::Zilla::Plugin::RewriteVersion/"DESCRIPTION">, that is to
say, they should either be a decimal number with a single decimal point, or a
tuple version with a leading C<v> and at least 3 segments separated by decimal
points. Version assignments should be in the form C<our $VERSION = '...';>.
See L<perl-rewrite-version> and L<perl-bump-version> for details on
command-line usage.
=head1 ATTRIBUTES
=head2 allow_decimal_underscore
my $bool = $app->allow_decimal_underscore;
$app = $app->allow_decimal_underscore(0);
If true, decimal versions with underscores will be allowed. Defaults to true.
See L<Dist::Zilla::Plugin::BumpVersionAfterRelease/"Using underscore in decimal $VERSION">
for more information.
=head2 dry_run
my $bool = $app->dry_run;
$app = $app->dry_run(1);
If true, the module will process files as normal but not actually modify them.
Useful with L</"verbose"> to verify expected functionality.
=head2 follow_symlinks
my $bool = $app->follow_symlinks;
$app = $app->follow_symlinks(1);
If true, the application will follow symlinked directories when traversing the
distribution for modules. Defaults to false.
=head2 global
my $bool = $app->global;
$app = $app->global(1);
If true, the application will replace all version assignments found instead of
just the first instance in each file. Defaults to false.
=head2 verbose
my $bool = $app->verbose;
$app = $app->verbose(1);
Enable progress messages to be printed to STDOUT. Defaults to false.
=head1 METHODS
=head2 new
my $app = App::RewriteVersion->new;
Construct a new L<App::RewriteVersion> object.
=head2 bump_version
my $new_version = $app->bump_version($version);
my $new_version = $app->bump_version($version, sub { $_[0] + 1 });
Increments a version string, returning the new version string. An optional
coderef can be passed for custom version bump logic. The coderef will receive
the current version string as the first argument and is expected to return a
new version string. By default, L<Version::Next> is used. An exception will be
thrown if an invalid version is passed according to the current settings.
=head2 current_version
my $current_version = $app->current_version;
my $current_version = $app->current_version(dist_dir => $dist_dir);
my $current_version = $app->current_version(file => $file);
Returns the current version of the distribution using L</"version_from">. If no
C<file> is passed, the main module filename will be guessed from C<dist_dir>
(defaulting to current working directory), using heuristics similar to
L<Dist::Zilla::Plugin::NameFromDirectory> and L<Dist::Zilla/"main_module">. For
example, if the directory is named C<Foo-Bar> it will look for
C<lib/Foo/Bar.pm> within the distribution, and if that doesn't exist, the
shortest module path found. If the C<V> environment variable is set, it will be
returned regardless of other options. An exception will be thrown if no version
is found in the specified or guessed file, or if no perl modules could be
found.
( run in 1.042 second using v1.01-cache-2.11-cpan-13bb782fe5a )