def run(self) -> None:
    'Run all the builds in serial and capture pass/fail for each.'
    print('\x1bc', end='')
    print(pw_cli.branding.banner())
    print(_COLOR.green('  Watching for changes. Ctrl-C to exit; enter to rebuild'))
    print()
    _LOG.info('Change detected: %s', self.matching_path)
    self.builds_succeeded = []
    num_builds = len(self.build_commands)
    _LOG.info('Starting build with %d directories', num_builds)
    env = os.environ.copy()
    env['PW_USE_COLOR'] = '1'
    for (i, cmd) in enumerate(self.build_commands, 1):
        _LOG.info('[%d/%d] Starting build: %s', i, num_builds, cmd)
        print()
        self._current_build = subprocess.Popen(['ninja', '-C', *cmd.args()], env=env)
        returncode = self._current_build.wait()
        print()
        build_ok = (returncode == 0)
        if build_ok:
            level = logging.INFO
            tag = '(OK)'
        else:
            level = logging.ERROR
            tag = '(FAIL)'
        _LOG.log(level, '[%d/%d] Finished build: %s %s', i, num_builds, cmd, tag)
        self.builds_succeeded.append(build_ok)
Run all the builds in serial and capture pass/fail for each.
def run(self) -> None:
    
    print('\x1bc', end=)
    print(pw_cli.branding.banner())
    print(_COLOR.green('  Watching for changes. Ctrl-C to exit; enter to rebuild'))
    print()
    _LOG.info('Change detected: %s', self.matching_path)
    self.builds_succeeded = []
    num_builds = len(self.build_commands)
    _LOG.info('Starting build with %d directories', num_builds)
    env = os.environ.copy()
    env['PW_USE_COLOR'] = '1'
    for (i, cmd) in enumerate(self.build_commands, 1):
        _LOG.info('[%d/%d] Starting build: %s', i, num_builds, cmd)
        print()
        self._current_build = subprocess.Popen(['ninja', '-C', *cmd.args()], env=env)
        returncode = self._current_build.wait()
        print()
        build_ok = (returncode == 0)
        if build_ok:
            level = logging.INFO
            tag = '(OK)'
        else:
            level = logging.ERROR
            tag = '(FAIL)'
        _LOG.log(level, '[%d/%d] Finished build: %s %s', i, num_builds, cmd, tag)
        self.builds_succeeded.append(build_ok)