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