File Coverage

blib/lib/Riji/CLI/NewEntry.pm
Criterion Covered Total %
statement 39 40 97.5
branch 5 10 50.0
condition 4 9 44.4
subroutine 8 8 100.0
pod 0 1 0.0
total 56 68 82.3


line stmt bran cond sub pod time code
1             package Riji::CLI::NewEntry;
2 1     1   194420 use feature ':5.10';
  1         5  
  1         142  
3 1     1   7 use strict;
  1         2  
  1         18  
4 1     1   5 use warnings;
  1         1  
  1         36  
5              
6 1     1   5 use IPC::Cmd ();
  1         20  
  1         27  
7 1     1   6 use Path::Tiny;
  1         8  
  1         49  
8 1     1   528 use Time::Piece;
  1         9692  
  1         4  
9              
10 1     1   485 use Riji;
  1         3  
  1         343  
11              
12             sub run {
13 1     1 0 4225 my ($class, @argv) = @_;
14 1         17 my $subtitle = shift @argv;
15 1 50 33     29 die "subtitle: $subtitle is not valid\n" if $subtitle && $subtitle =~ /[^-_a-zA-Z0-9.]/;
16              
17 1         73 my $app = Riji->new;
18              
19 1         5257 my $now = localtime;
20 1         291 my $dir = $app->model('Blog')->entry_path;
21 1 50       194 $dir->mkpath unless $dir->exists;
22 1         68 my $date_str = $now->strftime('%Y-%m-%d');
23 1         250 my $file_format = "$dir/$date_str-%s.md";
24 1         17 my $file;
25 1 50       15 if ($subtitle) {
26 0         0 $file = path(sprintf $file_format, $subtitle);
27             }
28             else {
29 1         7 my $seq = 1;
30 1   66     45 $file = path(sprintf $file_format, sprintf('%02d', $seq++)) while !$file || -e $file;
31             }
32              
33 1 50       126 $file->spew(<<'...') unless -e $file;
34             tags: blah
35             ---
36             # title
37             ...
38              
39 1         1040 my $editor = $ENV{EDITOR};
40 1   33     12 $editor = $editor && IPC::Cmd::can_run($editor);
41              
42 1 50       12 exec $editor, "$file" if $editor;
43 1         7 say "$file is created. Edit it!";
44             }
45              
46             1;