
git-subtree-dir: packages/cli git-subtree-mainline:cf8e83552a
git-subtree-split:63e5c99c96
82 lines
2.5 KiB
Dart
82 lines
2.5 KiB
Dart
import 'dart:async';
|
|
import 'package:io/ansi.dart';
|
|
import '../../util.dart';
|
|
|
|
class MakerDependency implements Comparable<MakerDependency> {
|
|
final String name, version;
|
|
final bool dev;
|
|
|
|
const MakerDependency(this.name, this.version, {this.dev: false});
|
|
|
|
@override
|
|
int compareTo(MakerDependency other) => name.compareTo(other.name);
|
|
}
|
|
|
|
Future depend(Iterable<MakerDependency> deps) async {
|
|
var pubspec = await loadPubspec();
|
|
var missing = <MakerDependency>[];
|
|
|
|
for (var dep in deps) {
|
|
var isPresent = false;
|
|
if (dep.dev)
|
|
isPresent = pubspec.devDependencies.containsKey(dep.name);
|
|
else
|
|
isPresent = pubspec.dependencies.containsKey(dep.name);
|
|
|
|
if (!isPresent) {
|
|
missing.add(dep);
|
|
// TODO: https://github.com/dart-lang/pubspec_parse/issues/17:
|
|
// print('Installing ${dep.name}@${dep.version}...');
|
|
//
|
|
// if (dep.dev) {
|
|
// pubspec.devDependencies[dep.name] = new HostedDependency(
|
|
// version: new VersionConstraint.parse(dep.version),
|
|
// );
|
|
// } else {
|
|
// pubspec.dependencies[dep.name] = new HostedDependency(
|
|
// version: new VersionConstraint.parse(dep.version),
|
|
// );
|
|
// }
|
|
}
|
|
}
|
|
|
|
var missingDeps = missing.where((d) => !d.dev).toList()..sort();
|
|
var missingDevDeps = missing.where((d) => d.dev).toList()..sort();
|
|
var totalCount = missingDeps.length + missingDevDeps.length;
|
|
|
|
if (totalCount > 0) {
|
|
print(yellow.wrap(totalCount == 1
|
|
? 'You are missing one dependency.'
|
|
: 'You are missing $totalCount dependencies.'));
|
|
print(yellow.wrap(
|
|
'Update your `pubspec.yaml` to add the following dependencies:\n'));
|
|
|
|
void printMissing(String type, Iterable<MakerDependency> deps) {
|
|
if (deps.isNotEmpty) {
|
|
print(yellow.wrap(' $type:'));
|
|
for (var dep in deps) {
|
|
print(yellow.wrap(' ${dep.name}: ${dep.version}'));
|
|
}
|
|
}
|
|
}
|
|
|
|
printMissing('dependencies', missingDeps);
|
|
printMissing('dev_dependencies', missingDevDeps);
|
|
print('\n');
|
|
}
|
|
|
|
// if (isPresent) {
|
|
// TODO: https://github.com/dart-lang/pubspec_parse/issues/17
|
|
// await savePubspec(pubspec);
|
|
// var pubPath = resolvePub();
|
|
//
|
|
// print('Now running `$pubPath get`...');
|
|
//
|
|
// var pubGet = await Process.start(pubPath, ['get']);
|
|
// pubGet.stdout.listen(stdout.add);
|
|
// pubGet.stderr.listen(stderr.add);
|
|
//
|
|
// var code = await pubGet.exitCode;
|
|
//
|
|
// if (code != 0) throw 'pub get terminated with exit code $code';
|
|
}
|