From: Graeme Lawton Date: Sat, 20 Nov 2010 16:16:42 +0000 (+0000) Subject: Initial creation of local repo X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FOyster.git;a=commitdiff_plain;h=40056462c18e3f9fde327de7e8d7464e737127aa;hp=1d534f1793dc8153fe522a04efde6f58ca3296b9 Initial creation of local repo --- diff --git a/lib/Oyster/Deploy/Git.pm b/lib/Oyster/Deploy/Git.pm new file mode 100644 index 0000000..37ff0a8 --- /dev/null +++ b/lib/Oyster/Deploy/Git.pm @@ -0,0 +1,24 @@ +package Oyster::Deploy::Git; + +use Moose; +use Git::Wrapper; +use Error::Simple; + +use Data::Dumper; + +sub create { + my $self = shift; + my $location = shift; + + if( -f $location || -d $location ) { + Error::Simple->throw("$location already exists"); + } + + mkdir($location); + my $git = Git::Wrapper->new($location); + + return 1; +} + + +1; \ No newline at end of file diff --git a/lib/Oyster/Provision.pm b/lib/Oyster/Provision.pm index 2b82200..3db07ee 100644 --- a/lib/Oyster/Provision.pm +++ b/lib/Oyster/Provision.pm @@ -17,3 +17,54 @@ sub BUILD { } 1; + +__END__ + +=head1 NAME + +Oyster::Provision - Provision an Oyster + +=head1 SYNOPSIS + + my $server = Oyster::Provision->new( + name => 'Ostrica', + size => '256', + image => 'Meerkat', + pub_ssh => "$ENV{HOME}/.ssh/id_rsa.pub", + ); + $server->create; + +=head1 BACKENDS + +By default, the L backend +will be used. + +Each backend needs to accept at least the C, +C, C and C parameters. The meaning +of these parameters may differ from one backend to another. + +=head1 METHOS + +Each backend usually implements the following C +methods: + +=over + +=item create + +Creates a new server by given name, if such server does +not exist. + +Installs the required packages for the distribution + +=item delete + +Gets rid of the server instance + +=item resize + +Hopefully scales the server + +=back + +=cut diff --git a/t/Deploy/git.t b/t/Deploy/git.t new file mode 100644 index 0000000..5ba2614 --- /dev/null +++ b/t/Deploy/git.t @@ -0,0 +1,22 @@ +#!/usr/local/bin/perl + +use strict; +use warnings; + +use Test::More qw/no_plan/; +use Test::Exception; + +use File::Temp qw/tempdir/; + +BEGIN { use_ok( 'Oyster::Deploy::Git' ); } + +my $tmpdir = tempdir(); + +my $deploy = new_ok 'Oyster::Deploy::Git'; + +#create +is($deploy->create("${tmpdir}/testapp"), 1, 'Create returned okay'); + +ok((-d "${tmpdir}/testapp"), "App directory created"); + +throws_ok(sub {$deploy->create("${tmpdir}/testapp")}, 'Error::Simple', "Directory already exists");