]> us-delaporte.pagekite.me Git - dotfiles.git/blob - invoke/minetest/tasks.py
Fixup rmod
[dotfiles.git] / invoke / minetest / tasks.py
1 from invoke import task
2
3 import datetime
4 import os
5
6 home = os.path.expanduser('~')
7 flat_pak_root = f"{home}/.var/app/net.minetest.Minetest"
8 root = f"{flat_pak_root}/.minetest"
9 mod_dir = f"{root}/mods"
10 easy_dir = f"{home}/minetest/"
11 run_mt = f"flatpak run net.minetest.Minetest"
12
13 # flatpak
14 link_to = f"{home}/.var/app/net.minetest.Minetest/.minetest"
15 # default
16 # link_to = f"{home}/.minetest/"
17
18 @task
19 def debug(c):
20 result = c.run('which minetest')
21 print(result.ok)
22
23 @task
24 def install(c):
25 print("Installing...")
26 # result = c.run('which minetest')
27 # if not(result.ok):
28 c.run("sudo apt install flatpak")
29 c.run("sudo apt install gnome-software-plugin-flatpak")
30 c.run("flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo")
31 c.run("flatpak install flathub net.minetest.Minetest -y")
32 result = c.run('which minetest')
33 print(f"MineTest installed at {result.stdout}")
34 print("To run: flatpak run net.minetest.Minetest")
35
36 @task
37 def restore(c, dir):
38 if not os.path.isdir(dir):
39 print(f"No backups found at {dir}")
40 return
41 print(f"Will restore MineTest backup from {dir}")
42
43 world_folder = f"{home}/minetest/worlds"
44 c.run(f"mkdir -p {world_folder}")
45 print("Restoring backed up worlds...")
46 c.run(f"mv {dir}/* {world_folder}")
47 print("Finished")
48
49 # DONT - flatpak hates symlinks
50 def link(c):
51 # c.run(f"ls -al {link_to}")
52 if os.path.isdir(link_to):
53 print("Moving existing files...")
54 c.run(f"mv {link_to} {easy_dir}")
55 if not os.path.isdir(easy_dir):
56 raise ValueError(f"{easy_dir} not found.")
57 if os.path.exists(link_to):
58 print(f"Doing nothing. {link_to} exists.")
59 if os.path.isdir(easy_dir) and not os.path.exists(link_to):
60 print("Linking...")
61 c.run(f"ln -s {easy_dir} {link_to}")
62 # c.run(f"ls -al {link_to}")
63
64 @task
65 def status(c):
66 print(f"+ Minetest data assumed to be at {link_to}")
67 print(f"+ Easy folder assumed to be {easy_dir}")
68 print(f"+ ls ---")
69 c.run(f"ls -ald {link_to} | grep minetest")
70
71
72 @task
73 def games(c):
74 print(f"+ List Games ---")
75 cmd = f"{run_mt} --gameid list"
76 c.run(cmd)
77
78 @task
79 def play(c):
80 c.run(f"{run_mt}")
81
82 @task
83 def worlds(c):
84 print(f"+ List Worlds ---")
85 cmd = f"{run_mt} --gameid minetest --worldlist path"
86 c.run(cmd)
87
88
89 @task
90 def version(c):
91 cmd = f"{run_mt} --version"
92 c.run(cmd)
93
94 @task
95 def serve(c, world="SurfaceWorld"):
96 cmd = f"{run_mt} --gameid minetest --server --worldname {world}"
97 c.run(cmd)
98
99 @task
100 def bkmod(c, name=None):
101 '''Save the current set of mods and create an empty mod directory.'''
102 if not name:
103 name = datetime.datetime.now().strftime("%Y%h%d%H%M")
104 c.run(f"mv {mod_dir} {root}/mods_{name}")
105 c.run(f"mkdir -p {mod_dir}")
106 c.run(f"ls {root}")
107
108 @task
109 def rmod(c, name):
110 '''Restore a backed up set of mods.'''
111 if len(os.listdir(f"{mod_dir}")) != 0:
112 bk = datetime.datetime.now().strftime("%Y%h%d%H%M")
113 print(f"Backed up non-emtpy mod dir to mods_{bk}.")
114 c.run(f"mv {mod_dir} {root}/mods_{bk}")
115 else:
116 print("Removing empty mod dir.")
117 c.run(f"mkdir -p {mod_dir}")
118 c.run(f"mv {root}/mods_{name}/* {mod_dir}/")
119 print(f"mods_{name} restored to mods")
120 print("ls of root")
121 c.run(f"ls {root}")
122 print("ls of mods")
123 c.run(f"ls {root}/mods")
124
125 @task
126 def listmods(c):
127 print("ls of mods")
128 c.run(f"ls {root}/mods/")
129
130 @task
131 def logs(c, lines=20):
132 '''Output some logs'''
133 c.run(f"tail -n {lines} {root}/debug.txt")
134
135