#!/usr/bin/perl use LWP; use LWP::UserAgent; use HTTP::Request; open(STEAMINF, "<", $ARGV[0]); my $appid = 0; my $version = ""; while () { if ($_ =~ /^(?:Patch)?Version\s*=\s*([0-9\.]+)/) { $version = $1; } elsif ($_ =~ /appID\s*=\s*([0-9]+)/) { $appid = $1; } } close STEAMINF; if ($appid == 0 || $version eq "") { print "Failed to parse steam.inf\n"; exit 2; } my $request = new HTTP::Request( 'GET', sprintf("http://api.steampowered.com/ISteamApps/UpToDateCheck/v0001/?appid=%d&version=%s&format=xml", $appid, $version ) ); my $ua = new LWP::UserAgent; my $response = $ua->request($request); if (!$response->is_success()) { printf("Bad response code: %d\n", $response->code()); exit 3; } $version =~ s/\.//g; if ($response->content() =~ /\s*false\s*<\/up_to_date>/) { printf("We are outdated (v%s)\n", $version); if ($response->content() =~ /\s*([0-9\.]+)\s*<\/required_version>/) { my $newversion = $1; printf("Latest is v%s\n", $newversion); open(my $f, ">", $ARGV[0].".new"); print $f $newversion; } exit 0; } else { printf("We are up to date (v%s)\n", $version); exit 1; }