#!/usr/bin/env python3
import signal
import subprocess

signal.signal(signal.SIGINT, signal.SIG_DFL)
signal.signal(signal.SIGTERM, signal.SIG_DFL)

from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
from openpilot.selfdrive.ui.qt.python_helpers import set_main_window

class Window(QWidget):
  def __init__(self, parent=None):
    super(Window, self).__init__(parent)

    layout = QVBoxLayout()
    self.setLayout(layout)

    self.l = QLabel("jenkins runner")
    layout.addWidget(self.l)
    layout.addStretch(1)
    layout.setContentsMargins(20, 20, 20, 20)

    cmds = [
      "cat /etc/hostname",
      "echo AGNOS v$(cat /VERSION)",
      "uptime -p",
    ]
    self.labels = {}
    for c in cmds:
      self.labels[c] = QLabel(c)
      layout.addWidget(self.labels[c])

    self.setStyleSheet("""
      * {
        color: white;
        font-size: 55px;
        background-color: black;
        font-family: "JetBrains Mono";
      }
    """)

    self.timer = QTimer()
    self.timer.timeout.connect(self.update)
    self.timer.start(10 * 1000)
    self.update()

  def update(self):
    for cmd, label in self.labels.items():
      out = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                           shell=True, check=False, encoding='utf8').stdout
      label.setText(out.strip())

if __name__ == "__main__":
  app = QApplication([])
  w = Window()
  set_main_window(w)
  app.exec_()
