Whole bunch of changes and releases

This commit is contained in:
Yorhel 2018-01-29 14:32:46 +01:00
parent 07143cfb36
commit 54947f15c2
36 changed files with 3269 additions and 40 deletions

View file

@ -3,7 +3,7 @@
use strict;
use warnings;
use utf8;
use TUWF ':html', ':xml';
use TUWF ':html';
use POSIX 'strftime';
use Cwd 'abs_path';
@ -12,6 +12,10 @@ BEGIN { ($ROOT = abs_path $0) =~ s{index\.cgi$}{}; }
my @changes = (
[ '2018-01-29', '/ncdu', 'ncdu 1.13 released' ],
[ '2018-01-24', '/nginx-confgen', 'nginx-confgen 1.1 released' ],
[ '2018-01-19', '/nginx-confgen', 'New project: nginx-confgen' ],
[ '2017-05-28', '/doc/funcweb', 'New article: An Opinionated Survey of Functional Web Development' ],
[ '2016-12-30', '/ncdc', 'ncdc 1.20 released' ],
[ '2016-08-24', '/ncdu', 'ncdu 1.12 released' ],
[ '2016-08-16', '/dump/btrfssize', 'Uploaded btrfs-size.pl' ],
@ -109,6 +113,9 @@ TUWF::register(
qr{globster/daemon} => sub { podpage(shift, 'globster-daemon', 'globster', 'daemon', 'The globster(1) Man Page', 1) },
qr{globster/launch} => sub { podpage(shift, 'globster-launch', 'globster', 'launch', 'The globster-launch(1) Man Page', 1) },
qr{globster/ctl} => sub { podpage(shift, 'globster-ctl', 'globster', 'ctl', 'The globsterctl(1) Man Page', 1) },
qr{nginx-confgen} => sub { podpage(shift, 'nginx-confgen', 'nginx-confgen', '', 'Nginx Configuration Generator') },
qr{nginx-confgen/man} => sub { podpage(shift, 'nginx-confgen-man', 'nginx-confgen', 'man', 'The nginx-confgen(1) Man Page', 1) },
qr{nginx-confgen/changes} => sub { changelog(shift, 'nginx-confgen-changelog', undef, 'nginx-confgen', 'changes', 'nginx-confgen Changelog', 1) },
qr{tuwf} => sub { podpage(shift, 'tuwf', 'tuwf', '', 'The Ultimate Website Framework') },
qr{tuwf/man(?:/(db|misc|request|response|xml))?} => \&tuwfmanual,
qr{tuwf/changes} => sub { changelog(shift, 'tuwf-changelog', 'TUWF', 'tuwf', 'changes', 'TUWF Changelog') },
@ -120,6 +127,7 @@ TUWF::register(
qr{doc/commvis} => sub { podpage(shift, 'doc-commvis', 'doc', '', 'A Distributed Communication System for Modular Applications', 1) },
qr{doc/dcstats} => sub { podpage(shift, 'doc-dcstats', 'doc', '', 'Some Measurements on Direct Connect File Lists', 1) },
qr{doc/easyipc} => sub { podpage(shift, 'doc-easyipc', 'doc', '', 'The Sorry State of Convenient IPC', 1) },
qr{doc/funcweb} => sub { podpage(shift, 'doc-funcweb', 'doc', '', 'An Opinionated Survey of Functional Web Development') },
qr{dump} => sub { podpage(shift, 'dump', 'dump', '', 'Code dump') },
qr{demo} => sub { podpage(shift, 'dump-demo', 'dump', 'demo', 'Demos') },
qr{dump/awshrink} => sub { podpage(shift, 'dump-awshrink', 'dump', 'awshrink', 'AWStats Data File Shrinker') },
@ -165,8 +173,11 @@ sub changelog {
$v =~ s/^([0-9]+\.[0-9]+(?:\.[0-9]+)?)\s+-\s+([0-9]{4}-[0-9]{2}-[0-9]{2})//;
li style => 'list-style-type: none; margin: 0';
b $1;
txt " - $2 - ";
lit $s->genDLLink("$pr-$1.tar.gz");
txt " - $2";
if($pr) {
txt ' - ';
lit $s->genDLLink("$pr-$1.tar.gz");
}
br;
ul;
for (split(/\r?\n\s+-\s+/, $v)) {
@ -203,7 +214,7 @@ sub atom {
my $t = (stat("$ROOT/index.cgi"))[9];
$s->resHeader('Last-Modified' => strftime '%a, %d %b %Y %H:%M:%S GMT', gmtime $t);
$s->resHeader('Content-Type' => 'application/atom+xml');
xml;
TUWF::XML::xml;
tag feed => xmlns => 'http://www.w3.org/2005/Atom', 'xml:lang' => 'en', 'xml:base' => 'https://dev.yorhel.nl/';
tag title => $sub ? "\u$sub Project Announcements" : "Yorhel's Projects";
tag updated => strftime('%Y-%m-%dT%H:%M:%SZ', gmtime $t);
@ -387,6 +398,7 @@ sub htmlPOD {
globster-launch(1) /globster/launch
globster(1) /globster/daemon
globster-api(7) /globster/api
ncdu(1) /ncdu/man
|;
return $l{$l} || ($l =~ /(.+)\((.)\)/ and "http://manned.org/$1.$2");
};
@ -444,7 +456,7 @@ sub genChanges {
sub htmlHeader {
my $s = shift;
my %o = (
spec => { map +($_,1), qw|ncdu ncdc globster tuwf yxml| },
spec => { map +($_,1), qw|ncdu ncdc globster tuwf yxml nginx-confgen| },
page => '',
sec => '',
sec2 => '',
@ -548,12 +560,17 @@ sub htmlMenu {
$m->('/yxml', 'Info', !$o{sec});
$m->('/yxml/man', 'Manual', $o{sec} eq 'man');
$m->('/yxml/bug', 'Bug tracker', $o{sec} eq 'bug');
} elsif($o{page} eq 'nginx-confgen') {
$m->('/nginx-confgen', 'Info', !$o{sec});
$m->('/nginx-confgen/man', 'Manual', $o{sec} eq 'man');
$m->('/nginx-confgen/changes', 'Changelog', $o{sec} eq 'changes');
} else {
$m->('/', 'Home', !$o{page});
$m->('/ncdu', 'Ncdu ');
$m->('/ncdc', 'Ncdc ');
$m->('/tuwf', 'Tuwf ');
$m->('/yxml', 'Yxml ');
$m->('/nginx-confgen', 'Nginx-cfg ');
$m->('/ylib', 'Ylib', $o{page} eq 'ylib');
$m->('/doc', 'Writing', $o{page} eq 'doc');
$m->('/dump', 'Code dump', $o{page} eq 'dump', sub {