OSDN Git Service

* Plugin::QuasiStaticContent: add last_execute_status and last_error_msg property
authorhylom <hylom@users.sourceforge.jp>
Fri, 25 May 2018 09:39:55 +0000 (18:39 +0900)
committerhylom <hylom@users.sourceforge.jp>
Fri, 25 May 2018 09:39:55 +0000 (18:39 +0900)
src/newslash_web/lib/Newslash/Plugin/QuasiStaticContent.pm

index 5e7a7a8..533aeb9 100644 (file)
@@ -67,10 +67,13 @@ sub _generate {
         }
     }
 
-    my $result = "";
     my $opts = $self->_build_options($gen_conf->{options});
-    $result = $self->_execute_cmd($cmd, $content, $opts);
+    my $result = $self->_execute_cmd($cmd, $content, $opts);
 
+    if ($self->{last_execute_status}) {
+        # error occured
+        return;
+    }
     return $self->add_content($target, $result, $gen_conf->{"content-type"});
 }
 
@@ -201,15 +204,24 @@ sub _build_options {
 sub _generate_all {
     my $self = shift;
     my $targets = $self->{conf}->{targets} || {};
+    my $err = 0;
+    my @err_msgs;
     for my $target (keys %$targets) {
-        $self->_generate($target);
+        if (!$self->_generate($target)) {
+            $err = 1;
+            push @err_msgs, $self->{last_error_msg};
+            push @err_msgs, $self->{last_result};
+        }
+    }
+    if ($err) {
+        $self->{last_error_msg} = join("\n", @err_msgs);
     }
+    return !$err;
 }
 
 sub rebuild {
     my $self = shift;
-    $self->_generate_all;
-    return 1;
+    return $self->_generate_all;
 }
 
 sub register {
@@ -217,6 +229,9 @@ sub register {
 
     $self->{conf} = {%$conf, %{$app->config->{QuasiStaticContent}}};
     $self->{app} = $app;
+    $self->{last_error_msg} = "";
+    $self->{last_execute_status} = 0;
+
 
     $self->_generate_all;
     #$self->{contents} = {};
@@ -311,6 +326,9 @@ sub _execute_cmd {
     }
 
     my $status = WIFEXITED($?) ? WEXITSTATUS($?) : WTERMSIG($?);
+    $self->{last_error_msg} = $err_msg;
+    $self->{last_execute_status} = $status;
+    $self->{last_result} = $result;
     if ($err_msg) {
         $self->{app}->log->error("QSC: command $command execute failed - $err_msg");
     }
@@ -322,7 +340,7 @@ sub _execute_cmd {
         if ($err_msg) {
             $self->{app}->log->error($err_msg);
         }
-        return "";
+        return;
     }
     return $result;
 }