#!/usr/bin/env perl
-# why are we passing around root like a cheap whore?
+ # XXX
-# https://metacpan.org/pod/Readonly
++# why are we passing around root like a cheap whore? because root is where things are (f(x) -> y)
+ # looking into it, i think we should have a global config object using
-# i modified the routing heavily, this is how people do it;
++# https://metacpan.org/pod/Readonly fuck read only, constants are for faggots
+ #
-# you must also realize that not all routes are necessarily templates,
++# i modified the routing heavily, this is how people do it; very scary
+ # pretty clean
-# complicate beyond comprehension
++# you must also realize that not all routes are necessarily templates, then they are routed by nginx.
+ # it could be a redirect for example, so the original solution would
++# complicate beyond comprehension ACK.
+
use strict;
use warnings;
-
use CGI;
- use Switch::Back;
use Template;
use URI::Escape;
use Cwd;
warn join(' ', @_);
}
--our $template = Template->new({INCLUDE_PATH => 'template'});
+
+ sub serve_template {
++ my $template = Template->new({INCLUDE_PATH => 'template'});
+ my ($template_name, $data) = @_;
+
+ $template->process($template_name, $data)
+ or info("Template: " . $template->error());
+ }
# significant dirs only
sub GN::directories {
}
sub GN::repository { # /$username/$repository
- my ($root, $dataref) = @_;
- my %data = %$dataref;
- $data{found} = 0;
- return \%data;
- }
+ my ($root, $username, $repository) = @_;
- sub serve_template {
- my ($file, @rest) = @_;
- my %vars = @rest ? @rest : ();
-
- $template->process($file, \%vars)
- or info("Template: " . $template->error());
+ die 'not implemented';
}
- my %routes = (
- '/' => sub { serve_template("index.tt", @_) },
- '/~([a-zA-Z0-9_.]+)' => sub { serve_template("index_user.tt", @_) },
- '/~([a-zA-Z0-9_.]+)/([a-zA-Z0-9_.]+)' => sub { serve_template("repository.tt", @_) },
- );
-
-my $public = 'repos/';
-my $dbfile = 'gorillanest.sqlite3';
+my $root = GIT_ROOT;
+my $dbfile = DB_FILE;
++
my %data = (
found => 0,
);
- '/' => sub { GN::index($public); },
- '/~([\w.]+)' => sub { GN::user($public, @_) },
- '/~([\w.]+)/([\w.]+)' => sub { GN::repository($public, @_) },
+ my %routes = (
++ '/' => sub { GN::index($root); },
++ '/~([\w.]+)' => sub { GN::user($root, @_) },
++ '/~([\w.]+)/([\w.]+)' => sub { GN::repository($root, @_) },
+ );
+ my %route_regex_cache = map { $_ => qr{^$_$} } keys %routes;
+
sub master {
my $cgi = CGI->new;
my %header = (
}
}
- serve_template("404.tt"); # XXX missing code
+ serve_template("404.tt", {}); # XXX missing code
}
-master() if !caller; 1;
+master() if !caller;
+
+1;
use Syntax::Keyword::Try;
use FCGI;
- # BEGIN { require 'config.pl'; }
+use lib '.';
BEGIN { require 'gorillanest.pl.cgi'; }
-our $request = FCGI::Request();
-
try {
+ open STDERR, '>', LOG_FILE or die LOG_FILE . ": $!";
+ my $sock = FCGI::OpenSocket(SOCKET_FILE, 100);
+ my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $sock);
while($request->Accept() >= 0) {
master();
}