CheckUpdate.pl
· 2.0 KiB · Perl
Eredeti
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
use REST::Client;
use Perl::Version;
use File::Which;
use JSON::MaybeXS;
die "No opengist\n" unless which 'opengist';
die "No forgejo\n" unless which 'forgejo';
my $gversion = Perl::Version->new( substr `opengist version`, 9 );
my $gurl = "https://api.github.com/repos/thomiceli/opengist/releases/latest";
my $gh = REST::Client->new();
$gh->GET( $gurl, { "accept" => "application/vnd.github+json" } );
my $gcontent = decode_json $gh->responseContent();
my $ngversion = Perl::Version->new( $gcontent->{'name'} );
my $gdurl;
my $gname;
if ( $gversion < $ngversion ) {
`systemctl stop opengist`;
my @assets = @{ $gcontent->{'assets'} };
foreach my $assets (@assets) {
if ( $assets->{'name'} =~ /linux-amd64/ ) {
$gname = $assets->{'name'};
$gdurl = $assets->{'browser_download_url'};
}
}
print `aria2c $gdurl`;
print `tar xvf $gname`;
print `cp opengist/opengist /usr/local/bin/opengist -v`;
`systemctl restart opengist`;
print `rm -v $gname && rm -rvf opengist/`;
say "Updated opengist!";
}
else {
say "No need update opengist!";
}
my @fout = split( / /, `forgejo -v` );
my $fversion = substr $fout[5], 0, -1;
my $furl = "https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest";
my $f = REST::Client->new();
$f->GET( $furl, { "accept" => "application/json" } );
my $fcontent = decode_json $f->responseContent();
my $nfversion = Perl::Version->new( $fcontent->{'name'} );
my $fdurl;
my $fname;
if ( $fversion < $nfversion ) {
`systemctl stop forgejo`;
my @assets = @{ $gcontent->{'assets'} };
foreach my $assets (@assets) {
if ( $assets->{'name'} =~ /linux-amd64$/ ) {
$fname = $assets->{'name'};
$fdurl = $assets->{'browser_download_url'};
}
}
print `aria2c $fdurl`;
print `chmod +x $fname -v`;
print `mv $fname /usr/local/bin/forgejo -v`;
`systemctl restart forgejo`;
say "Updated forgejo!";
}
else {
say "No need update forgejo!";
}
| 1 | #!/usr/bin/perl |
| 2 | use strict; |
| 3 | use warnings; |
| 4 | use v5.10; |
| 5 | |
| 6 | use REST::Client; |
| 7 | use Perl::Version; |
| 8 | use File::Which; |
| 9 | use JSON::MaybeXS; |
| 10 | |
| 11 | die "No opengist\n" unless which 'opengist'; |
| 12 | die "No forgejo\n" unless which 'forgejo'; |
| 13 | |
| 14 | my $gversion = Perl::Version->new( substr `opengist version`, 9 ); |
| 15 | my $gurl = "https://api.github.com/repos/thomiceli/opengist/releases/latest"; |
| 16 | my $gh = REST::Client->new(); |
| 17 | $gh->GET( $gurl, { "accept" => "application/vnd.github+json" } ); |
| 18 | my $gcontent = decode_json $gh->responseContent(); |
| 19 | my $ngversion = Perl::Version->new( $gcontent->{'name'} ); |
| 20 | my $gdurl; |
| 21 | my $gname; |
| 22 | |
| 23 | if ( $gversion < $ngversion ) { |
| 24 | `systemctl stop opengist`; |
| 25 | my @assets = @{ $gcontent->{'assets'} }; |
| 26 | foreach my $assets (@assets) { |
| 27 | if ( $assets->{'name'} =~ /linux-amd64/ ) { |
| 28 | $gname = $assets->{'name'}; |
| 29 | $gdurl = $assets->{'browser_download_url'}; |
| 30 | } |
| 31 | } |
| 32 | print `aria2c $gdurl`; |
| 33 | print `tar xvf $gname`; |
| 34 | print `cp opengist/opengist /usr/local/bin/opengist -v`; |
| 35 | `systemctl restart opengist`; |
| 36 | print `rm -v $gname && rm -rvf opengist/`; |
| 37 | say "Updated opengist!"; |
| 38 | } |
| 39 | else { |
| 40 | say "No need update opengist!"; |
| 41 | } |
| 42 | |
| 43 | my @fout = split( / /, `forgejo -v` ); |
| 44 | my $fversion = substr $fout[5], 0, -1; |
| 45 | my $furl = "https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest"; |
| 46 | my $f = REST::Client->new(); |
| 47 | $f->GET( $furl, { "accept" => "application/json" } ); |
| 48 | my $fcontent = decode_json $f->responseContent(); |
| 49 | my $nfversion = Perl::Version->new( $fcontent->{'name'} ); |
| 50 | my $fdurl; |
| 51 | my $fname; |
| 52 | |
| 53 | if ( $fversion < $nfversion ) { |
| 54 | `systemctl stop forgejo`; |
| 55 | my @assets = @{ $gcontent->{'assets'} }; |
| 56 | foreach my $assets (@assets) { |
| 57 | if ( $assets->{'name'} =~ /linux-amd64$/ ) { |
| 58 | $fname = $assets->{'name'}; |
| 59 | $fdurl = $assets->{'browser_download_url'}; |
| 60 | } |
| 61 | } |
| 62 | print `aria2c $fdurl`; |
| 63 | print `chmod +x $fname -v`; |
| 64 | print `mv $fname /usr/local/bin/forgejo -v`; |
| 65 | `systemctl restart forgejo`; |
| 66 | say "Updated forgejo!"; |
| 67 | } |
| 68 | else { |
| 69 | say "No need update forgejo!"; |
| 70 | } |
| 71 |