Update to Mojolicious 8.35

This commit is contained in:
Tianon Gravi 2020-03-26 15:29:23 -07:00
parent 13c9feaf28
commit 50326f312f
2 changed files with 16 additions and 15 deletions

View File

@ -19,7 +19,7 @@ RUN cpanm Digest::SHA Module::Signature
# reinstall cpanm itself, for good measure # reinstall cpanm itself, for good measure
RUN cpanm App::cpanminus RUN cpanm App::cpanminus
RUN cpanm Mojolicious@5.80 RUN cpanm Mojolicious@8.35
RUN cpanm EV RUN cpanm EV
RUN cpanm IO::Socket::IP RUN cpanm IO::Socket::IP

27
push.pl
View File

@ -7,8 +7,9 @@ use open ':encoding(utf8)';
use File::Basename qw(basename fileparse); use File::Basename qw(basename fileparse);
use File::Temp; use File::Temp;
use Getopt::Long; use Getopt::Long;
use Mojo::File;
use Mojo::UserAgent; use Mojo::UserAgent;
use Mojo::Util qw(b64_encode decode encode slurp spurt trim); use Mojo::Util qw(b64_encode decode encode trim);
use Term::UI; use Term::UI;
use Term::ReadLine; use Term::ReadLine;
@ -43,7 +44,7 @@ unless (defined $password) {
} }
my $login = $ua->post('https://hub.docker.com/v2/users/login/' => {} => json => { username => $username, password => $password }); my $login = $ua->post('https://hub.docker.com/v2/users/login/' => {} => json => { username => $username, password => $password });
die 'login failed' unless $login->success; die 'login failed' unless $login->res->is_success;
my $token = $login->res->json->{token}; my $token = $login->res->json->{token};
@ -57,7 +58,7 @@ for my $cookie (@{ $login->res->cookies }) {
die 'missing CSRF token' unless defined $csrf; die 'missing CSRF token' unless defined $csrf;
my $attemptLogin = $ua->post('https://hub.docker.com/attempt-login/' => {} => json => { jwt => $token }); my $attemptLogin = $ua->post('https://hub.docker.com/attempt-login/' => {} => json => { jwt => $token });
die 'attempt-login failed' unless $attemptLogin->success; die 'attempt-login failed' unless $attemptLogin->res->is_success;
my $authorizationHeader = { my $authorizationHeader = {
Authorization => "JWT $token", Authorization => "JWT $token",
@ -65,7 +66,7 @@ my $authorizationHeader = {
}; };
my $userData = $ua->get('https://hub.docker.com/v2/user/' => $authorizationHeader); my $userData = $ua->get('https://hub.docker.com/v2/user/' => $authorizationHeader);
die 'user failed' unless $userData->success; die 'user failed' unless $userData->res->is_success;
$userData = $userData->res->json; $userData = $userData->res->json;
sub prompt_for_edit { sub prompt_for_edit {
@ -73,7 +74,7 @@ sub prompt_for_edit {
my $proposedFile = shift; my $proposedFile = shift;
my $lengthLimit = shift // 0; my $lengthLimit = shift // 0;
my $proposedText = slurp $proposedFile or warn 'missing ' . $proposedFile; my $proposedText = Mojo::File->new($proposedFile)->slurp or warn 'missing ' . $proposedFile;
$proposedText = trim(decode('UTF-8', $proposedText)); $proposedText = trim(decode('UTF-8', $proposedText));
# remove our warning about generated files (Hub doesn't support HTML comments in Markdown) # remove our warning about generated files (Hub doesn't support HTML comments in Markdown)
@ -104,11 +105,11 @@ sub prompt_for_edit {
my @proposedFileBits = fileparse($proposedFile, qr!\.[^.]*!); my @proposedFileBits = fileparse($proposedFile, qr!\.[^.]*!);
my $file = File::Temp->new(SUFFIX => '-' . basename($proposedFileBits[1]) . '-current' . $proposedFileBits[2]); my $file = File::Temp->new(SUFFIX => '-' . basename($proposedFileBits[1]) . '-current' . $proposedFileBits[2]);
my $filename = $file->filename; my $filename = $file->filename;
spurt encode('UTF-8', $currentText . "\n"), $filename; Mojo::File->new($filename)->spurt(encode('UTF-8', $currentText . "\n"));
my $tempProposedFile = File::Temp->new(SUFFIX => '-' . basename($proposedFileBits[1]) . '-proposed' . $proposedFileBits[2]); my $tempProposedFile = File::Temp->new(SUFFIX => '-' . basename($proposedFileBits[1]) . '-proposed' . $proposedFileBits[2]);
my $tempProposedFilename = $tempProposedFile->filename; my $tempProposedFilename = $tempProposedFile->filename;
spurt encode('UTF-8', $proposedText . "\n"), $tempProposedFilename; Mojo::File->new($tempProposedFilename)->spurt(encode('UTF-8', $proposedText . "\n"));
system(qw(git --no-pager diff --no-index), $filename, $tempProposedFilename); system(qw(git --no-pager diff --no-index), $filename, $tempProposedFilename);
@ -135,7 +136,7 @@ sub prompt_for_edit {
if ($reply eq 'vimdiff') { if ($reply eq 'vimdiff') {
system('vimdiff', $tempProposedFilename, $filename) == 0 or die "vimdiff on $filename and $proposedFile failed"; system('vimdiff', $tempProposedFilename, $filename) == 0 or die "vimdiff on $filename and $proposedFile failed";
return trim(decode('UTF-8', slurp($filename))); return trim(decode('UTF-8', Mojo::File->new($filename)->slurp));
} }
return $currentText; return $currentText;
@ -173,9 +174,9 @@ while (my $repo = shift) { # 'library/hylang', 'tianon/perl', etc
} }
} }
if (-f $repoLogo120) { if (-f $repoLogo120) {
my $proposedLogo = slurp($repoLogo120); my $proposedLogo = Mojo::File->new($repoLogo120)->slurp;
my $currentLogo = $ua->get('https://d1q6f0aelx0por.cloudfront.net/product-logos/' . join('-', split(m{/}, $repo)) . '-logo.png', { 'Cache-Control' => 'no-cache' }); my $currentLogo = $ua->get('https://d1q6f0aelx0por.cloudfront.net/product-logos/' . join('-', split(m{/}, $repo)) . '-logo.png', { 'Cache-Control' => 'no-cache' });
$currentLogo = ($currentLogo->success ? $currentLogo->res->body : undef); $currentLogo = ($currentLogo->res->is_success ? $currentLogo->res->body : undef);
if ($currentLogo && $currentLogo eq $proposedLogo) { if ($currentLogo && $currentLogo eq $proposedLogo) {
say 'no change to ' . $repoName . ' logo; skipping'; say 'no change to ' . $repoName . ' logo; skipping';
@ -188,13 +189,13 @@ while (my $repo = shift) { # 'library/hylang', 'tianon/perl', etc
'content_type' => 'image/png', 'content_type' => 'image/png',
'file_ext' => 'png', 'file_ext' => 'png',
}); });
warn 'warning: put to ' . $logoUrl . ' failed: ' . $logoPut->res->text unless $logoPut->success; warn 'warning: put to ' . $logoUrl . ' failed: ' . $logoPut->res->text unless $logoPut->res->is_success;
} }
} }
} }
my $repoTx = $ua->get($repoUrl => $authorizationHeader); my $repoTx = $ua->get($repoUrl => $authorizationHeader);
warn 'warning: failed to get: ' . $repoUrl . ' (skipping)' and next unless $repoTx->success; warn 'warning: failed to get: ' . $repoUrl . ' (skipping)' and next unless $repoTx->res->is_success;
my $repoDetails = $repoTx->res->json; my $repoDetails = $repoTx->res->json;
$repoDetails->{description} //= ''; $repoDetails->{description} //= '';
@ -211,5 +212,5 @@ while (my $repo = shift) { # 'library/hylang', 'tianon/perl', etc
description => $hubShort, description => $hubShort,
full_description => $hubLong, full_description => $hubLong,
}); });
warn 'patch to ' . $repoUrl . ' failed: ' . $repoPatch->res->text and next unless $repoPatch->success; warn 'patch to ' . $repoUrl . ' failed: ' . $repoPatch->res->text and next unless $repoPatch->res->is_success;
} }