#!/usr/bin/env perl =head1 NAME website slides - Create new HTML slide presentations from org-mode template. =head1 SYNOPSIS website slides [options] Options: --help Show the manpage. --name The name of the folder containing the slideshow. =head1 OPTIONS =over 4 =item B<-h, --help> Prints the manual page and exits. =item B<-n, --name> The name of the folder containing the slideshow. =back =head1 DESCRIPTION B creates an slideshow org-mode text files, that are later processed to produce HTML to be deployed statically. =cut use strict; use warnings; use Getopt::Long qw(:config no_ignore_case bundling); use Pod::Usage qw(pod2usage); use File::Basename qw(dirname); use File::Path qw(make_path); use File::Copy qw(copy); use Term::ANSIColor; my $help = 0; my $name = ''; my $test = 0; GetOptions( 'help|h|?' => \$help, 'name|n=s' => \$name, 'test|?' => \$test ) or pod2usage(-verbose => 1, -exitval => 2); pod2usage(-verbose => 2, -exitval => 0) if $help; pod2usage( -verbose => 1, -exitval => 2, -message => colored("Missing required --name argument.", "red") ) if !$name && !$test; if ($test) { exit; } my $dirname = dirname(__FILE__); chdir $dirname ; make_path "$name/reveal.js/"; chdir "reveal.js/"; `git --work-tree="../$name/reveal.js" checkout HEAD -- .`; `git checkout \$(cat "../$name/reveal.js/VERSION" &> /dev/null || printf ".")`; `git rev-parse HEAD > "../$name/VERSION"`; chdir "../"; copy("base.org", "$name/index.org") or die "Failed to copy base.org file: $!"; print `realpath $name/index.org`;