Fixed bug in where branch links were always pointing at master.
[catagits/Gitalist.git] / lib / Gitalist.pm
CommitLineData
89de6a33 1package Gitalist;
42fe5d11 2use Moose;
3use namespace::autoclean;
89de6a33 4
5use Catalyst::Runtime 5.80;
6
42fe5d11 7extends 'Catalyst';
89de6a33 8
43d4a724 9use Catalyst qw/
89de6a33 10 ConfigLoader
d5cc37a4 11 Static::Simple
61b56ed6 12 StackTrace/;
13
89de6a33 14our $VERSION = '0.01';
15
4666d5c7 16# Bring in the libified gitweb.cgi.
17use gitweb;
18
d3feefcf 19__PACKAGE__->config(
61b56ed6 20 name => 'Gitalist',
21 default_view => 'Default',
1aad4e81 22 default_model => 'GitRepos',
dd3c4caf 23 # Set to 1 to make your fcgi die the request after you push :)
24 exit_at_end_of_request_if_updated => 0,
d3feefcf 25);
89de6a33 26
dd3c4caf 27{
28 my $version;
29 my $get_version = sub {
30 my $gitdir = shift->path_to('.git');
31 my $version = qx{cat "$gitdir/`cut -d' ' -f2 .git/HEAD`"};
32 chomp $version;
33 return $version;
34 };
35
36 after setup_finalize => sub {
37 my $c = shift;
38 $version = $c->$get_version
39 if $c->config->{exit_at_end_of_request_if_updated};
40 };
41 after handle_request => sub {
42 my $c = shift;
43 if ($version) {
44 my $new = $c->$get_version;
45 exit 0 unless $new eq $version;
46 }
47 };
48}
49
50
89de6a33 51# Start the application
52__PACKAGE__->setup();
53
4df2f62f 54around uri_for => sub {
55 my ($orig, $c) = (shift, shift);
68068ba2 56 my $project_name = $c->stash->{'Project'} && $c->stash->{'Project'}->name;
c1f608c8 57 my $hash = ref($_[-1]) eq 'HASH' ? pop @_ : {};
4df2f62f 58 my $params = Catalyst::Utils::merge_hashes(
68068ba2 59 { p => $hash->{p} || $project_name },
c1f608c8 60 $hash,
4df2f62f 61 );
68068ba2 62 delete $params->{p} unless defined $params->{p} && length $params->{p};
4df2f62f 63 (my $uri = $c->$orig(@_, $params))
64 =~ tr[&][;];
65 return $uri;
66};
61b56ed6 67
89de6a33 68=head1 NAME
69
70Gitalist - Catalyst based application
71
72=head1 SYNOPSIS
73
74 script/gitalist_server.pl
75
76=head1 DESCRIPTION
77
78[enter your description here]
79
80=head1 SEE ALSO
81
82L<Gitalist::Controller::Root>, L<Catalyst>
83
42fe5d11 84=head1 AUTHORS AND COPYRIGHT
89de6a33 85
42fe5d11 86 Catalyst application:
87 (C) 2009 Venda Ltd and Dan Brook <dbrook@venda.com>
88
89 Original gitweb.cgi from which this was derived:
90 (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>
91 (C) 2005, Christian Gierke
89de6a33 92
93=head1 LICENSE
94
42fe5d11 95FIXME - Is this going to be GPLv2 as per gitweb? If so this is broken..
96
89de6a33 97This library is free software. You can redistribute it and/or modify
98it under the same terms as Perl itself.
99
100=cut
101
1021;