|
|
|
|
@ -1,16 +1,36 @@ |
|
|
|
|
package MJB::Web::Task::CreateBlog; |
|
|
|
|
use Mojo::Base 'Minion::Job', -signatures; |
|
|
|
|
use Mojo::File qw( curfile ); |
|
|
|
|
use Mojo::File qw( tempdir ); |
|
|
|
|
use File::Copy::Recursive qw( dircopy ); |
|
|
|
|
use IPC::Run3; |
|
|
|
|
|
|
|
|
|
sub run ( $job, $blog_id ) { |
|
|
|
|
my $blog = $job->app->db->blog( $blog_id ); |
|
|
|
|
$job->note( _mds_template => 'create_blog' ); |
|
|
|
|
|
|
|
|
|
# Create clone of standard jekyll blog in repos/user_id/blog_id |
|
|
|
|
|
|
|
|
|
# Set the git configuration for the clone so that it goes to gitea. |
|
|
|
|
# TODO: add gitea user with ssh key? |
|
|
|
|
my $dir = tempdir; |
|
|
|
|
|
|
|
|
|
$job->system_command( [qw( podman run -ti --rm -v .:/srv/jekyll -e JEKYLL_ROOTLESS=1 docker.io/jekyll/jekyll new blog ) ], { |
|
|
|
|
chdir => $dir->to_string, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
my $blog_root = $dir->child('blog'); |
|
|
|
|
|
|
|
|
|
$job->system_command( [ qw( git remote add origin ), $blog->repo->url ], { |
|
|
|
|
chdir => $blog_root->to_string, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$job->system_command( [ qw( git add * ) ], { |
|
|
|
|
chdir => $blog_root->to_string, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$job->system_command( [ qw( git commit -m ), "Created blog!" ], { |
|
|
|
|
chdir => $blog_root->to_string, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$job->system_command( [ qw( git push origin master ) ], { |
|
|
|
|
chdir => $blog_root->to_string, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|