Skip to content

Commit

Permalink
refactor!: remove --all flag from list command & show private packa…
Browse files Browse the repository at this point in the history
…ges by default (you can use the `--no-private` filter flag instead to hide private packages) (#275)
  • Loading branch information
cabljac authored Apr 12, 2022
1 parent b751119 commit 921ec4e
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 94 deletions.
8 changes: 0 additions & 8 deletions packages/melos/lib/src/command_runner/list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,6 @@ class ListCommand extends MelosCommand {
negatable: false,
help: 'Show extended information.',
);
argParser.addFlag(
'all',
abbr: 'a',
negatable: false,
help: 'Show private packages that are hidden by default.',
);
argParser.addFlag(
'parsable',
abbr: 'p',
Expand Down Expand Up @@ -80,7 +74,6 @@ class ListCommand extends MelosCommand {
@override
Future<void> run() async {
final long = argResults!['long'] as bool;
final all = argResults!['all'] as bool;
final parsable = argResults!['parsable'] as bool;
final json = argResults!['json'] as bool;
final relative = argResults!['relative'] as bool;
Expand All @@ -97,7 +90,6 @@ class ListCommand extends MelosCommand {
if (gviz) kind = ListOutputKind.gviz;

return melos.list(
showPrivatePackages: all,
long: long,
filter: parsePackageFilter(config.path),
relativePaths: relative,
Expand Down
21 changes: 2 additions & 19 deletions packages/melos/lib/src/commands/list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ enum ListOutputKind { json, parsable, graph, gviz, column }

mixin _ListMixin on _Melos {
Future<void> list({
bool showPrivatePackages = false,
bool long = false,
bool relativePaths = false,
PackageFilter? filter,
Expand All @@ -15,24 +14,21 @@ mixin _ListMixin on _Melos {

switch (kind) {
case ListOutputKind.graph:
return _listGraph(workspace, showPrivatePackages: showPrivatePackages);
return _listGraph(workspace);
case ListOutputKind.parsable:
return _listParsable(
workspace,
long: long,
relativePaths: relativePaths,
showPrivatePackages: showPrivatePackages,
);
case ListOutputKind.column:
return _listColumn(
workspace,
long: long,
showPrivatePackages: showPrivatePackages,
);
case ListOutputKind.json:
return _listJson(
workspace,
showPrivatePackages: showPrivatePackages,
relativePaths: relativePaths,
long: long,
);
Expand All @@ -41,15 +37,9 @@ mixin _ListMixin on _Melos {
}
}

void _listGraph(
MelosWorkspace workspace, {
required bool showPrivatePackages,
}) {
void _listGraph(MelosWorkspace workspace) {
final jsonGraph = <String, List<String>>{};
for (final package in workspace.filteredPackages.values) {
if (!showPrivatePackages && package.isPrivate) {
continue;
}
jsonGraph[package.name] = package.dependenciesInWorkspace.keys.toList();
}

Expand All @@ -59,7 +49,6 @@ mixin _ListMixin on _Melos {

void _listColumn(
MelosWorkspace workspace, {
required bool showPrivatePackages,
required bool long,
}) {
if (workspace.filteredPackages.values.isEmpty) {
Expand All @@ -80,7 +69,6 @@ mixin _ListMixin on _Melos {
if (long) {
final table = listAsPaddedTable(
workspace.filteredPackages.values
.where((package) => !package.isPrivate || showPrivatePackages)
.map(
(package) => [
package.name,
Expand All @@ -97,19 +85,16 @@ mixin _ListMixin on _Melos {
}

for (final package in workspace.filteredPackages.values) {
if (!showPrivatePackages && package.isPrivate) continue;
logger?.stdout(package.name);
}
}

void _listParsable(
MelosWorkspace workspace, {
required bool showPrivatePackages,
required bool relativePaths,
required bool long,
}) {
for (final package in workspace.filteredPackages.values) {
if (package.isPrivate && !showPrivatePackages) continue;
final packagePath =
relativePaths ? package.pathRelativeToWorkspace : package.path;
if (long) {
Expand All @@ -129,14 +114,12 @@ mixin _ListMixin on _Melos {

void _listJson(
MelosWorkspace workspace, {
required bool showPrivatePackages,
required bool relativePaths,
required bool long,
}) {
final jsonArrayItems = <Map<String, Object?>>[];

for (final package in workspace.filteredPackages.values) {
if (!showPrivatePackages && package.isPrivate) continue;
final packagePath =
relativePaths ? package.pathRelativeToWorkspace : package.path;

Expand Down
70 changes: 3 additions & 67 deletions packages/melos/test/commands/list_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ b
);

test(
'does not log private packages by default',
'logs private packages by default',
withMockFs(() async {
final workspaceDir = createMockWorkspaceFs(
packages: [
Expand All @@ -71,39 +71,6 @@ b
equalsIgnoringAnsii(
'''
a
''',
),
);
}),
);

test(
'log private packages if showPrivatePackages is true',
withMockFs(() async {
final workspaceDir = createMockWorkspaceFs(
packages: [
MockPackageFs(name: 'a', version: Version.none),
// b has no version, so it is considered private
MockPackageFs(name: 'b'),
// c has a version but publish_to:none so is private
MockPackageFs(
name: 'c',
version: Version.none,
publishToNone: true,
),
],
);

final config = await MelosWorkspaceConfig.fromDirectory(workspaceDir);
final melos = Melos(logger: logger, config: config);

await melos.list(showPrivatePackages: true);

expect(
logger.output,
equalsIgnoringAnsii(
'''
a
b
c
''',
Expand All @@ -127,8 +94,8 @@ c
final melos = Melos(logger: logger, config: config);

await melos.list(
showPrivatePackages: true,
filter: PackageFilter(
includePrivatePackages: true,
ignore: [
createGlob('b', currentDirectoryPath: workspaceDir.path),
],
Expand All @@ -148,7 +115,7 @@ c
);

test(
'supports long flag for extra informations',
'supports long flag for extra information',
withMockFs(() async {
final workspaceDir = createMockWorkspaceFs(
packages: [
Expand All @@ -162,7 +129,6 @@ c
final melos = Melos(logger: logger, config: config);

await melos.list(
showPrivatePackages: true,
long: true,
);

Expand All @@ -179,34 +145,6 @@ long_name 0.0.0 packages/long_name PRIVATE
}),
);

test(
'long flag hides private packages by default',
withMockFs(() async {
final workspaceDir = createMockWorkspaceFs(
packages: [
MockPackageFs(name: 'a', version: Version(1, 2, 3)),
MockPackageFs(name: 'b'),
MockPackageFs(name: 'c', version: Version.none),
],
);

final config = await MelosWorkspaceConfig.fromDirectory(workspaceDir);
final melos = Melos(logger: logger, config: config);

await melos.list(long: true);

expect(
logger.output,
equalsIgnoringAnsii(
'''
a 1.2.3 packages/a
c 0.0.0 packages/c
''',
),
);
}),
);

test(
'relativePaths flag prints relative paths only if true',
withMockFs(() async {
Expand All @@ -222,7 +160,6 @@ c 0.0.0 packages/c
final melos = Melos(logger: logger, config: config);
await melos.list(
kind: ListOutputKind.parsable,
showPrivatePackages: true,
relativePaths: true,
);

Expand Down Expand Up @@ -254,7 +191,6 @@ packages/c
final melos = Melos(logger: logger, config: config);
await melos.list(
kind: ListOutputKind.parsable,
showPrivatePackages: true,
);

expect(
Expand Down

0 comments on commit 921ec4e

Please sign in to comment.