Skip to content

Commit

Permalink
expose pub global list
Browse files Browse the repository at this point in the history
  • Loading branch information
devoncarew committed Mar 24, 2015
1 parent 1509eba commit 4abf120
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 8 deletions.
42 changes: 42 additions & 0 deletions lib/grinder_tools.dart
Expand Up @@ -254,21 +254,63 @@ class Pub {
}
}

/// Access the `pub global` commands.
class PubGlobal {
PubGlobal._();

/// Install a new Dart application.
void activate(GrinderContext context, String package) {
runProcess(context, _execName('pub'),
arguments: ['global', 'activate', package]);
}

/// Run the given installed Dart application.
void run(GrinderContext context, String package,
{List<String> arguments, String workingDirectory}) {
List args = ['global', 'run', package];
if (arguments != null) args.addAll(arguments);
runProcess(context, _execName('pub'), arguments: args,
workingDirectory: workingDirectory);
}

/// Return the list of installed applications.
List<PubApp> list() {
//dart_coveralls 0.1.8
//den 0.1.3
//discoveryapis_generator 0.6.1
//...

ProcessResult result = Process.runSync(_execName('pub'), ['global', 'list']);
if (result.exitCode != 0) {
throw new GrinderException(
"pub global list failed with a return code of ${result.exitCode}");
}

List<String> lines = result.stdout.trim().split('\n');
return lines.map((line) {
line = line.trim();
if (line.indexOf(' ') != -1) {
List l = line.split(' ');
return new PubApp(l[0], l[1]);
} else {
return new PubApp(line);
}
}).toList();
}

/// Returns whether the given Dart application is installed.
bool isInstalled(String packageName) {
return list().any((PubApp app) => app.name == packageName);
}
}

class PubApp {
final String name;
final String version;

PubApp(this.name, [this.version]);

String toString() => '${name} ${version}';
}

/**
Expand Down
24 changes: 19 additions & 5 deletions test/grinder_tools_test.dart
Expand Up @@ -28,21 +28,35 @@ main() {
expect(dartVM, isNotNull);
});

test('pub version', () {
test('dart2js version', () {
MockGrinderContext context = new MockGrinderContext();
Dart2js.version(context);
expect(context.isFailed, false);
});

test('analyzer version', () {
MockGrinderContext context = new MockGrinderContext();
Analyzer.version(context);
expect(context.isFailed, false);
});
});

group('grinder.tools.pub', () {
test('version', () {
MockGrinderContext context = new MockGrinderContext();
Pub.version(context);
expect(context.isFailed, false);
});

test('dart2js version', () {
test('global list', () {
MockGrinderContext context = new MockGrinderContext();
Dart2js.version(context);
expect(Pub.global.list(), isNotNull);
expect(context.isFailed, false);
});

test('analyzer version', () {
test('isInstalled', () {
MockGrinderContext context = new MockGrinderContext();
Analyzer.version(context);
Pub.global.isInstalled('foo');
expect(context.isFailed, false);
});
});
Expand Down
2 changes: 1 addition & 1 deletion test/task_discovery/discover_tasks_test.dart
Expand Up @@ -14,7 +14,6 @@ import 'bad_tasks.dart' as bad;
import 'external_tasks.dart' as external;

main() {

// Libs which contains annotated tasks (imported above).
LibraryMirror goodLib;
LibraryMirror badLib;
Expand All @@ -26,6 +25,7 @@ main() {
good.variable;
bad.dependsNonExported;
external.shownVariable;
externalLib;

TaskDiscovery discoveryGood;
TaskDiscovery discoveryBad;
Expand Down
4 changes: 2 additions & 2 deletions tool/travis.sh
Expand Up @@ -11,10 +11,10 @@ set -e
pub global activate tuneup

# Verify that the libraries are error free.
pub global run tuneup check --ignore-infos
pub global run tuneup check

# Run the tests.
dart test/all.dart
dart -c test/all.dart

# Verify that the generated grind script analyzes well.
dart tool/grind.dart analyze-init
Expand Down

0 comments on commit 4abf120

Please sign in to comment.