最后活跃于 2 years ago

修订 84e35635e49dc2bd0ffe4c64899b32c7caed373f

CheckUpdate.pl 原始文件
1#!/usr/bin/perl
2use strict;
3use warnings;
4use v5.10;
5
6use REST::Client;
7use Perl::Version;
8use File::Which;
9use JSON::MaybeXS;
10
11die "No opengist\n" unless which 'opengist';
12die "No forgejo\n" unless which 'forgejo';
13
14my $gversion = Perl::Version->new( substr `opengist version`, 9 );
15my $gurl = "https://api.github.com/repos/thomiceli/opengist/releases/latest";
16my $gh = REST::Client->new();
17$gh->GET( $gurl, { "accept" => "application/vnd.github+json" } );
18my $gcontent = decode_json $gh->responseContent();
19my $ngversion = Perl::Version->new( $gcontent->{'name'} );
20my $gdurl;
21my $gname;
22
23if ( $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}
39else {
40 say "No need update opengist!";
41}
42
43my @fout = split( / /, `forgejo -v` );
44my $fversion = substr $fout[5], 0, -1;
45my $furl = "https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest";
46my $f = REST::Client->new();
47$f->GET( $furl, { "accept" => "application/json" } );
48my $fcontent = decode_json $f->responseContent();
49my $nfversion = Perl::Version->new( $fcontent->{'name'} );
50my $fdurl;
51my $fname;
52
53if ( $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}
68else {
69 say "No need update forgejo!";
70}
71