diff --git a/scripts/tarballs.pl b/scripts/tarballs.pl new file mode 100644 index 00000000..b10030f6 --- /dev/null +++ b/scripts/tarballs.pl @@ -0,0 +1,97 @@ +#!/usr/bin/env perl +use Mojolicious::Lite; +use Archive::Tar; +use File::Basename; +my $dir = "/home/alex/oddmuse.org/releases"; + +get '/' => sub { + my $c = shift; + my @tarballs = sort map { + my ($name, $path, $suffix) = fileparse($_, '.tar.gz'); + $name; + } <$dir/*.tar.gz>; + $c->render(template => 'index', tarballs => \@tarballs); +} => 'main'; + +get '/release/#tarball' => sub { + my $c = shift; + my $tar = Archive::Tar->new; + my $tarball = $c->param('tarball'); + $tar->read("$dir/$tarball.tar.gz"); + my @files = sort grep /./, map { my @e = split('/', $_->name); $e[1] } $tar->get_files(); + $c->render(template => 'release', tarball=> $tarball, files => \@files); +} => 'release'; + +get '/release/#tarball/#file' => sub { + my $c = shift; + my $tar = Archive::Tar->new; + my $tarball = $c->param('tarball'); + $tar->read("$dir/$tarball.tar.gz"); + my $file = $c->param('file'); + my $text = $tar->get_content("$tarball/$file"); + $c->render(template => 'file', format => 'txt', content => $text); +} => 'file'; + +app->start; + +__DATA__ + +@@ index.html.ep +% layout 'default'; +% title 'Releases'; +
Welcome! This is where you get access to tarballs and files in released +versions of Oddmuse.
+ ++Back to the <%= link_to 'main page' => 'main' %>. + +
+<%= link_to 'Releases' => 'main' %> Alex Schroeder Oddmuse + +