Carton

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

         "requires" : {
            "CPAN::Meta" : "2.120921",
            "CPAN::Meta::Requirements" : "2.121",
            "Class::Tiny" : "1.001",
            "Getopt::Long" : "2.39",
            "JSON::PP" : "2.27300",
            "Menlo::CLI::Compat" : "1.9018",
            "Module::CPANfile" : "0.9031",
            "Module::CoreList" : "0",
            "Path::Tiny" : "0.033",
            "Try::Tiny" : "0.09",
            "parent" : "0.223",
            "perl" : "v5.8.5"
         }
      }
   },
   "release_status" : "stable",
   "resources" : {
      "bugtracker" : {
         "web" : "https://github.com/perl-carton/carton/issues"
      },

META.yml  view on Meta::CPAN

requires:
  CPAN::Meta: '2.120921'
  CPAN::Meta::Requirements: '2.121'
  Class::Tiny: '1.001'
  Getopt::Long: '2.39'
  JSON::PP: '2.27300'
  Menlo::CLI::Compat: '1.9018'
  Module::CPANfile: '0.9031'
  Module::CoreList: '0'
  Path::Tiny: '0.033'
  Try::Tiny: '0.09'
  parent: '0.223'
  perl: v5.8.5
resources:
  bugtracker: https://github.com/perl-carton/carton/issues
  homepage: https://github.com/perl-carton/carton
  repository: https://github.com/perl-carton/carton.git
version: v1.0.35
x_contributors:
  - 'Christian Walde <walde.christian@googlemail.com>'
  - 'Dan Book <grinnz@gmail.com>'

Makefile.PL  view on Meta::CPAN

  "PREREQ_PM" => {
    "CPAN::Meta" => "2.120921",
    "CPAN::Meta::Requirements" => "2.121",
    "Class::Tiny" => "1.001",
    "Getopt::Long" => "2.39",
    "JSON::PP" => "2.27300",
    "Menlo::CLI::Compat" => "1.9018",
    "Module::CPANfile" => "0.9031",
    "Module::CoreList" => 0,
    "Path::Tiny" => "0.033",
    "Try::Tiny" => "0.09",
    "parent" => "0.223"
  },
  "VERSION" => "v1.0.35",
  "test" => {
    "TESTS" => "t/*.t"
  }
);


my %FallbackPrereqs = (
  "CPAN::Meta" => "2.120921",
  "CPAN::Meta::Requirements" => "2.121",
  "Class::Tiny" => "1.001",
  "Getopt::Long" => "2.39",
  "JSON::PP" => "2.27300",
  "Menlo::CLI::Compat" => "1.9018",
  "Module::CPANfile" => "0.9031",
  "Module::CoreList" => 0,
  "Path::Tiny" => "0.033",
  "Try::Tiny" => "0.09",
  "parent" => "0.223"
);


unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
  delete $WriteMakefileArgs{TEST_REQUIRES};
  delete $WriteMakefileArgs{BUILD_REQUIRES};
  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}

cpanfile  view on Meta::CPAN

on configure => sub {
    requires 'version', 0.77;
};

requires 'perl', '5.8.5';

requires 'JSON::PP', '2.27300';
requires 'Module::CPANfile', 0.9031;

requires 'Try::Tiny', 0.09;
requires 'parent', 0.223;
requires 'Getopt::Long', 2.39;
requires 'Class::Tiny', 1.001;
requires 'Path::Tiny', 0.033;

requires 'Menlo::CLI::Compat', '1.9018';

requires 'CPAN::Meta', 2.120921;
requires 'CPAN::Meta::Requirements', 2.121;
requires 'Module::CoreList';

lib/Carton/CLI.pm  view on Meta::CPAN

package Carton::CLI;
use strict;
use warnings;
use Config;
use Getopt::Long;
use Path::Tiny;
use Try::Tiny;
use Module::CoreList;
use Scalar::Util qw(blessed);

use Carton;
use Carton::Builder;
use Carton::Mirror;
use Carton::Snapshot;
use Carton::Util;
use Carton::Environment;
use Carton::Error;

lib/Carton/Snapshot.pm  view on Meta::CPAN

use Carton::Dist::Core;
use Carton::Error;
use Carton::Package;
use Carton::Index;
use Carton::Util;
use Carton::Snapshot::Emitter;
use Carton::Snapshot::Parser;
use CPAN::Meta;
use CPAN::Meta::Requirements;
use File::Find ();
use Try::Tiny;
use Path::Tiny ();
use Module::CoreList;

use constant CARTON_SNAPSHOT_VERSION => '1.0';

use subs 'path';
use Class::Tiny {
    path => undef,
    version => sub { CARTON_SNAPSHOT_VERSION },
    loaded => undef,

xt/cli/bundle.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

{
    my $app = cli();

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.12';
EOF

    $app->run("install");
    $app->run("bundle");

    ok -f ($app->dir . "/vendor/cache/authors/id/D/DO/DOY/Try-Tiny-0.12.tar.gz");
}

done_testing;

xt/cli/check.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'carton check fails when there is no lock' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
EOF

    $app->run("check");
    like $app->stderr, qr/find cpanfile\.snapshot/;
};

subtest 'carton install and check' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
EOF

    $app->run("install");

    $app->run("check");
    like $app->stdout, qr/are satisfied/;

    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.11/;

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '0.16';
EOF

    $app->run("check");
    like $app->stdout, qr/not satisfied/;

 TODO: {
        local $TODO = 'exec does not verify lock';
        $app->run("exec", "perl", "use Try::Tiny");
        like $app->stderr, qr/\.snapshot/;
    }

    $app->run("install");

    $app->run("check");
    like $app->stdout, qr/are satisfied/;

    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.\d\d/;

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '10.00';
EOF

    $app->run("check");
    like $app->stdout, qr/not satisfied/;

    $app->run("install");
    like $app->stderr, qr/failed/;

    $app->run("check");
    like $app->stdout, qr/not satisfied/;
};

subtest 'detect unused modules' => sub {
    my $app = cli;
    $app->write_cpanfile("requires 'Try::Tiny';");

    $app->run("install");
    $app->write_cpanfile("");


 TODO: {
        local $TODO = "Can't detect superflous modules";
        $app->run("install");
        $app->run("list");
        is $app->stdout, "";

xt/cli/cpanfile.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'carton install --cpanfile' => sub {
    my $app = cli();
    $app->write_file('cpanfile.foo', <<EOF);
requires 'Try::Tiny', '== 0.11';
EOF
    $app->run("install", "--cpanfile", "cpanfile.foo");
    $app->run("check", "--cpanfile", "cpanfile.foo");

    ok !$app->dir->child('cpanfile.snapshot')->exists;
    ok $app->dir->child('cpanfile.foo.snapshot')->exists;

    like $app->stdout, qr/are satisfied/;

    local $ENV{PERL_CARTON_CPANFILE} = $app->dir->child('cpanfile.foo')->absolute;

    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.11/;

    $app->run("exec", "perl", "-e", "use Try::Tiny\ 1");
    like $app->stderr, qr/Try::Tiny .* 0\.11/;
};

subtest 'PERL_CARTON_CPANFILE' => sub {
    my $app = cli();

    local $ENV{PERL_CARTON_CPANFILE} = $app->dir->child('cpanfile.foo')->absolute;

    $app->write_file('cpanfile.foo', <<EOF);
requires 'Try::Tiny', '== 0.11';
EOF

    $app->run("install");
    $app->run("list");

    like $app->stdout, qr/Try-Tiny-0\.11/;
    ok $app->dir->child('cpanfile.foo.snapshot')->exists;
};

done_testing;

xt/cli/deployment.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

{
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
EOF

    $app->run("install", "--deployment");
    like $app->stderr, qr/deployment requires cpanfile\.snapshot/;

    $app->run("install");
    $app->clean_local;

    $app->run("install", "--deployment");
    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.11/;

    $app->run("exec", "perl", "-e", "use Try::Tiny 2;");
    like $app->stderr, qr/Try::Tiny.* version 0\.11/;
}

done_testing;

xt/cli/dist.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'with pinned dist' => sub {
    my $app = cli();
    $app->write_file('cpanfile', <<EOF);
requires 'Try::Tiny', '0.29',
  dist => 'ETHER/Try-Tiny-0.29.tar.gz';
EOF
    $app->run("install");

    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.29/;

    $app->run("exec", "perl", "-e", "use Try::Tiny\ 1");
    like $app->stderr, qr/Try::Tiny .* 0\.29/;

    my $content = $app->dir->child('cpanfile.snapshot')->slurp;
    like $content, qr/ETHER\/Try-Tiny-0\.29/;
};

done_testing;

xt/cli/exec.t  view on Meta::CPAN

    is $app->exit_code, 255;
};

subtest 'carton exec', sub {
    my $app = cli();
    $app->write_cpanfile('');
    $app->run("install");

 TODO: {
        local $TODO = "exec now does not strip site_perl";
        $app->run("exec", "perl", "-e", "use Try::Tiny");
        like $app->stderr, qr/Can't locate Try\/Tiny.pm/;
    }

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
EOF

    $app->run("install");

    $app->run("exec", "--", "perl", "-e", 'use Try::Tiny; print $Try::Tiny::VERSION, "\n"');
    like $app->stdout, qr/0\.11/;

    $app->run("exec", "perl", "-e", 'use Try::Tiny; print $Try::Tiny::VERSION, "\n"');
    like $app->stdout, qr/0\.11/, "No need for -- as well";

    $app->run("exec", "perl", "-MTry::Tiny", "-e", 'print $Try::Tiny::VERSION, "\n"');
    like $app->stdout, qr/0\.11/;

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny';
requires 'App::Ack', '== 2.02';
EOF

    $app->run("install");
    $app->run("exec", "--", "ack", "--version");

    like $app->stdout, qr/ack 2\.02/;
};

subtest 'carton exec perl -Ilib', sub {

xt/cli/freeze.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

{
    my $app = cli();

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
EOF

    $app->run("install");
    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.11/;

    $app->clean_local;

    $app->run("install");
    $app->run("list");

xt/cli/install.t  view on Meta::CPAN

use xt::CLI;

subtest 'carton install with version range' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'CPAN::Test::Dummy::Perl5::Deps::VersionRange';
EOF

    $app->run("install");
    $app->run("tree");
    like $app->stdout, qr/Try::Tiny/;
    unlike $app->stderr, qr/Could not parse snapshot file/;
};

subtest 'meta info for ancient modules' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Algorithm::Diff';
EOF

    $app->run("install");

xt/cli/snapshot.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'snapshot file has canonical representation' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
requires 'Getopt::Long', '2.41';
EOF

    $app->run("install");

    my $content = $app->dir->child('cpanfile.snapshot')->slurp;
    for (1..3) {
        $app->dir->child('cpanfile.snapshot')->remove;
        $app->run("install");
        is $content, $app->dir->child('cpanfile.snapshot')->slurp;

xt/cli/snapshot.t  view on Meta::CPAN

    unknown: foo
EOF

    $app->run("install");
    like $app->stderr, qr/Could not parse/;
};

subtest 'snapshot file support separate CRLF' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.11';
requires 'Getopt::Long', '2.41';
EOF

    $app->run("install");

    my $content = $app->dir->child('cpanfile.snapshot')->slurp;
    $content =~ s/\n/\r\n/g;
    $app->write_file('cpanfile.snapshot', $content);

    $app->run("install");

xt/cli/subdir.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'carton exec in subdir', sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny';
EOF
    $app->run('install');

    $app->dir->child('x')->mkpath;

    $app->run_in_dir('x' => 'list');
    like $app->stdout, qr/Try-Tiny/;

    $app->run_in_dir('x' => 'check');
    like $app->stdout, qr/are satisfied/;

xt/cli/update.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'carton update NonExistentModule' => sub {
    my $app = cli();

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.09';
EOF

    $app->run("install");
    $app->run("update", "XYZ");
    like $app->stderr, qr/Could not find module XYZ/;
};

subtest 'carton update upgrades a dist' => sub {
    my $app = cli();

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.09';
EOF

    $app->run("install");
    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.09/;

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '>= 0.09, <= 0.12';
EOF

    $app->run("install");
    $app->run("check");
    like $app->stdout, qr/are satisfied/;

    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.09/;

    $app->run("update", "Try::Tiny");
    like $app->stdout, qr/installed Try-Tiny-0\.12.*upgraded from 0\.09/;

    $app->run("check");
    like $app->stdout, qr/are satisfied/;

    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.12/;
};

subtest 'downgrade a distribution' => sub {
    my $app = cli();

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '0.16';
EOF
    $app->run("install");
    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.\d\d/;

    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '== 0.09';
EOF
    $app->run("update");
    $app->run("list");
    like $app->stdout, qr/Try-Tiny-0\.09/;

 TODO: {
        local $TODO = 'collecting wrong install info';
        $app->write_cpanfile(<<EOF);
requires 'Try::Tiny', '0.09';
EOF
        $app->run("install");
        $app->run("list");
        like $app->stdout, qr/Try-Tiny-0\.09/;
    }
};

done_testing;

xt/cli/without.t  view on Meta::CPAN

use strict;
use Test::More;
use lib ".";
use xt::CLI;

subtest 'carton install --without develop' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny';

on 'develop' => sub {
  requires 'Hash::MultiValue', '== 0.14';
};
EOF

    $app->run("install");
    $app->run("list");
    like $app->stdout, qr/Try-Tiny-/;
    like $app->stdout, qr/Hash-MultiValue-0\.14/;

xt/cli/without.t  view on Meta::CPAN

        unlike $app->stdout, qr/Hash-MultiValue-/;
    }

    $app->run("exec", "perl", "-e", "use Hash::MultiValue\ 1");
    unlike $app->stderr, qr/Hash::MultiValue .* version 0.14/;
};

subtest 'without features' => sub {
    my $app = cli();
    $app->write_cpanfile(<<EOF);
requires 'Try::Tiny';

feature 'stream' => sub {
  requires 'Stream::Buffered', '== 0.01';
};
EOF

    $app->run("install");
    $app->run("list");
    like $app->stdout, qr/Stream-Buffered-0\.01/;

xt/mirror/modules/02packages.details.txt  view on Meta::CPAN

CGI::Pretty                            3.46  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
CGI::Push                              1.05  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
CGI::Switch                            1.01  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
CGI::Util                              3.53  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
CGITempFile                           undef  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
FCGI                                   0.73  F/FL/FLORA/FCGI-0.73.tar.gz
FCGI::Stream                          undef  F/FL/FLORA/FCGI-0.73.tar.gz
Fh                                    undef  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
Hash::MultiValue                       0.08  M/MI/MIYAGAWA/Hash-MultiValue-0.08.tar.gz
MultipartBuffer                       undef  M/MA/MARKSTOS/CGI.pm-3.55.tar.gz
Try::Tiny                              0.09  D/DO/DOY/Try-Tiny-0.09.tar.gz



( run in 0.806 second using v1.01-cache-2.11-cpan-05444aca049 )