Use local variable for buffer (#3826)
diff --git a/lib/src/command/deps.dart b/lib/src/command/deps.dart
index 1a42671..fff66ab 100644
--- a/lib/src/command/deps.dart
+++ b/lib/src/command/deps.dart
@@ -30,10 +30,6 @@
@override
bool get takesArguments => false;
- /// The [StringBuffer] used to accumulate the output.
- // TODO(sigurdm): use a local variable for this.
- final _buffer = StringBuffer();
-
/// Whether to include dev dependencies.
bool get _includeDev => argResults['dev'];
@@ -76,7 +72,7 @@
Future<void> runProtected() async {
// Explicitly Run this in the directorycase we don't access `entrypoint.packageGraph`.
entrypoint.assertUpToDate();
- _buffer.clear();
+ final buffer = StringBuffer();
if (argResults['json']) {
if (argResults.wasParsed('dev')) {
@@ -137,7 +133,7 @@
)
];
- _buffer.writeln(
+ buffer.writeln(
JsonEncoder.withIndent(' ').convert(
{
'root': entrypoint.root.name,
@@ -153,30 +149,30 @@
);
} else {
if (argResults['executables']) {
- _outputExecutables();
+ _outputExecutables(buffer);
} else {
for (var sdk in sdks.values) {
if (!sdk.isAvailable) continue;
- _buffer.writeln("${log.bold('${sdk.name} SDK')} ${sdk.version}");
+ buffer.writeln("${log.bold('${sdk.name} SDK')} ${sdk.version}");
}
- _buffer.writeln(_labelPackage(entrypoint.root));
+ buffer.writeln(_labelPackage(entrypoint.root));
switch (argResults['style']) {
case 'compact':
- _outputCompact();
+ _outputCompact(buffer);
break;
case 'list':
- _outputList();
+ _outputList(buffer);
break;
case 'tree':
- _outputTree();
+ _outputTree(buffer);
break;
}
}
}
- log.message(_buffer);
+ log.message(buffer);
}
/// Outputs a list of all of the package's immediate, dev, override, and
@@ -185,37 +181,48 @@
/// For each dependency listed, *that* package's immediate dependencies are
/// shown. Unlike [_outputList], this prints all of these dependencies on one
/// line.
- void _outputCompact() {
+ void _outputCompact(
+ StringBuffer buffer,
+ ) {
var root = entrypoint.root;
- _outputCompactPackages('dependencies', root.dependencies.keys);
+ _outputCompactPackages('dependencies', root.dependencies.keys, buffer);
if (_includeDev) {
- _outputCompactPackages('dev dependencies', root.devDependencies.keys);
+ _outputCompactPackages(
+ 'dev dependencies',
+ root.devDependencies.keys,
+ buffer,
+ );
}
_outputCompactPackages(
'dependency overrides',
root.dependencyOverrides.keys,
+ buffer,
);
var transitive = _getTransitiveDependencies();
- _outputCompactPackages('transitive dependencies', transitive);
+ _outputCompactPackages('transitive dependencies', transitive, buffer);
}
/// Outputs one section of packages in the compact output.
- void _outputCompactPackages(String section, Iterable<String> names) {
+ void _outputCompactPackages(
+ String section,
+ Iterable<String> names,
+ StringBuffer buffer,
+ ) {
if (names.isEmpty) return;
- _buffer.writeln();
- _buffer.writeln('$section:');
+ buffer.writeln();
+ buffer.writeln('$section:');
for (var name in ordered(names)) {
var package = _getPackage(name);
- _buffer.write('- ${_labelPackage(package)}');
+ buffer.write('- ${_labelPackage(package)}');
if (package.dependencies.isEmpty) {
- _buffer.writeln();
+ buffer.writeln();
} else {
var depNames = package.dependencies.keys;
var depsList = "[${depNames.join(' ')}]";
- _buffer.writeln(' ${log.gray(depsList)}');
+ buffer.writeln(' ${log.gray(depsList)}');
}
}
}
@@ -225,34 +232,41 @@
///
/// For each dependency listed, *that* package's immediate dependencies are
/// shown.
- void _outputList() {
+ void _outputList(StringBuffer buffer) {
var root = entrypoint.root;
- _outputListSection('dependencies', root.dependencies.keys);
+ _outputListSection('dependencies', root.dependencies.keys, buffer);
if (_includeDev) {
- _outputListSection('dev dependencies', root.devDependencies.keys);
+ _outputListSection('dev dependencies', root.devDependencies.keys, buffer);
}
- _outputListSection('dependency overrides', root.dependencyOverrides.keys);
+ _outputListSection(
+ 'dependency overrides',
+ root.dependencyOverrides.keys,
+ buffer,
+ );
var transitive = _getTransitiveDependencies();
if (transitive.isEmpty) return;
- _outputListSection('transitive dependencies', ordered(transitive));
+ _outputListSection('transitive dependencies', ordered(transitive), buffer);
}
/// Outputs one section of packages in the list output.
- void _outputListSection(String name, Iterable<String> deps) {
+ void _outputListSection(
+ String name,
+ Iterable<String> deps,
+ StringBuffer buffer,
+ ) {
if (deps.isEmpty) return;
- _buffer.writeln();
- _buffer.writeln('$name:');
+ buffer.writeln();
+ buffer.writeln('$name:');
for (var name in deps) {
var package = _getPackage(name);
- _buffer.writeln('- ${_labelPackage(package)}');
+ buffer.writeln('- ${_labelPackage(package)}');
for (var dep in package.dependencies.values) {
- _buffer
- .writeln(' - ${log.bold(dep.name)} ${log.gray(dep.constraint)}');
+ buffer.writeln(' - ${log.bold(dep.name)} ${log.gray(dep.constraint)}');
}
}
}
@@ -263,7 +277,9 @@
/// dependency), later ones are not traversed. This is done in breadth-first
/// fashion so that a package will always be expanded at the shallowest
/// depth that it appears at.
- void _outputTree() {
+ void _outputTree(
+ StringBuffer buffer,
+ ) {
// The work list for the breadth-first traversal. It contains the package
// being added to the tree, and the parent map that will receive that
// package.
@@ -303,7 +319,7 @@
}
}
- _buffer.write(tree.fromMap(packageTree));
+ buffer.write(tree.fromMap(packageTree));
}
String _labelPackage(Package package) =>
@@ -347,7 +363,7 @@
}
/// Outputs all executables reachable from [entrypoint].
- void _outputExecutables() {
+ void _outputExecutables(StringBuffer buffer) {
var packages = [
entrypoint.root,
...(_includeDev
@@ -360,7 +376,7 @@
for (var package in packages) {
var executables = package.executableNames;
if (executables.isNotEmpty) {
- _buffer.writeln(_formatExecutables(package.name, executables.toList()));
+ buffer.writeln(_formatExecutables(package.name, executables.toList()));
}
}
}