eoptasks: add moonlight progress indicator

(this keeps a window always open, so hacks to handle final serial
processes are removed)
This commit is contained in:
Frédéric Péters 2018-12-21 15:15:34 +01:00
parent 5bc48833dd
commit 1f70d4830c
1 changed files with 16 additions and 7 deletions

View File

@ -116,9 +116,11 @@ cmd = {
}.get(args.cmd, args.cmd)
tmux_session_name = 's%s' % random.randrange(1000)
os.system('tmux new-session -s %s -d /bin/bash -c "sleep 2"' % tmux_session_name)
os.system('tmux new-session -s %s -n 🌑 -d /bin/bash -c "sleep 2h"' % tmux_session_name)
tmux = libtmux.Server()
session = tmux.find_where({'session_name': tmux_session_name})
status_window = session.attached_window
status_window.attached_pane.send_keys('eoptasks\n ', enter=False)
pid = os.fork()
if pid:
@ -128,6 +130,7 @@ else:
return re.match(r'(.*?)(\d*)$', server_name).group(1).replace(
'.rbx.', '.loc.').replace('.gra.', '.loc.').replace('.sbg.', '.loc.')
total_number = len(selected_servers)
random.shuffle(selected_servers)
while selected_servers:
current_clusters = [cluster_name(x.name) for x in session.list_windows()]
@ -142,11 +145,17 @@ else:
break
else:
time.sleep(0.1)
if len(session.list_windows()) == 1:
# a single window remains but there are still unparallelizable
# servers to process, create temporary tmux window to avoid tmux
# being destroyed as the last window process is over.
session.new_window(attach=False, window_name='sleep',
window_shell='/bin/bash -c "sleep 2"')
while len(session.list_windows()) > 5:
time.sleep(0.1)
percentage = len(selected_servers) / total_number
if percentage == 1:
status_window.rename_window('🌕')
elif percentage >= 0.75:
status_window.rename_window('🌔')
elif percentage >= 0.5:
status_window.rename_window('🌓')
elif percentage >= 0.25:
status_window.rename_window('🌒')
while len(session.list_windows()) > 1:
time.sleep(0.1)
status_window.kill_window()