#!/usr/bin/perl # This was a bash script until I determined the level of invoking the ancient gods of the console required to make # that work would be just too much use Storable; use Data::Dumper; # I know declaring a empty hash is 100% unnessecary but I am anyway %conf = {}; # this will be stored used to keep track of stuff %conf2 = {}; $updfile = "index.json"; # I could use JSON here, but it might be easier to abuse jq $updlsturl = "https://content.minetest.net/api/packages/"; # give use a json file of everything available $modpath = "/home/kake26/.var/app/net.minetest.Minetest/.minetest/mods/"; sub chk_update () { print "Checking for updates...\n"; #print Dumper($conf); foreach my $key (keys %{ $conf->{"mods"}}) { # the fing arrow -> sigh could have saved so much time print "Checking mod $key \n"; # So we can now check against index2.json $author2 = `jq -c '.[] | select(.name =="$key") | .author' index2.json`; $author2 =~ s/\"//g; $release2 = `jq -c '.[] | select(.name =="$key") | .release' index2.json`; $release2 =~ s/\"//g; chomp($author2); chomp($release2); #print "Current release $release2 author $author2 installed ". $conf->{"mods"}{$key}{"release"} ." \n"; if ($conf->{"mods"}{$key}{"release"} != $release2) { print "Mod $key current release: " . $release2 . " installed: " . $conf{"mods"}{$key}{"release"} ."!\n"; }else{ print "Mod $key up to date\n"; } } } sub get_ready (){ $mods = `find $modpath -type d -maxdepth 1 -print`; # -print is there for a reason, find saved a huge amount of time @mods = split("\n",$mods); foreach(@mods){ @tmods = split("\/",$_); $tmname = pop(@tmods); if ($tmname eq "mods"){ next; } # At this point we should have a mod's name #print "Mod name $tmname\n"; $author = `jq -c '.[] | select(.name =="$tmname") | .author' index.json`; #jq is a time saver $author =~ s/\"//g; chomp($author); $release = `jq -c '.[] | select(.name =="$tmname") | .release' index.json`; $release =~ s/\"//g; chomp($release); #print "$author\n"; $conf{"mods"}{$tmname}{"author"} = $author; $conf{"mods"}{$tmname}{"release"} = $release; } store \%conf, 'mods'; return; } sub get_file () { # get the system("wget -O index2.json $updlsturl"); return; } sub do_update () { } if (-e "mods"){ # load data print "Loading data\n"; $conf = retrieve('mods'); #print "Saved...\n"; #print Dumper($conf2); #print "Freash...\n"; #get_ready(); #print Dumper($conf); chk_update(); }else{ get_ready(); chk_update(); } #get_ready();