#!/usr/bin/env python3 import aurornis import re from os import environ from typing import Union DEFAULT_ENVIRONMENT = {"PATH": environ["PATH"]} KOSMORRO = ["kosmorro", "--no-color"] CURRENT_MOON_PHASE_PATTERN = re.compile( r"^Moon phase: (" r"(New Moon)|(Waxing Crescent)|" r"(First Quarter)|(Waxing Gibbous)|" r"(Full Moon)|(Waning Gibbous)|" r"(Last Quarter)|(Waning Crescent)" r")$" ) NEXT_MOON_PHASE_PATTERN = re.compile( r"^((New Moon)|(Waxing Crescent)|" r"(First Quarter)|(Waxing Gibbous)|" r"(Full Moon)|(Waning Gibbous)|" r"(Last Quarter)|(Waning Crescent)) " r"on ((Monday)|(Tuesday)|(Wednesday)|(Thursday)|(Friday)|(Saturday)|(Sunday)), " r"((January)|(February)|(March)|(April)|(May)|(June)|" r"(July)|(August)|(September)|(October)|(November)|(December)) " r"[0-9]{1,2}, [0-9]{4} at [0-9]{1,2}:[0-9]{2} [AP]M$" ) def execute( command, environment: {str: Union[int, str]} = None ) -> aurornis.CommandResult: if environment is None: environment = DEFAULT_ENVIRONMENT else: for variable in DEFAULT_ENVIRONMENT: environment[variable] = DEFAULT_ENVIRONMENT[variable] return aurornis.run(command, environment) def assert_nb_lines(expected_nb: int, in_str: str): """Check that the string has the specified number of lines and that the last one is empty.""" lines = in_str.split("\n") assert len(lines) == expected_nb assert lines[len(lines) - 1] == ""