Add docs about how to configure
[catagits/Gitalist.git] / lib / Gitalist.pm
CommitLineData
89de6a33 1package Gitalist;
42fe5d11 2use Moose;
775e96e0 3BEGIN { require 5.008006; }
89de6a33 4use Catalyst::Runtime 5.80;
775e96e0 5use namespace::autoclean;
89de6a33 6
42fe5d11 7extends 'Catalyst';
89de6a33 8
43d4a724 9use Catalyst qw/
89de6a33 10 ConfigLoader
fac828e0 11 Unicode::Encoding
d5cc37a4 12 Static::Simple
fac828e0 13 StackTrace
14/;
61b56ed6 15
28193751 16our $VERSION = '0.000001';
775e96e0 17$VERSION = eval $VERSION;
89de6a33 18
d3feefcf 19__PACKAGE__->config(
61b56ed6 20 name => 'Gitalist',
21 default_view => 'Default',
1aad4e81 22 default_model => 'GitRepos',
d3feefcf 23);
89de6a33 24
89de6a33 25__PACKAGE__->setup();
26
4df2f62f 27around uri_for => sub {
28 my ($orig, $c) = (shift, shift);
68068ba2 29 my $project_name = $c->stash->{'Project'} && $c->stash->{'Project'}->name;
c1f608c8 30 my $hash = ref($_[-1]) eq 'HASH' ? pop @_ : {};
4df2f62f 31 my $params = Catalyst::Utils::merge_hashes(
68068ba2 32 { p => $hash->{p} || $project_name },
c1f608c8 33 $hash,
4df2f62f 34 );
68068ba2 35 delete $params->{p} unless defined $params->{p} && length $params->{p};
4df2f62f 36 (my $uri = $c->$orig(@_, $params))
37 =~ tr[&][;];
38 return $uri;
39};
61b56ed6 40
775e96e0 411;
42
43__END__
44
89de6a33 45=head1 NAME
46
775e96e0 47Gitalist - A modern git web viewer
89de6a33 48
49=head1 SYNOPSIS
50
63f34424 51 script/gitalist_server.pl --repo_dir /home/me/code/git
89de6a33 52
b6d010e1 53=head1 INSTALL
54
55As Gitalist follows the usual Perl module format the usual approach
63f34424 56for installation should work e.g.
b6d010e1 57
58 perl Makefile.PL
59 make
60 make test
61 make install
62
63f34424 63or
64
65 cpan -i Gitalist
66
67You can also check gitalist out from git and run it, in this case you'll additionally
68need the author modules, but no configuration will be needed as it will default to looking
69for repositories the directory above the checkout.
b6d010e1 70
89de6a33 71=head1 DESCRIPTION
72
b6d010e1 73Gitalist is a web frontend for git repositories based on gitweb.cgi
775e96e0 74and backed by Catalyst.
b6d010e1 75
76=head2 History
77
78This project started off as an attempt to port gitweb.cgi to a
79Catalyst app in a piecemeal fashion. As it turns out, thanks largely
80to Florian Ragwitz's earlier effort, it was easier to use gitweb.cgi
81as a template for building a new Catalyst application.
89de6a33 82
63f34424 83=head1 CONFIGURATION
84
85Gitalist can be supplied with a config file by setting the C<< GITALIST_CONFIG >>
86environment variable to point to a configuration file.
87
88A default configuration is installed along with gitalist, which is complete except
89for a repository directory. You can get a copy of this configuration by running:
90
91 cp `perl -Ilib -MGitalist -e'print Gitalist->path_to("gitalist.conf")'` gitalist.conf
92
93adding a repos_dir path and then setting C<< GITALIST_CONFIG >>.
94
95Alternatively, if you only want to set a repository directory and are otherwise happy with
96the default configuration, then you can set the C<< GITALIST_REPOS_DIR >> environment
97variable, or pass the C<< --repos_dir >> flag to any of the scripts.
98
99The C<< GITALIST_REPOS_DIR >> environment variable will override the repository directory set
100in configuration, and will itself be overridden by he C<< --repos_dir >> flag.
101
89de6a33 102=head1 SEE ALSO
103
b6d010e1 104L<Gitalist::Controller::Root>
105
106L<Gitalist::Git::Project>
107
108L<Catalyst>
89de6a33 109
42fe5d11 110=head1 AUTHORS AND COPYRIGHT
89de6a33 111
42fe5d11 112 Catalyst application:
b6d010e1 113 (C) 2009 Venda Ltd and Dan Brook <broq@cpan.org>
114 (C) 2009, Tom Doran <bobtfish@bobtfish.net>
115 (C) 2009, Zac Stevens <zts@cryptocracy.com>
42fe5d11 116
117 Original gitweb.cgi from which this was derived:
118 (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>
119 (C) 2005, Christian Gierke
89de6a33 120
b6d010e1 121 Model based on http://github.com/rafl/gitweb
122 (C) 2008, Florian Ragwitz
89de6a33 123
b6d010e1 124=head1 LICENSE
42fe5d11 125
b6d010e1 126Licensed under GNU GPL v2
89de6a33 127
128=cut