From e20aabcb64f45f08a7551387f12c37fff63c1829 Mon Sep 17 00:00:00 2001 From: Blog Manager Robot Date: Sat, 29 Oct 2022 20:23:49 +0000 Subject: [PATCH] Refactor blog deployment. --- Web/lib/MJB/Web.pm | 8 ++++ Web/lib/MJB/Web/Controller/Dashboard.pm | 56 +++++++------------------ 2 files changed, 23 insertions(+), 41 deletions(-) diff --git a/Web/lib/MJB/Web.pm b/Web/lib/MJB/Web.pm index f6275f2..f972509 100644 --- a/Web/lib/MJB/Web.pm +++ b/Web/lib/MJB/Web.pm @@ -31,6 +31,14 @@ sub startup ($self) { ); }); + $self->helper( deploy_blog => sub ( $c, $blog ) { + my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { + notes => { '_bid_' . $blog->id => 1 }, + priority => $blog->build_priority, + }); + $blog->create_related( 'builds', { job_id => $build_job_id } ); + }); + # Minion plugin & tasks $self->plugin( Minion => { Pg => $self->config->{database}->{minion} } ); diff --git a/Web/lib/MJB/Web/Controller/Dashboard.pm b/Web/lib/MJB/Web/Controller/Dashboard.pm index fa14860..2939f8c 100644 --- a/Web/lib/MJB/Web/Controller/Dashboard.pm +++ b/Web/lib/MJB/Web/Controller/Dashboard.pm @@ -1,6 +1,7 @@ package MJB::Web::Controller::Dashboard; use Mojo::Base 'Mojolicious::Controller', -signatures; + sub index ($c) { push @{$c->stash->{blogs}}, $c->stash->{person}->search_related('blogs')->all; @@ -30,11 +31,7 @@ sub do_blog_post_remove ( $c ) { $jekyll->remove_markdown_file( $post ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "That post has been removed." ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) ); @@ -58,11 +55,7 @@ sub do_blog_post_edit ( $c ) { $jekyll->write_post( $post ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "Updated $title!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) ); @@ -107,11 +100,7 @@ sub do_blog_post ( $c ) { $jekyll->write_post( $post ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "Created $title!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_posts', { id => $blog->id } ) ); @@ -141,6 +130,8 @@ sub do_blog_settings ($c) { $jekyll->config->data->{email} = $email; $jekyll->write_config; + + $c->deploy_blog( $blog ); $c->flash( confirmation => "The settings have been updated!!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_settings', { id => $blog->id } ) ); @@ -167,6 +158,8 @@ sub do_blog_config ( $c ) { $jekyll->write_config; + $c->deploy_blog( $blog ); + $c->flash( confirmation => "The config has been updated!!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_config', { id => $blog->id } ) ); } @@ -192,11 +185,7 @@ sub do_blog_media_remove( $c ) { $jekyll->remove_file( $media_file->to_string, "Removed media file" . $media_file->basename ); } - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "Removed " . $media_file->basename ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_media', { id => $blog->id } ) ); @@ -221,11 +210,7 @@ sub do_blog_media ( $c ) { "Add media " . $upload->filename ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "Uploaded file!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_media', { id => $blog->id } ) ); @@ -251,6 +236,8 @@ sub do_blog_history ( $c ) { if ( $old_commit ) { $jekyll->revert_commit( $commit ); + $c->deploy_blog( $blog ); + $c->flash( confirmation => "Undid $commit!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_history', { id => $blog->id } ) ); } @@ -287,11 +274,7 @@ sub do_blog_page_remove ( $c ) { $jekyll->remove_markdown_file( $page ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "That page has been removed." ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) ); @@ -316,11 +299,7 @@ sub do_blog_page_edit ( $c ) { $jekyll->write_post( $blog_page ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "Updated Page " . $blog_page->filename . "!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) ); @@ -346,15 +325,10 @@ sub do_blog_page ( $c ) { $jekyll->write_post( $page ); - my $build_job_id = $c->minion->enqueue( 'deploy_blog', [ $blog->id ], { - notes => { '_bid_' . $blog->id => 1 }, - priority => $blog->build_priority, - }); - $blog->create_related( 'builds', { job_id => $build_job_id } ); + $c->deploy_blog( $blog ); $c->flash( confirmation => "Created Page " . $page->filename . "!" ); $c->redirect_to( $c->url_for( 'show_dashboard_blog_pages', { id => $blog->id } ) ); - } 1;