forked from Mirror/pmbootstrap
See: https://gitlab.com/postmarketOS/pmbootstrap/-/issues/2324 Closes: https://gitlab.com/postmarketOS/pmbootstrap/-/merge_requests/2278
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
# Copyright 2024 Caleb Connolly
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
from __future__ import annotations
|
|
from typing import List
|
|
from pmb import commands
|
|
from pmb.types import PathString
|
|
from pmb.helpers import run
|
|
from pmb.core.context import get_context
|
|
import pmb.config
|
|
|
|
|
|
class Log(commands.Command):
|
|
clear_log: bool
|
|
lines: int
|
|
|
|
def __init__(self, clear_log: bool, lines: int):
|
|
self.clear_log = clear_log
|
|
self.lines = lines
|
|
|
|
def run(self):
|
|
context = get_context()
|
|
log_testsuite = pmb.config.pmb_src / ".pytest_tmp/log_testsuite.txt"
|
|
|
|
if self.clear_log:
|
|
run.user(["truncate", "-s", "0", context.log])
|
|
run.user(["truncate", "-s", "0", log_testsuite])
|
|
|
|
cmd: List[PathString] = ["tail", "-n", str(self.lines), "-F"]
|
|
|
|
# Follow the testsuite's log file too if it exists. It will be created when
|
|
# starting a test case that writes to it (git -C test grep log_testsuite).
|
|
if log_testsuite.exists():
|
|
cmd += [log_testsuite]
|
|
|
|
# tail writes the last lines of the files to the terminal. Put the regular
|
|
# log at the end, so that output is visible at the bottom (where the user
|
|
# looks for an error / what's currently going on).
|
|
cmd += [context.log]
|
|
|
|
run.user(cmd, output="tui")
|