from invoke import task
-import os
+import datetime
+import os
home = os.path.expanduser('~')
+flat_pak_root = f"{home}/.var/app/net.minetest.Minetest"
+root = f"{flat_pak_root}/.minetest"
+mod_dir = f"{root}/mods"
easy_dir = f"{home}/minetest/"
-link_to = f"{home}/.var/app/net.minetest.Minetest/.minetest/" # flatpak
-# link_to = f"{home}/.minetest/" # default
+run_mt = f"flatpak run net.minetest.Minetest"
+
+# flatpak
+link_to = f"{home}/.var/app/net.minetest.Minetest/.minetest"
+# default
+# link_to = f"{home}/.minetest/"
@task
def debug(c):
c.run(f"mv {dir}/* {world_folder}")
print("Finished")
-@task
+# DONT - flatpak hates symlinks
def link(c):
+ # c.run(f"ls -al {link_to}")
if os.path.isdir(link_to):
print("Moving existing files...")
c.run(f"mv {link_to} {easy_dir}")
+ if not os.path.isdir(easy_dir):
+ raise ValueError(f"{easy_dir} not found.")
+ if os.path.exists(link_to):
+ print(f"Doing nothing. {link_to} exists.")
if os.path.isdir(easy_dir) and not os.path.exists(link_to):
print("Linking...")
- c.run("ln -s {easy_dir} {link_to}")
+ c.run(f"ln -s {easy_dir} {link_to}")
+ # c.run(f"ls -al {link_to}")
@task
def status(c):
- print(f"Minetest data is at {link_to}")
- c.run(f"ls -al {link_to}/..")
+ print(f"+ Minetest data assumed to be at {link_to}")
+ print(f"+ Easy folder assumed to be {easy_dir}")
+ print(f"+ ls ---")
+ c.run(f"ls -ald {link_to} | grep minetest")
+
+
+@task
+def games(c):
+ print(f"+ List Games ---")
+ cmd = f"{run_mt} --gameid list"
+ c.run(cmd)
+
+@task
+def play(c):
+ c.run(f"{run_mt}")
+
+@task
+def worlds(c):
+ print(f"+ List Worlds ---")
+ cmd = f"{run_mt} --gameid minetest --worldlist path"
+ c.run(cmd)
+
+
+@task
+def version(c):
+ cmd = f"{run_mt} --version"
+ c.run(cmd)
+
+@task
+def serve(c, world="SurfaceWorld"):
+ cmd = f"{run_mt} --gameid minetest --server --worldname {world}"
+ c.run(cmd)
+
+@task
+def bkmod(c, name=None):
+ '''Save the current set of mods and create an empty mod directory.'''
+ if not name:
+ name = datetime.datetime.now().strftime("%Y%h%d%H%M")
+ c.run(f"mv {mod_dir} {root}/mods_{name}")
+ c.run(f"mkdir -p {mod_dir}")
+ c.run(f"ls {root}")
+
+@task
+def rmod(c, name):
+ '''Restore a backed up set of mods.'''
+ if len(os.listdir(f"{mod_dir}")) != 0:
+ bk = datetime.datetime.now().strftime("%Y%h%d%H%M")
+ print(f"Backed up non-emtpy mod dir to mods_{bk}.")
+ c.run(f"mv {mod_dir} {root}/mods_{bk}")
+ else:
+ print("Removing empty mod dir.")
+ c.run(f"rmdir {mod_dir}")
+ c.run(f"mv {root}/mods_{name} {mod_dir}")
+ c.run(f"ls {root}")
+
+@task
+def logs(c, lines=20):
+ '''Output some logs'''
+ c.run(f"tail -n {lines} {root}/debug.txt")
+