#!/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 $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/"; # where your server stores its mods sub chk_update () { print "Checking for updates...\n"; 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); 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 -maxdepth 1 -type d -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 $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); $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'); chk_update(); }else{ get_ready(); # chk_update expects a hash retrived from storables so program needs to be run again after this #chk_update(); }