[carton] 25/472: reorganized the command and docs
Lucas Kanashiro
kanashiro-guest at moszumanska.debian.org
Fri Jul 24 00:38:28 UTC 2015
This is an automated email from the git hooks/post-receive script.
kanashiro-guest pushed a commit to branch master
in repository carton.
commit d3ea4e09c5be4d441f1cb14563e6d05f8b2aceef
Author: Tatsuhiko Miyagawa <miyagawa at bulknews.net>
Date: Sat Jun 25 23:42:33 2011 -0700
reorganized the command and docs
---
Makefile.PL | 17 +++-
README | 115 ----------------------------
TODO | 1 +
bin/carton | 132 --------------------------------
lib/Carton.pm | 26 ++++++-
bin/carton => lib/Carton/Doc/Carton.pod | 9 ---
lib/Carton/Doc/Install.pod | 60 +++++++++++++++
7 files changed, 100 insertions(+), 260 deletions(-)
diff --git a/Makefile.PL b/Makefile.PL
index 9d3e281..85833e5 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -1,7 +1,8 @@
use inc::Module::Install;
name 'carton';
version_from 'lib/Carton.pm';
-all_from 'bin/carton';
+perl_version '5.008001';
+license_from 'lib/Carton/Doc/Carton.pod';
readme_from('bin/carton');
requires 'version', 0.77;
@@ -12,7 +13,21 @@ requires 'Module::Metadata', 1.000003;
install_script 'bin/carton';
+makemaker_args MAN1PODS => man1pods();
+
build_requires 'Test::More', 0.88;
test_requires 'Test::Requires';
auto_set_repository();
WriteAll;
+
+sub man1pods {
+ my %pods;
+
+ for my $file (glob "lib/Carton/Doc/*.pod") {
+ my $name = ($file =~ m!Doc/(.*?)\.pod!)[0];
+ $name = $name eq 'Carton' ? "carton" : ("carton-" . lc($name));
+ $pods{$file} = "blib/man1/$name.1"
+ }
+
+ \%pods;
+}
diff --git a/README b/README
index 9ff924f..e69de29 100644
--- a/README
+++ b/README
@@ -1,115 +0,0 @@
-NAME
- carton - Perl module dependency manager (aka Bundler for Perl)
-
-SYNOPSIS
- # During the development
- > $EDITOR Makefile.PL
- ...
- requires 'Plack', 0.9980;
- requires 'Starman', 0.2000;
- ...
-
- > carton install
- > git commit -m "add Plack and Starman" Makefile.PL carton.lock
-
- # Then elsewhere (on a deployment machine)
- > carton install
- > carton exec starman -p 8080 myapp.psgi
-
-WARNING
- This software is under the heavy development and considered ALPHA
- quality till the version hits v1.0.0. Things might be broken, not all
- features have been implemented, and APIs will be likely to change. YOU
- HAVE BEEN WARNED.
-
-DESCRIPTION
- carton is a command line tool to track the Perl module dependencies for
- your Perl application.
-
-TUTORIAL
- Initializing the environment
- carton will use ".carton" folder for local configuration and "local" to
- install modules. You're recommended to exclude these directories from
- the version control system.
-
- > carton check
- > echo .carton >> .gitignore
- > echo local/ >> .gitignore
- > git add carton.lock
- > git commit -m "Start using carton"
-
- Tracking the dependencies
- You can manage the dependencies of your application via the standard
- "Makefile.PL" or "Build.PL".
-
- # Makefile.PL
- use inc::Module::Install;
- name 'MyAwesomeApp';
- requires 'Plack', 0.9980;
- requires 'Starman', 0.2000;
- WriteAll;
-
- And then you can install these dependencies via:
-
- > carton install
-
- The modules are installed into your "local" directory, and the
- dependencies tree and version information are analyzed and saved into
- "carton.lock" in your directory.
-
- Make sure you add "carton.lock" to your version controlled repository
- and commit changes as you update dependencies.
-
- > git commit -m "Added Plack and Starman" Makefile.PL carton.lock
-
- You'll alternatively be able to install modules from the command line,
- without managing the build file at all.
-
- Deploying your application
- Once you've done installing all the dependencies, you can push your
- application directory to a remote machine (excluding "local" and
- ".carton") and run the following command:
-
- > carton install
-
- This will look at the "carton.lock" and install the exact same versions
- of the dependencies into "local", and now your application is ready to
- run.
-
- Bundling modules
- carton can bundle all the tarballs for your dependencies into a
- directory so that you can even install dependencies that are not
- available on CPAN, such as internal distribution aka DarkPAN.
-
- > carton bundle
-
- will bundle these tarballs into "local/cache" directory, and
-
- > carton install --cached
-
- will install modules using this local cache. This way you can avoid a
- dependency on CPAN meta DB and search.cpan.org at a deploy time, or you
- can have dependencies onto private CPAN modules aka DarkPAN.
-
-AUTHOR
- Tatsuhiko Miyagawa
-
-COPYRIGHT
- Tatsuhiko Miyagawa 2011-
-
-LICENSE
- This software is licensed under the same terms as Perl itself.
-
-SEE ALSO
- cpanm
-
- Bundler <http://gembundler.com/>
-
- pip <http://pypi.python.org/pypi/pip>
-
- npm <http://npmjs.org/>
-
- perlrocks <https://github.com/gugod/perlrocks>
-
- only
-
diff --git a/TODO b/TODO
index a7affb5..cbe9c8d 100644
--- a/TODO
+++ b/TODO
@@ -3,6 +3,7 @@ support CPAN distro only
carton config / .carton/config
-g, --global + local::lib (~/perl5)
exec
+cpanm Module at Version
# 1.1
carton update
diff --git a/bin/carton b/bin/carton
index 3212f5c..d72a74c 100755
--- a/bin/carton
+++ b/bin/carton
@@ -4,135 +4,3 @@ use 5.008001;
use Carton;
Carton->new->run(@ARGV);
-
-__END__
-
-=head1 NAME
-
-carton - Perl module dependency manager (aka Bundler for Perl)
-
-=head1 SYNOPSIS
-
- # During the development
- > $EDITOR Makefile.PL
- ...
- requires 'Plack', 0.9980;
- requires 'Starman', 0.2000;
- ...
-
- > carton install
- > git commit -m "add Plack and Starman" Makefile.PL carton.lock
-
- # Then elsewhere (on a deployment machine)
- > carton install
- > carton exec starman -p 8080 myapp.psgi
-
-=head1 WARNING
-
-B<This software is under the heavy development and considered ALPHA
-quality till the version hits v1.0.0. Things might be broken, not all
-features have been implemented, and APIs will be likely to change. YOU
-HAVE BEEN WARNED.>
-
-=head1 DESCRIPTION
-
-carton is a command line tool to track the Perl module dependencies
-for your Perl application.
-
-=head1 TUTORIAL
-
-=head2 Initializing the environment
-
-carton will use C<.carton> folder for local configuration and
-C<local> to install modules. You're recommended to exclude these
-directories from the version control system.
-
- > carton check
- > echo .carton >> .gitignore
- > echo local/ >> .gitignore
- > git add carton.lock
- > git commit -m "Start using carton"
-
-=head2 Tracking the dependencies
-
-You can manage the dependencies of your application via the standard
-C<Makefile.PL> or C<Build.PL>.
-
- # Makefile.PL
- use inc::Module::Install;
- name 'MyAwesomeApp';
- requires 'Plack', 0.9980;
- requires 'Starman', 0.2000;
- WriteAll;
-
-And then you can install these dependencies via:
-
- > carton install
-
-The modules are installed into your C<local> directory, and the
-dependencies tree and version information are analyzed and saved into
-C<carton.lock> in your directory.
-
-Make sure you add C<carton.lock> to your version controlled
-repository and commit changes as you update dependencies.
-
- > git commit -m "Added Plack and Starman" Makefile.PL carton.lock
-
-You'll alternatively be able to install modules from the command line,
-without managing the build file at all.
-
-=head2 Deploying your application
-
-Once you've done installing all the dependencies, you can push your
-application directory to a remote machine (excluding C<local> and
-C<.carton>) and run the following command:
-
- > carton install
-
-This will look at the C<carton.lock> and install the exact same
-versions of the dependencies into C<local>, and now your application
-is ready to run.
-
-=head2 Bundling modules
-
-carton can bundle all the tarballs for your dependencies into a
-directory so that you can even install dependencies that are not
-available on CPAN, such as internal distribution aka DarkPAN.
-
- > carton bundle
-
-will bundle these tarballs into C<local/cache> directory, and
-
- > carton install --cached
-
-will install modules using this local cache. This way you can avoid a
-dependency on CPAN meta DB and search.cpan.org at a deploy time, or
-you can have dependencies onto private CPAN modules aka DarkPAN.
-
-=head1 AUTHOR
-
-Tatsuhiko Miyagawa
-
-=head1 COPYRIGHT
-
-Tatsuhiko Miyagawa 2011-
-
-=head1 LICENSE
-
-This software is licensed under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-L<cpanm>
-
-L<Bundler|http://gembundler.com/>
-
-L<pip|http://pypi.python.org/pypi/pip>
-
-L<npm|http://npmjs.org/>
-
-L<perlrocks|https://github.com/gugod/perlrocks>
-
-L<only>
-
-=cut
diff --git a/lib/Carton.pm b/lib/Carton.pm
index 48e100c..8bdf018 100644
--- a/lib/Carton.pm
+++ b/lib/Carton.pm
@@ -52,7 +52,7 @@ sub run {
push @commands, @ARGV;
- my $cmd = shift @commands || 'help';
+ my $cmd = shift @commands || 'usage';
my $call = $self->can("cmd_$cmd");
if ($call) {
@@ -62,6 +62,26 @@ sub run {
}
}
+sub commands {
+ my $self = shift;
+
+ no strict 'refs';
+ map { s/^cmd_//; $_ }
+ grep /^cmd_(.*)/, sort keys %{__PACKAGE__."::"};
+}
+
+sub cmd_usage {
+ my $self = shift;
+ print <<HELP;
+Usage: carton <command>
+
+where <command> is one of:
+ @{[ join ", ", $self->commands ]}
+
+Run carton -h <command> for help.
+HELP
+}
+
sub parse_options {
my($self, $args, @spec) = @_;
Getopt::Long::GetOptionsFromArray($args, @spec);
@@ -87,8 +107,8 @@ sub error {
sub cmd_help {
my $self = shift;
- my $cmd = $_[0] ? "carton-$_[0]" : "carton";
- system "perldoc", $cmd;
+ my $module = "Carton::Doc::" . ($_[0] ? ucfirst $_[0] : "Carton");
+ system "perldoc", $module;
}
sub cmd_version {
diff --git a/bin/carton b/lib/Carton/Doc/Carton.pod
old mode 100755
new mode 100644
similarity index 97%
copy from bin/carton
copy to lib/Carton/Doc/Carton.pod
index 3212f5c..934df6d
--- a/bin/carton
+++ b/lib/Carton/Doc/Carton.pod
@@ -1,12 +1,3 @@
-#!perl
-use strict;
-use 5.008001;
-use Carton;
-
-Carton->new->run(@ARGV);
-
-__END__
-
=head1 NAME
carton - Perl module dependency manager (aka Bundler for Perl)
diff --git a/lib/Carton/Doc/Install.pod b/lib/Carton/Doc/Install.pod
new file mode 100644
index 0000000..4a25edf
--- /dev/null
+++ b/lib/Carton/Doc/Install.pod
@@ -0,0 +1,60 @@
+=head1 NAME
+
+carton-install - Install the dependencies
+
+=head1 SYNOPSIS
+
+ carton install [--deployment] [--path=PATH] [modules...]
+
+=head1 DESCRIPTION
+
+Install the dependencies for your application. This command has two
+modes and the behavior is slightly different.
+
+=head2 DEVELOPMENT MODE
+
+=over 4
+
+=item carton install <name>
+
+If you run C<carton install> with the arguments, carton will fetch and
+install the modules given as arguments.
+
+=item carton install (no arguments)
+
+If you run C<carton install> for the first itme, or your build file
+(C<Makefile.PL or C<Build.PL>) is updated (i.e. its modification time
+is newer than C<carton.lock> file), carton will fetch all the
+dependencies specified in your build file, resolve dependencies and
+install all required modules.
+
+=back
+
+In the development mode, carton will analyze all the dependencies and
+their version information, and it is saved into C<carton.lock>
+file. It is important to add C<carton.lock> file into a version
+controlled repository and commit the changes as you update your
+dependencies.
+
+=head2 DEPLOYMENT MODE
+
+If you specify the C<--deployment> command line option or your
+C<carton.lock> exists and is newer than your build file, carton will
+fetch all remote modules and use the dependencies specified in the
+C<carton.lock> instead of resolving dependencies.
+
+=back
+
+=head1 OPTIONS
+
+=over 4
+
+=item --deployment
+
+Force the deployment mode and carton will ignore build file contents.
+
+=item --path
+
+Specify the path to install modules to. Defaults to C<local> in the current directory.
+
+=back
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/carton.git
More information about the Pkg-perl-cvs-commits
mailing list