From b60f3d26c7396599c48ac231e945a666fe5c19ef Mon Sep 17 00:00:00 2001 From: Alex Schroeder Date: Thu, 23 Jun 2016 18:33:42 +0200 Subject: [PATCH] Script to serve tarballs --- scripts/tarballs.pl | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 scripts/tarballs.pl 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'; +

Releases

+ +

Welcome! This is where you get access to tarballs and files in released +versions of Oddmuse.

+ + + + +@@ release.html.ep +% layout 'default'; +% title 'Release'; +

<%= $tarball %>

+

+Back to the <%= link_to 'main page' => 'main' %>. + +

+ +@@ file.txt.ep +%layout 'file'; +<%= $content %> + +@@ layouts/default.html.ep + + + +<%= title %> +%= stylesheet '/tarballs.css' +%= stylesheet begin +body { + padding: 1em; + font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif; +} +% end + + + +<%= content %> +
+

+<%= link_to 'Releases' => 'main' %> Alex SchroederOddmuse + +