Working code
These files update.pl, server.bash and builstable.bash are working scripts that are actively used by me. Therefore, I feel they are ready to be added here.
This commit is contained in:
parent
db76f525d7
commit
bf4e7fc555
3 changed files with 145 additions and 0 deletions
17
buildstable.bash
Normal file
17
buildstable.bash
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# wget https://github.com/minetest/minetest/archive/master.tar.gz
|
||||||
|
wget https://github.com/minetest/minetest/archive/refs/tags/5.6.1.tar.gz
|
||||||
|
tar xf 5.6.1.tar.gz
|
||||||
|
cd minetest-5.6.1
|
||||||
|
cd games/
|
||||||
|
wget https://github.com/minetest/minetest_game/archive/master.tar.gz
|
||||||
|
tar xf master.tar.gz
|
||||||
|
mv minetest_game-master minetest_game
|
||||||
|
cd ..
|
||||||
|
cd lib/
|
||||||
|
wget https://github.com/minetest/irrlicht/archive/master.tar.gz
|
||||||
|
tar xf master.tar.gz
|
||||||
|
mv irrlicht-master irrlichtmt
|
||||||
|
cd ..
|
||||||
|
cmake . -DRUN_IN_PLACE=TRUE -DBUILD_SERVER=TRUE -DBUILD_CLIENT=FALSE
|
||||||
|
make -j$(nproc)
|
29
server.bash
Normal file
29
server.bash
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# script to start and stop minetest server
|
||||||
|
|
||||||
|
|
||||||
|
if [[ $1 == "start" ]]
|
||||||
|
then
|
||||||
|
echo "STARTING"
|
||||||
|
/home/kake26/minetest-5.6.1/bin/minetestserver --quiet --logfile /home/kake26/minetest/minetest.log --config /home/kake26/minetest/conf/minetest.conf --world /home/kake26/minetest/minetest-server/.minetest/worlds/world2/ &
|
||||||
|
pid=$!
|
||||||
|
echo $pid > /home/kake26/minetest/mintest.pid
|
||||||
|
fi
|
||||||
|
|
||||||
|
if pidof minetestserver
|
||||||
|
then
|
||||||
|
# Horribly cheap but works
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
# Seriously why not
|
||||||
|
/home/kake26/minetest-5.6.1/bin/minetestserver --quiet --logfile /home/kake26/minetest/minetest.log --config /home/kake26/minetest/conf/minetest.conf --world /home/kake26/minetest/minetest-server/.minetest/worlds/world2/ &
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $1 == "stop" ]]
|
||||||
|
then
|
||||||
|
echo "STOPING"
|
||||||
|
$(pidof minetestserver | xargs kill -s INT)
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
|
99
update.pl
Normal file
99
update.pl
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/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/.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";
|
||||||
|
# we should trigger the updater here
|
||||||
|
|
||||||
|
&do_update($key,$release2,$author2);
|
||||||
|
}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
|
||||||
|
$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 ($mod,$ver,$author) {
|
||||||
|
# https://content.minetest.net/packages/TenPlus1/mob_horse/download/
|
||||||
|
# https://content.minetest.net/packages/jp/i3/releases/14157/download/
|
||||||
|
$mod = $_[0];
|
||||||
|
$ver = $_[1];
|
||||||
|
$author = $_[2];
|
||||||
|
|
||||||
|
system("wget -O $mod.zip https://content.minetest.net/packages/$author/$mod/releases/$ver/download/");
|
||||||
|
system("unzip -o $mod.zip");
|
||||||
|
# print "Update info $mod $ver $author\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Maybe get ready and check update should be called every time
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue