| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // TODO(https://fxbug.dev/84961): Fix null safety and remove this language version. |
| // @dart=2.9 |
| |
| import 'dart:async'; |
| import 'dart:convert'; |
| import 'dart:io'; |
| |
| import 'collector.dart'; |
| |
| /// Receives a [ProcessResult] which contains information about Jiri overrides. |
| class JiriOverrideParser { |
| bool parse({ProcessResult processResult}) { |
| if (processResult.exitCode != 0) { |
| return false; |
| } |
| LineSplitter ls = LineSplitter(); |
| List<String> lines = ls.convert(processResult.stdout); |
| |
| return lines.isNotEmpty; |
| } |
| } |
| |
| /// Asks Jiri for a list of overrides. Intended to be paired with the |
| /// [JiriOverrideParser] class, which knows how to make sense of this result. |
| class JiriOverrideChecker { |
| Future<ProcessResult> checkStatus() async { |
| return Process.run('jiri', [ |
| 'override', |
| '-list', |
| ]); |
| } |
| } |
| |
| /// Confirms whether there are any Jiri overrides configured. |
| /// |
| /// Accepts optional [JiriOverrideChecker] and [JiriOverrideParser] helper |
| /// classes which respectively know how to make a Jiri system call and |
| /// make sense of those results. Not passing values leads to default |
| /// behavior, which is usually what you want. |
| class JiriCollector implements Collector { |
| @override |
| Future<List<Item>> collect({ |
| JiriOverrideChecker jiriOverrideChecker, |
| JiriOverrideParser jiriOverrideParser, |
| }) async { |
| // Create default values |
| jiriOverrideChecker ??= JiriOverrideChecker(); |
| jiriOverrideParser ??= JiriOverrideParser(); |
| |
| ProcessResult pr = await jiriOverrideChecker.checkStatus(); |
| bool jiriOverrides = jiriOverrideParser.parse(processResult: pr); |
| |
| return <Item>[ |
| Item( |
| CategoryType.sourceInfo, |
| 'has_jiri_overrides', |
| 'Has Jiri overrides?', |
| jiriOverrides, |
| 'output of \'jiri override -list\'', |
| ), |
| ]; |
| } |
| } |