blob: 4b038548ecf847fb62c7494da8ba80983c666535 [file] [edit]
# Copyright (c) 2026 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from abc import ABC, abstractmethod
class Runner(ABC):
"""Generic runner base class."""
@abstractmethod
def StartCommandExecution(self):
"""Perform any setup needed before executing commands."""
raise NotImplementedError
@abstractmethod
def Run(self, cmd: list[str], title: str | None = None, dedup: bool = False, quiet: bool = False):
"""Execute the given command.
Args:
cmd: the command to execute, as a list of strings (e.g. ['ninja', '-C', 'out/'])
title: an optional title to log before executing the command
dedup: whether to attempt to deduplicate this command with previous ones (if supported by the runner)
quiet: whether to suppress logging output from this command (if supported by the runner)
"""
raise NotImplementedError