dotfiles/test.py
2025-09-29 04:21:01 +03:00

55 lines
1.4 KiB
Python

#!/usr/bin/env python3
import argparse
import json
import os
import platform
import re
import shutil
import subprocess
import sys
import time
import urllib.request
from dataclasses import dataclass, field
from pathlib import Path
from typing import Any, Dict, List, Optional, Union
import yaml
def main():
try:
# Use Popen for real-time output
process = subprocess.Popen(
command,
shell=shell,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True,
bufsize=1,
)
# Stream output in real-time
output_lines = []
for line in process.stdout:
line = line.rstrip()
if line: # Only show non-empty lines
self.console.step_output(line)
output_lines.append(line)
process.wait()
if check and process.returncode != 0:
raise subprocess.CalledProcessError(process.returncode, command, output="\n".join(output_lines))
# Create a mock CompletedProcess for compatibility
result = subprocess.CompletedProcess(command, process.returncode, stdout="\n".join(output_lines), stderr="")
return result
except subprocess.CalledProcessError as e:
raise RuntimeError(f"Command failed: {command}\nExit code: {e.returncode}")
if __name__ == "__main__":
main()