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