Mercurial > hg > Members > anatofuz > slides
diff lib/Slideshow/Util.pm @ 6:e35e9779078a
auto-Update generated slides by script
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 25 Jan 2018 16:59:37 +0900 |
parents | e762bb571a45 |
children | 7d3faa099bc6 |
line wrap: on
line diff
--- a/lib/Slideshow/Util.pm Wed Jan 24 23:32:25 2018 +0900 +++ b/lib/Slideshow/Util.pm Thu Jan 25 16:59:37 2018 +0900 @@ -6,18 +6,51 @@ use Carp qw/ croak /; use base 'Exporter'; -use FindBin; -use lib "$FindBin::Bin/local/lib/perl5"; use Time::Piece; use feature 'say'; use Path::Tiny; +use File::chdir; +use Capture::Tiny qw/capture/; our @EXPORT = qw/ + getopts new set_template + build_recently + build_pinpoint /; +sub getopts { + my ($arg,$path) = @_; + + unless (defined $arg){ + return { help => 1}; + } + + if ($arg eq "new") { + return {new => 1}; + } elsif ( $arg eq "upload") { + upload(); + exit; + + } elsif ( $arg eq "build") { + + if(defined $path){ + return { build_point=> $path}; + } else { + return { build => "recent"}; + } + + } elsif ( $arg eq "upload"){ + return { upload => 1}; + + } else { + return { help => 1}; + } + +} + sub set_template { my $template = shift; my $file = path($template); @@ -34,18 +67,50 @@ $template->copy($slide); } -sub make_recently { +sub build_recently { + my ($root_directory_name) = @_; + my $root_dir = path($root_directory_name); + my $t = localtime; + + my $recently = shift @{[sort { $b->stat->mtime <=> $a->stat->mtime } $root_dir->children]}; + + _build($recently); } -sub make_pinpoint { +sub build_pinpoint { + my $target = shift; + + my $target_path = path($target); + + my $dir = $target_path->dirname; + my $slide = $target_path->basename; + + _build($dir,$slide); +} + +sub _build { + my ($dir,$target) = @_; + use Capture::Tiny; + + $target //= 'slide.md'; + + + local $CWD = $dir; + + my ($stdout,$stderr,$exit) = capture { + system(" slideshow build ${target} -t s6cr"); + }; + + if ($stderr){ + croak "Perl can't build...."; + } } sub upload { - use Capture::Tiny; my ($stdout,$stderr,$exit) = capture { system("hg addremove"); system("hg add");