X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FOyster%2FDeploy%2FGit.pm;h=19e50701f6e892e01074fe669e02bd3476c9598c;hb=b4e1bb565554e59a98cdc5d267dfd4cc6e3907e3;hp=82987243cfe6c9c8009d8c1b4c09add4492c3408;hpb=47863b264b3dea236944334fe7692aa8db9a7c88;p=p5sagit%2FOyster.git diff --git a/lib/Oyster/Deploy/Git.pm b/lib/Oyster/Deploy/Git.pm index 8298724..19e5070 100644 --- a/lib/Oyster/Deploy/Git.pm +++ b/lib/Oyster/Deploy/Git.pm @@ -1,32 +1,58 @@ package Oyster::Deploy::Git; +use strict; +use warnings; +#use Git::Wrapper; # sorry fails tests! use Moose; -use Git::Wrapper; -use Error::Simple; -use Data::Dumper; -use File::Copy; -use File::ShareDir ':ALL'; +our $post_receive = q{ +#!/bin/sh +cd .. +/usr/bin/git reset --hard HEAD +dzil listdeps | xargs cpanm --local-lib=~/perl5 +}; + +our $post_update = q{ +#!/bin/sh +# This rather relies on being an account with permission to do this. +# Who does the script run as? Presumably the owner of the repo as git will +# use ssh-keys to get onto the server. +# +# Realistically that user needs to be put in /etc/sudoers +# +# user ALL=NOPASSWD: /etc/init.d/lighttpd +# +# Restart server +sudo /etc/init.d/lighttpd restart +}; sub create { my $self = shift; my $location = shift; - + if( -f $location || -d $location ) { - Error::Simple->throw("$location already exists"); + die("$location already exists"); } - + mkdir($location); - my $git = Git::Wrapper->new($location); - - - copy(dist_file( 'Oyster', './bin/git/post-receive'), ($git->dir . '.git/hooks/')) - or Error::Simple->throw('Creating post commit hooks failed.'); - copy(dist_file( 'Oyster', './bin/git/post-update'), ($git->dir . '.git/hooks/')) - or Error::Simple->throw('Creating post commit hooks failed.'); - - chmod(0x755, ('./bin/git/hooks/post-receive', './bin/git/hooks/post-update')); - + #my $git = Git::Wrapper->new($location); + #$git->init(); + qx{cd $location ; git init}; + + open my $fh_post_receive, '>', "$location/.git/hooks/post-receive" + or die "Cannot write to " . "$location/.git/hooks/post-receive: $!"; + print $fh_post_receive $post_receive; + close $fh_post_receive + or die "Cannot close " . "$location/.git/hooks/post-receive: $!"; + + open my $fh_post_update, '>', "$location/.git/hooks/post-update" + or die "Cannot write to " . "$location/.git/hooks/post-update: $!"; + print $fh_post_update $post_update; + close $fh_post_update + or die "Cannot close " . "$location/.git/hooks/post-update: $!"; + + chmod(0x755, ("$location/.git/hooks/post-receive", "$location/.git/hooks/post-update")); + return 1; }