From: Marco Fontani Date: Mon, 22 Nov 2010 21:57:06 +0000 (+0000) Subject: Inlined files, easier deployment of module X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FOyster.git;a=commitdiff_plain;h=73e49568c742446827513eab3e170b636c06b392 Inlined files, easier deployment of module --- diff --git a/lib/Oyster/Deploy/Git.pm b/lib/Oyster/Deploy/Git.pm index c70eb8e..8f22d35 100644 --- a/lib/Oyster/Deploy/Git.pm +++ b/lib/Oyster/Deploy/Git.pm @@ -1,43 +1,53 @@ package Oyster::Deploy::Git; +use strict; +use warnings; -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 .. +env -i 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); $git->init(); - my ($postreceive, $postupdate); - - eval { - $postreceive = dist_file( 'Oyster', './deploy/git/post-receive'); - $postupdate = dist_file( 'Oyster', './deploy/git/post-update'); - }; - #Beware there be deamons here - if ($@) { - $postreceive = './share/deploy/git/post-receive'; - $postupdate = './share/deploy/git/post-update'; - } - - - copy($postreceive, ($git->dir . '/.git/hooks/')) - or Error::Simple->throw('Creating post commit hooks failed.'); - - copy($postupdate, ($git->dir . '/.git/hooks/')) - or Error::Simple->throw('Creating post commit hooks failed.'); + open my $fh_post_receive, '>', $git->dir . '/.git/hooks/post-receive' + or die "Cannot write to " . $git->dir . '/.git/hooks/post-receive' . ": $!"; + print $fh_post_receive $post_receive; + close $fh_post_receive + or die "Cannot close " . $git->dir . '/.git/hooks/post-receive' . ": $!"; + + open my $fh_post_update, '>', $git->dir . '/.git/hooks/post-update' + or die "Cannot write to " . $git->dir . '/.git/hooks/post-update' . ": $!"; + print $fh_post_update $post_update; + close $fh_post_update + or die "Cannot close " . $git->dir . '/.git/hooks/post-update' . ": $!"; chmod(0x755, ($git->dir . '.git/hooks/post-receive', $git->dir . '.git/hooks/post-update'));