from os import listdir from os.path import isfile, join import gradio as gr import pipe from io_utils import get_logs_file LOG_PATH = "./tmp" CONFIG_PATH = "./cicd/configs/" MAX_FILES_NUM = 20 def get_accordions_of_files(path, files): components = [None for _ in range (0, MAX_FILES_NUM)] for i in range(0, len(files)): if i >= MAX_FILES_NUM: break with open(join(path, files[i]), "r") as f: components[i] = f.read() return components def get_accordions_of_log_files(): log_files = [ f for f in listdir(LOG_PATH) if isfile(join(LOG_PATH, f)) and f.endswith("_log") ] return get_accordions_of_files(LOG_PATH, log_files) def get_accordions_of_config_files(): config_files = [ f for f in listdir(CONFIG_PATH) if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml") ] return get_accordions_of_files(CONFIG_PATH, config_files) def get_config_files(): config_files = [join(CONFIG_PATH, f) for f in listdir(CONFIG_PATH) if isfile(join(CONFIG_PATH, f)) and f.endswith(".yaml")] return config_files def get_demo(demo): with gr.Row(): # check if jobs is an attribute of pipe if hasattr(pipe, "jobs"): gr.Markdown(f"current jobs in queue: {len(pipe.jobs)}") with gr.Accordion(label="Log Files", open=False): logs = gr.Textbox(lines=10, visible=True, label="Log File") demo.load(get_logs_file, None, logs, every=0.5) with gr.Accordion(label="Config Files", open=False): gr.Files(value=get_config_files, label="Config Files", every=10)