Reverting package changes until I can figure out how to fix Windows. (#14007)
* Revert "Fixed output validation. (#14005)" This reverts commit d84398db72807f8910833d5fe44a097be152c74a. * Revert "Update package prep script to do async process execution and emit output as it happens. (#13918)" This reverts commit b7169c1d951aa188c1cdc3b980e257e8a92f8abe.
This commit is contained in:
parent
d84398db72
commit
6fda8ee821
@ -7,7 +7,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -16,7 +16,7 @@ dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -19,7 +19,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -29,7 +29,7 @@ dev_dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -11,7 +11,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -21,7 +21,7 @@ dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
dart_style: 1.0.9 # TRANSITIVE DEPENDENCY
|
dart_style: 1.0.9 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -2,21 +2,28 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
import 'dart:async';
|
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:typed_data';
|
|
||||||
|
|
||||||
import 'package:args/args.dart';
|
import 'package:args/args.dart';
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:process/process.dart';
|
|
||||||
|
|
||||||
const String CHROMIUM_REPO =
|
const String CHROMIUM_REPO =
|
||||||
'https://chromium.googlesource.com/external/github.com/flutter/flutter';
|
'https://chromium.googlesource.com/external/github.com/flutter/flutter';
|
||||||
const String GITHUB_REPO = 'https://github.com/flutter/flutter.git';
|
const String GITHUB_REPO = 'https://github.com/flutter/flutter.git';
|
||||||
const String MINGIT_FOR_WINDOWS_URL = 'https://storage.googleapis.com/flutter_infra/mingit/'
|
|
||||||
'603511c649b00bbef0a6122a827ac419b656bc19/mingit.zip';
|
/// The type of the process runner function. This allows us to
|
||||||
|
/// inject a fake process runner into the ArchiveCreator for tests.
|
||||||
|
typedef ProcessResult ProcessRunner(
|
||||||
|
String executable,
|
||||||
|
List<String> arguments, {
|
||||||
|
String workingDirectory,
|
||||||
|
Map<String, String> environment,
|
||||||
|
bool includeParentEnvironment,
|
||||||
|
bool runInShell,
|
||||||
|
Encoding stdoutEncoding,
|
||||||
|
Encoding stderrEncoding,
|
||||||
|
});
|
||||||
|
|
||||||
/// Error class for when a process fails to run, so we can catch
|
/// Error class for when a process fails to run, so we can catch
|
||||||
/// it and provide something more readable than a stack trace.
|
/// it and provide something more readable than a stack trace.
|
||||||
@ -32,96 +39,64 @@ class ProcessFailedException extends Error {
|
|||||||
|
|
||||||
/// Creates a pre-populated Flutter archive from a git repo.
|
/// Creates a pre-populated Flutter archive from a git repo.
|
||||||
class ArchiveCreator {
|
class ArchiveCreator {
|
||||||
/// [_tempDir] is the directory to use for creating the archive. The script
|
/// [tempDir] is the directory to use for creating the archive. Will place
|
||||||
/// will place several GiB of data there, so it should have available space.
|
/// several GiB of data there, so it should have available space.
|
||||||
///
|
/// [outputFile] is the name of the output archive. It should end in either
|
||||||
/// The processManager argument is used to inject a mock of [ProcessManager] for
|
/// ".tar.xz" or ".zip".
|
||||||
|
/// The runner argument is used to inject a mock of [Process.runSync] for
|
||||||
/// testing purposes.
|
/// testing purposes.
|
||||||
///
|
ArchiveCreator(this.tempDir, this.outputFile, {ProcessRunner runner})
|
||||||
/// If subprocessOutput is true, then output from processes invoked during
|
: assert(outputFile.path.toLowerCase().endsWith('.zip') ||
|
||||||
/// archive creation is echoed to stderr and stdout.
|
outputFile.path.toLowerCase().endsWith('.tar.xz')),
|
||||||
ArchiveCreator(this._tempDir, {ProcessManager processManager, bool subprocessOutput: true})
|
flutterRoot = new Directory(path.join(tempDir.path, 'flutter')),
|
||||||
: _flutterRoot = new Directory(path.join(_tempDir.path, 'flutter')),
|
_runner = runner ?? Process.runSync {
|
||||||
_processManager = processManager ?? const LocalProcessManager(),
|
flutter = path.join(
|
||||||
_subprocessOutput = subprocessOutput {
|
flutterRoot.absolute.path,
|
||||||
_flutter = path.join(
|
|
||||||
_flutterRoot.absolute.path,
|
|
||||||
'bin',
|
'bin',
|
||||||
'flutter',
|
Platform.isWindows ? 'flutter.bat' : 'flutter',
|
||||||
);
|
);
|
||||||
_environment = new Map<String, String>.from(Platform.environment);
|
environment = new Map<String, String>.from(Platform.environment);
|
||||||
_environment['PUB_CACHE'] = path.join(_flutterRoot.absolute.path, '.pub-cache');
|
environment['PUB_CACHE'] = path.join(flutterRoot.absolute.path, '.pub-cache');
|
||||||
}
|
}
|
||||||
|
|
||||||
final Directory _flutterRoot;
|
final Directory flutterRoot;
|
||||||
final Directory _tempDir;
|
final Directory tempDir;
|
||||||
final bool _subprocessOutput;
|
final File outputFile;
|
||||||
final ProcessManager _processManager;
|
final ProcessRunner _runner;
|
||||||
String _flutter;
|
String flutter;
|
||||||
final Uri _minGitUri = Uri.parse(MINGIT_FOR_WINDOWS_URL);
|
final String git = Platform.isWindows ? 'git.bat' : 'git';
|
||||||
Map<String, String> _environment;
|
final String zip = Platform.isWindows ? '7za.exe' : 'zip';
|
||||||
|
final String tar = Platform.isWindows ? 'tar.exe' : 'tar';
|
||||||
/// Returns a default archive name when given a Git revision.
|
Map<String, String> environment;
|
||||||
/// Used when an output filename is not given.
|
|
||||||
static String defaultArchiveName(String revision) {
|
|
||||||
final String os = Platform.operatingSystem.toLowerCase();
|
|
||||||
final String id = revision.length > 10 ? revision.substring(0, 10) : revision;
|
|
||||||
final String suffix = Platform.isWindows ? 'zip' : 'tar.xz';
|
|
||||||
return 'flutter_${os}_$id.$suffix';
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Performs all of the steps needed to create an archive.
|
|
||||||
Future<File> createArchive(String revision, File outputFile) async {
|
|
||||||
await _checkoutFlutter(revision);
|
|
||||||
await _installMinGitIfNeeded();
|
|
||||||
await _populateCaches();
|
|
||||||
await _archiveFiles(outputFile);
|
|
||||||
return outputFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Clone the Flutter repo and make sure that the git environment is sane
|
/// Clone the Flutter repo and make sure that the git environment is sane
|
||||||
/// for when the user will unpack it.
|
/// for when the user will unpack it.
|
||||||
Future<Null> _checkoutFlutter(String revision) async {
|
void checkoutFlutter(String revision) {
|
||||||
// We want the user to start out the in the 'master' branch instead of a
|
// We want the user to start out the in the 'master' branch instead of a
|
||||||
// detached head. To do that, we need to make sure master points at the
|
// detached head. To do that, we need to make sure master points at the
|
||||||
// desired revision.
|
// desired revision.
|
||||||
await _runGit(<String>['clone', '-b', 'master', CHROMIUM_REPO], workingDirectory: _tempDir);
|
runGit(<String>['clone', '-b', 'master', CHROMIUM_REPO], workingDirectory: tempDir);
|
||||||
await _runGit(<String>['reset', '--hard', revision]);
|
runGit(<String>['reset', '--hard', revision]);
|
||||||
|
|
||||||
// Make the origin point to github instead of the chromium mirror.
|
// Make the origin point to github instead of the chromium mirror.
|
||||||
await _runGit(<String>['remote', 'remove', 'origin']);
|
runGit(<String>['remote', 'remove', 'origin']);
|
||||||
await _runGit(<String>['remote', 'add', 'origin', GITHUB_REPO]);
|
runGit(<String>['remote', 'add', 'origin', GITHUB_REPO]);
|
||||||
}
|
|
||||||
|
|
||||||
/// Retrieve the MinGit executable from storage and unpack it.
|
|
||||||
Future<Null> _installMinGitIfNeeded() async {
|
|
||||||
if (!Platform.isWindows) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final Uint8List data = await http.readBytes(_minGitUri);
|
|
||||||
final File gitFile = new File(path.join(_tempDir.path, 'mingit.zip'));
|
|
||||||
await gitFile.open(mode: FileMode.WRITE);
|
|
||||||
await gitFile.writeAsBytes(data);
|
|
||||||
|
|
||||||
final Directory minGitPath = new Directory(path.join(_flutterRoot.path, 'bin', 'mingit'));
|
|
||||||
await minGitPath.create(recursive: true);
|
|
||||||
await _unzipArchive(gitFile, currentDirectory: minGitPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Prepare the archive repo so that it has all of the caches warmed up and
|
/// Prepare the archive repo so that it has all of the caches warmed up and
|
||||||
/// is configured for the user to begin working.
|
/// is configured for the user to being working.
|
||||||
Future<Null> _populateCaches() async {
|
void prepareArchive() {
|
||||||
await _runFlutter(<String>['doctor']);
|
runFlutter(<String>['doctor']);
|
||||||
await _runFlutter(<String>['update-packages']);
|
runFlutter(<String>['update-packages']);
|
||||||
await _runFlutter(<String>['precache']);
|
runFlutter(<String>['precache']);
|
||||||
await _runFlutter(<String>['ide-config']);
|
runFlutter(<String>['ide-config']);
|
||||||
|
|
||||||
// Create each of the templates, since they will call 'pub get' on
|
// Create each of the templates, since they will call pub get on
|
||||||
// themselves when created, and this will warm the cache with their
|
// themselves when created, and this will warm the cache with their
|
||||||
// dependencies too.
|
// dependencies too.
|
||||||
for (String template in <String>['app', 'package', 'plugin']) {
|
for (String template in <String>['app', 'package', 'plugin']) {
|
||||||
final String createName = path.join(_tempDir.path, 'create_$template');
|
final String createName = path.join(tempDir.path, 'create_$template');
|
||||||
await _runFlutter(
|
runFlutter(
|
||||||
<String>['create', '--template=$template', createName],
|
<String>['create', '--template=$template', createName],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -129,117 +104,80 @@ class ArchiveCreator {
|
|||||||
// Yes, we could just skip all .packages files when constructing
|
// Yes, we could just skip all .packages files when constructing
|
||||||
// the archive, but some are checked in, and we don't want to skip
|
// the archive, but some are checked in, and we don't want to skip
|
||||||
// those.
|
// those.
|
||||||
await _runGit(<String>['clean', '-f', '-X', '**/.packages']);
|
runGit(<String>['clean', '-f', '-X', '**/.packages']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Write the archive to the given output file.
|
/// Create the archive into the given output file.
|
||||||
Future<Null> _archiveFiles(File outputFile) async {
|
void createArchive() {
|
||||||
if (outputFile.path.toLowerCase().endsWith('.zip')) {
|
if (outputFile.path.toLowerCase().endsWith('.zip')) {
|
||||||
await _createZipArchive(outputFile, _flutterRoot);
|
createZipArchive(outputFile, flutterRoot);
|
||||||
} else if (outputFile.path.toLowerCase().endsWith('.tar.xz')) {
|
} else if (outputFile.path.toLowerCase().endsWith('.tar.xz')) {
|
||||||
await _createTarArchive(outputFile, _flutterRoot);
|
createTarArchive(outputFile, flutterRoot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String> _runFlutter(List<String> args) => _runProcess(<String>[_flutter]..addAll(args));
|
String _runProcess(String executable, List<String> args, {Directory workingDirectory}) {
|
||||||
|
workingDirectory ??= flutterRoot;
|
||||||
Future<String> _runGit(List<String> args, {Directory workingDirectory}) {
|
stderr.write('Running "$executable ${args.join(' ')}" in ${workingDirectory.path}.\n');
|
||||||
return _runProcess(<String>['git']..addAll(args), workingDirectory: workingDirectory);
|
ProcessResult result;
|
||||||
|
try {
|
||||||
|
result = _runner(
|
||||||
|
executable,
|
||||||
|
args,
|
||||||
|
workingDirectory: workingDirectory.absolute.path,
|
||||||
|
environment: environment,
|
||||||
|
includeParentEnvironment: false,
|
||||||
|
);
|
||||||
|
} on ProcessException catch (e) {
|
||||||
|
final String message = 'Running "$executable ${args.join(' ')}" in ${workingDirectory.path} '
|
||||||
|
'failed with:\n${e.toString()}\n PATH: ${environment['PATH']}';
|
||||||
|
throw new ProcessFailedException(message, -1);
|
||||||
|
} catch (e) {
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
stdout.write(result.stdout);
|
||||||
|
stderr.write(result.stderr);
|
||||||
|
if (result.exitCode != 0) {
|
||||||
|
final String message = 'Running "$executable ${args.join(' ')}" in ${workingDirectory.path} '
|
||||||
|
'failed with ${result.exitCode}.';
|
||||||
|
throw new ProcessFailedException(message, result.exitCode);
|
||||||
|
}
|
||||||
|
return result.stdout.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Unpacks the given zip file into the currentDirectory (if set), or the
|
String runFlutter(List<String> args) {
|
||||||
/// same directory as the archive.
|
return _runProcess(flutter, args);
|
||||||
///
|
|
||||||
/// May only be run on Windows (since 7Zip is not available on other platforms).
|
|
||||||
Future<String> _unzipArchive(File archive, {Directory currentDirectory}) {
|
|
||||||
assert(Platform.isWindows); // 7Zip is only available on Windows.
|
|
||||||
currentDirectory ??= new Directory(path.dirname(archive.absolute.path));
|
|
||||||
final List<String> commandLine = <String>['7za', 'x', archive.absolute.path];
|
|
||||||
return _runProcess(commandLine, workingDirectory: currentDirectory);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a zip archive from the directory source.
|
String runGit(List<String> args, {Directory workingDirectory}) {
|
||||||
///
|
return _runProcess(git, args, workingDirectory: workingDirectory);
|
||||||
/// May only be run on Windows (since 7Zip is not available on other platforms).
|
}
|
||||||
Future<String> _createZipArchive(File output, Directory source) {
|
|
||||||
assert(Platform.isWindows); // 7Zip is only available on Windows.
|
void createZipArchive(File output, Directory source) {
|
||||||
final List<String> commandLine = <String>[
|
final List<String> args = <String>[];
|
||||||
'7za',
|
if (Platform.isWindows) {
|
||||||
'a',
|
// We use 7-Zip on Windows, which has different args.
|
||||||
'-tzip',
|
args.addAll(<String>['a', '-tzip', '-mx=9']);
|
||||||
'-mx=9',
|
} else {
|
||||||
|
args.addAll(<String>['-r', '-9', '-q']);
|
||||||
|
}
|
||||||
|
args.addAll(<String>[
|
||||||
output.absolute.path,
|
output.absolute.path,
|
||||||
path.basename(source.absolute.path),
|
path.basename(source.absolute.path),
|
||||||
];
|
]);
|
||||||
return _runProcess(commandLine,
|
|
||||||
|
_runProcess(zip, args,
|
||||||
workingDirectory: new Directory(path.dirname(source.absolute.path)));
|
workingDirectory: new Directory(path.dirname(source.absolute.path)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Create a tar archive from the directory source.
|
void createTarArchive(File output, Directory source) {
|
||||||
Future<String> _createTarArchive(File output, Directory source) {
|
final List<String> args = <String>[
|
||||||
return _runProcess(<String>[
|
|
||||||
'tar',
|
|
||||||
'cJf',
|
'cJf',
|
||||||
output.absolute.path,
|
output.absolute.path,
|
||||||
path.basename(source.absolute.path),
|
path.basename(source.absolute.path),
|
||||||
], workingDirectory: new Directory(path.dirname(source.absolute.path)));
|
];
|
||||||
}
|
_runProcess(tar, args,
|
||||||
|
workingDirectory: new Directory(path.dirname(source.absolute.path)));
|
||||||
/// Run the command and arguments in commandLine as a sub-process from
|
|
||||||
/// workingDirectory if set, or the current directory if not.
|
|
||||||
Future<String> _runProcess(List<String> commandLine, {Directory workingDirectory}) async {
|
|
||||||
workingDirectory ??= _flutterRoot;
|
|
||||||
if (_subprocessOutput) {
|
|
||||||
stderr.write('Running "${commandLine.join(' ')}" in ${workingDirectory.path}.\n');
|
|
||||||
}
|
|
||||||
final List<int> output = <int>[];
|
|
||||||
final Completer<Null> stdoutComplete = new Completer<Null>();
|
|
||||||
final Completer<Null> stderrComplete = new Completer<Null>();
|
|
||||||
Process process;
|
|
||||||
Future<int> allComplete() async {
|
|
||||||
await stderrComplete.future;
|
|
||||||
await stdoutComplete.future;
|
|
||||||
return process.exitCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
process = await _processManager.start(
|
|
||||||
commandLine,
|
|
||||||
workingDirectory: workingDirectory.absolute.path,
|
|
||||||
environment: _environment,
|
|
||||||
);
|
|
||||||
process.stdout.listen(
|
|
||||||
(List<int> event) {
|
|
||||||
output.addAll(event);
|
|
||||||
if (_subprocessOutput) {
|
|
||||||
stdout.add(event);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onDone: () async => stdoutComplete.complete(),
|
|
||||||
);
|
|
||||||
if (_subprocessOutput) {
|
|
||||||
process.stderr.listen(
|
|
||||||
(List<int> event) {
|
|
||||||
stderr.add(event);
|
|
||||||
},
|
|
||||||
onDone: () async => stderrComplete.complete(),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
stderrComplete.complete();
|
|
||||||
}
|
|
||||||
} on ProcessException catch (e) {
|
|
||||||
final String message = 'Running "${commandLine.join(' ')}" in ${workingDirectory.path} '
|
|
||||||
'failed with:\n${e.toString()}';
|
|
||||||
throw new ProcessFailedException(message, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
final int exitCode = await allComplete();
|
|
||||||
if (exitCode != 0) {
|
|
||||||
final String message = 'Running "${commandLine.join(' ')}" in ${workingDirectory.path} '
|
|
||||||
'failed with $exitCode.';
|
|
||||||
throw new ProcessFailedException(message, exitCode);
|
|
||||||
}
|
|
||||||
return UTF8.decoder.convert(output).trim();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,10 +185,7 @@ class ArchiveCreator {
|
|||||||
/// It mainly serves to populate the .pub-cache with any appropriate Dart
|
/// It mainly serves to populate the .pub-cache with any appropriate Dart
|
||||||
/// packages, and the flutter cache in bin/cache with the appropriate
|
/// packages, and the flutter cache in bin/cache with the appropriate
|
||||||
/// dependencies and snapshots.
|
/// dependencies and snapshots.
|
||||||
///
|
void main(List<String> argList) {
|
||||||
/// Note that archives contain the executables and customizations for the
|
|
||||||
/// platform that they are created on.
|
|
||||||
Future<Null> main(List<String> argList) async {
|
|
||||||
final ArgParser argParser = new ArgParser();
|
final ArgParser argParser = new ArgParser();
|
||||||
argParser.addOption(
|
argParser.addOption(
|
||||||
'temp_dir',
|
'temp_dir',
|
||||||
@ -268,11 +203,9 @@ Future<Null> main(List<String> argList) async {
|
|||||||
argParser.addOption(
|
argParser.addOption(
|
||||||
'output',
|
'output',
|
||||||
defaultsTo: null,
|
defaultsTo: null,
|
||||||
help: 'The path to the file where the output archive should be '
|
help: 'The path where the output archive should be written. '
|
||||||
'written. The output file must end in ".tar.xz" on Linux and Mac, '
|
'The suffix determines the output format: .tar.xz or .zip are the '
|
||||||
'and ".zip" on Windows. If --output is not specified, the archive will '
|
'only formats supported.',
|
||||||
"be written to the current directory. If the output directory doesn't "
|
|
||||||
'exist, it, and the path to it, will be created.',
|
|
||||||
);
|
);
|
||||||
final ArgResults args = argParser.parse(argList);
|
final ArgResults args = argParser.parse(argList);
|
||||||
|
|
||||||
@ -286,51 +219,47 @@ Future<Null> main(List<String> argList) async {
|
|||||||
errorExit('Invalid argument: --revision must be specified.');
|
errorExit('Invalid argument: --revision must be specified.');
|
||||||
}
|
}
|
||||||
|
|
||||||
Directory tempDir;
|
Directory tmpDir;
|
||||||
bool removeTempDir = false;
|
bool removeTempDir = false;
|
||||||
if (args['temp_dir'] == null || args['temp_dir'].isEmpty) {
|
if (args['temp_dir'] == null || args['temp_dir'].isEmpty) {
|
||||||
tempDir = Directory.systemTemp.createTempSync('flutter_');
|
tmpDir = Directory.systemTemp.createTempSync('flutter_');
|
||||||
removeTempDir = true;
|
removeTempDir = true;
|
||||||
} else {
|
} else {
|
||||||
tempDir = new Directory(args['temp_dir']);
|
tmpDir = new Directory(args['temp_dir']);
|
||||||
if (!tempDir.existsSync()) {
|
if (!tmpDir.existsSync()) {
|
||||||
errorExit("Temporary directory ${args['temp_dir']} doesn't exist.");
|
errorExit("Temporary directory ${args['temp_dir']} doesn't exist.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final String output = (args['output'] == null || args['output'].isEmpty)
|
String outputFileString = args['output'];
|
||||||
? path.join(path.current, ArchiveCreator.defaultArchiveName(args['revision']))
|
if (outputFileString == null || outputFileString.isEmpty) {
|
||||||
: args['output'];
|
final String suffix = Platform.isWindows ? '.zip' : '.tar.xz';
|
||||||
|
outputFileString = path.join(tmpDir.path, 'flutter_${args['revision']}$suffix');
|
||||||
/// Sanity check the output filename.
|
} else if (!outputFileString.toLowerCase().endsWith('.zip') &&
|
||||||
final String outputFilename = path.basename(output);
|
!outputFileString.toLowerCase().endsWith('.tar.xz')) {
|
||||||
if (Platform.isWindows) {
|
errorExit('Output file has unsupported suffix. It should be either ".zip" or ".tar.xz".');
|
||||||
if (!outputFilename.endsWith('.zip')) {
|
|
||||||
errorExit('The argument to --output must end in .zip on Windows.');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!outputFilename.endsWith('.tar.xz')) {
|
|
||||||
errorExit('The argument to --output must end in .tar.xz on Linux and Mac.');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final Directory outputDirectory = new Directory(path.dirname(output));
|
final File outputFile = new File(outputFileString);
|
||||||
if (!outputDirectory.existsSync()) {
|
if (outputFile.existsSync()) {
|
||||||
outputDirectory.createSync(recursive: true);
|
errorExit('Output file ${outputFile.absolute.path} already exists.');
|
||||||
}
|
}
|
||||||
final File outputFile = new File(path.join(outputDirectory.absolute.path, outputFilename));
|
|
||||||
|
|
||||||
final ArchiveCreator preparer = new ArchiveCreator(tempDir);
|
final ArchiveCreator preparer = new ArchiveCreator(tmpDir, outputFile);
|
||||||
int exitCode = 0;
|
int exitCode = 0;
|
||||||
String message;
|
String message;
|
||||||
try {
|
try {
|
||||||
await preparer.createArchive(args['revision'], outputFile);
|
preparer.checkoutFlutter(args['revision']);
|
||||||
|
preparer.prepareArchive();
|
||||||
|
preparer.createArchive();
|
||||||
} on ProcessFailedException catch (e) {
|
} on ProcessFailedException catch (e) {
|
||||||
exitCode = e.exitCode;
|
exitCode = e.exitCode;
|
||||||
message = e.message;
|
message = e.message;
|
||||||
|
} catch (e) {
|
||||||
|
rethrow;
|
||||||
} finally {
|
} finally {
|
||||||
if (removeTempDir) {
|
if (removeTempDir) {
|
||||||
tempDir.deleteSync(recursive: true);
|
tmpDir.deleteSync(recursive: true);
|
||||||
}
|
}
|
||||||
if (exitCode != 0) {
|
if (exitCode != 0) {
|
||||||
errorExit(message, exitCode: exitCode);
|
errorExit(message, exitCode: exitCode);
|
||||||
|
@ -4,14 +4,13 @@ description: Scripts which run on bots.
|
|||||||
dependencies:
|
dependencies:
|
||||||
path: 1.5.1
|
path: 1.5.1
|
||||||
args: 0.13.7
|
args: 0.13.7
|
||||||
process: 2.0.7
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
test: 0.12.26
|
test: 0.12.26
|
||||||
mockito: 2.2.1
|
mockito: 2.2.1
|
||||||
|
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,13 +18,11 @@ dev_dependencies:
|
|||||||
convert: 2.0.1 # TRANSITIVE DEPENDENCY
|
convert: 2.0.1 # TRANSITIVE DEPENDENCY
|
||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
intl: 0.15.2 # TRANSITIVE DEPENDENCY
|
|
||||||
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
||||||
isolate: 1.1.0 # TRANSITIVE DEPENDENCY
|
isolate: 1.1.0 # TRANSITIVE DEPENDENCY
|
||||||
js: 0.6.1 # TRANSITIVE DEPENDENCY
|
js: 0.6.1 # TRANSITIVE DEPENDENCY
|
||||||
@ -36,7 +33,6 @@ dev_dependencies:
|
|||||||
node_preamble: 1.4.0 # TRANSITIVE DEPENDENCY
|
node_preamble: 1.4.0 # TRANSITIVE DEPENDENCY
|
||||||
package_config: 1.0.3 # TRANSITIVE DEPENDENCY
|
package_config: 1.0.3 # TRANSITIVE DEPENDENCY
|
||||||
package_resolver: 1.0.2 # TRANSITIVE DEPENDENCY
|
package_resolver: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
platform: 2.1.1 # TRANSITIVE DEPENDENCY
|
|
||||||
plugin: 0.2.0+2 # TRANSITIVE DEPENDENCY
|
plugin: 0.2.0+2 # TRANSITIVE DEPENDENCY
|
||||||
pool: 1.3.4 # TRANSITIVE DEPENDENCY
|
pool: 1.3.4 # TRANSITIVE DEPENDENCY
|
||||||
pub_semver: 1.3.2 # TRANSITIVE DEPENDENCY
|
pub_semver: 1.3.2 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -2,13 +2,12 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:mockito/mockito.dart';
|
import 'package:mockito/mockito.dart';
|
||||||
import 'package:test/test.dart';
|
import 'package:test/test.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
import 'package:process/process.dart';
|
|
||||||
|
|
||||||
import '../prepare_package.dart';
|
import '../prepare_package.dart';
|
||||||
|
|
||||||
@ -18,86 +17,87 @@ void main() {
|
|||||||
Directory tmpDir;
|
Directory tmpDir;
|
||||||
Directory flutterDir;
|
Directory flutterDir;
|
||||||
File outputFile;
|
File outputFile;
|
||||||
MockProcessManager processManager;
|
MockProcessRunner runner;
|
||||||
List<MockProcess> results = <MockProcess>[];
|
List<MockProcessResult> results;
|
||||||
final List<List<String>> args = <List<String>>[];
|
final List<List<String>> args = <List<String>>[];
|
||||||
final List<Map<Symbol, dynamic>> namedArgs = <Map<Symbol, dynamic>>[];
|
final List<Map<Symbol, dynamic>> namedArgs = <Map<Symbol, dynamic>>[];
|
||||||
|
final String zipExe = Platform.isWindows ? '7za.exe' : 'zip';
|
||||||
|
final String tarExe = Platform.isWindows ? 'tar.exe' : 'tar';
|
||||||
|
final String gitExe = Platform.isWindows ? 'git.bat' : 'git';
|
||||||
String flutterExe;
|
String flutterExe;
|
||||||
|
|
||||||
void _verifyCommand(List<dynamic> args, String expected) {
|
void _verifyCommand(List<dynamic> args, String expected) {
|
||||||
final List<String> expectedList = expected.split(' ');
|
final List<String> expectedList = expected.split(' ');
|
||||||
expect(args[0], orderedEquals(expectedList));
|
final String executable = expectedList.removeAt(0);
|
||||||
|
expect(args[0], executable);
|
||||||
|
expect(args[1], orderedEquals(expectedList));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Process> _nextResult(Invocation invocation) async {
|
ProcessResult _nextResult(Invocation invocation) {
|
||||||
args.add(invocation.positionalArguments);
|
args.add(invocation.positionalArguments);
|
||||||
namedArgs.add(invocation.namedArguments);
|
namedArgs.add(invocation.namedArguments);
|
||||||
final Process result = results.isEmpty ? new MockProcess('', '', 0) : results.removeAt(0);
|
return results.isEmpty ? new MockProcessResult('', '', 0) : results.removeAt(0);
|
||||||
return new Future<Process>.value(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _answerWithResults() {
|
void _answerWithResults() {
|
||||||
when(
|
when(
|
||||||
processManager.start(
|
runner.call(
|
||||||
|
typed(captureAny),
|
||||||
typed(captureAny),
|
typed(captureAny),
|
||||||
environment: typed(captureAny, named: 'environment'),
|
environment: typed(captureAny, named: 'environment'),
|
||||||
workingDirectory: typed(captureAny, named: 'workingDirectory'),
|
workingDirectory: typed(captureAny, named: 'workingDirectory'),
|
||||||
|
includeParentEnvironment: typed(captureAny, named: 'includeParentEnvironment'),
|
||||||
),
|
),
|
||||||
).thenAnswer(_nextResult);
|
).thenAnswer(_nextResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
setUp(() async {
|
setUp(() async {
|
||||||
processManager = new MockProcessManager();
|
runner = new MockProcessRunner();
|
||||||
args.clear();
|
args.clear();
|
||||||
namedArgs.clear();
|
namedArgs.clear();
|
||||||
tmpDir = await Directory.systemTemp.createTemp('flutter_');
|
tmpDir = await Directory.systemTemp.createTemp('flutter_');
|
||||||
outputFile =
|
|
||||||
new File(path.join(tmpDir.absolute.path, ArchiveCreator.defaultArchiveName('master')));
|
|
||||||
flutterDir = new Directory(path.join(tmpDir.path, 'flutter'));
|
flutterDir = new Directory(path.join(tmpDir.path, 'flutter'));
|
||||||
flutterDir.createSync(recursive: true);
|
|
||||||
flutterExe =
|
flutterExe =
|
||||||
path.join(flutterDir.path, 'bin', 'flutter');
|
path.join(flutterDir.path, 'bin', Platform.isWindows ? 'flutter.bat' : 'flutter');
|
||||||
});
|
});
|
||||||
|
|
||||||
tearDown(() async {
|
tearDown(() async {
|
||||||
// On Windows, the directory is locked and not able to be deleted, because it is a
|
await tmpDir.delete(recursive: true);
|
||||||
// temporary directory. So we just leave some (very small, because we're not actually
|
|
||||||
// building archives here) trash around to be deleted at the next reboot.
|
|
||||||
if (!Platform.isWindows) {
|
|
||||||
await tmpDir.delete(recursive: true);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('sets PUB_CACHE properly', () async {
|
test('sets PUB_CACHE properly', () async {
|
||||||
preparer =
|
outputFile = new File(path.join(tmpDir.absolute.path, 'flutter_master.tar.xz'));
|
||||||
new ArchiveCreator(tmpDir, processManager: processManager, subprocessOutput: false);
|
preparer = new ArchiveCreator(tmpDir, outputFile, runner: runner);
|
||||||
_answerWithResults();
|
_answerWithResults();
|
||||||
await preparer.createArchive('master', outputFile);
|
results = <MockProcessResult>[new MockProcessResult('deadbeef\n', '', 0)];
|
||||||
|
preparer.checkoutFlutter('master');
|
||||||
|
preparer.prepareArchive();
|
||||||
|
preparer.createArchive();
|
||||||
expect(
|
expect(
|
||||||
verify(processManager.start(
|
verify(runner.call(
|
||||||
|
captureAny,
|
||||||
captureAny,
|
captureAny,
|
||||||
workingDirectory: captureAny,
|
workingDirectory: captureAny,
|
||||||
environment: captureAny,
|
environment: captureAny,
|
||||||
)).captured[1]['PUB_CACHE'],
|
includeParentEnvironment: typed(captureAny, named: 'includeParentEnvironment'),
|
||||||
|
)).captured[2]['PUB_CACHE'],
|
||||||
endsWith(path.join('flutter', '.pub-cache')),
|
endsWith(path.join('flutter', '.pub-cache')),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('calls the right commands for archive output', () async {
|
test('calls the right commands for tar output', () async {
|
||||||
preparer =
|
outputFile = new File(path.join(tmpDir.absolute.path, 'flutter_master.tar.xz'));
|
||||||
new ArchiveCreator(tmpDir, processManager: processManager, subprocessOutput: false);
|
preparer = new ArchiveCreator(tmpDir, outputFile, runner: runner);
|
||||||
_answerWithResults();
|
_answerWithResults();
|
||||||
await preparer.createArchive('master', outputFile);
|
results = <MockProcessResult>[new MockProcessResult('deadbeef\n', '', 0)];
|
||||||
|
preparer.checkoutFlutter('master');
|
||||||
|
preparer.prepareArchive();
|
||||||
|
preparer.createArchive();
|
||||||
final List<String> commands = <String>[
|
final List<String> commands = <String>[
|
||||||
'git clone -b master https://chromium.googlesource.com/external/github.com/flutter/flutter',
|
'$gitExe clone -b master https://chromium.googlesource.com/external/github.com/flutter/flutter',
|
||||||
'git reset --hard master',
|
'$gitExe reset --hard master',
|
||||||
'git remote remove origin',
|
'$gitExe remote remove origin',
|
||||||
'git remote add origin https://github.com/flutter/flutter.git',
|
'$gitExe remote add origin https://github.com/flutter/flutter.git',
|
||||||
];
|
|
||||||
if (Platform.isWindows) {
|
|
||||||
commands.add('7za x ${path.join(tmpDir.path, 'mingit.zip')}');
|
|
||||||
}
|
|
||||||
commands.addAll(<String>[
|
|
||||||
'$flutterExe doctor',
|
'$flutterExe doctor',
|
||||||
'$flutterExe update-packages',
|
'$flutterExe update-packages',
|
||||||
'$flutterExe precache',
|
'$flutterExe precache',
|
||||||
@ -105,13 +105,43 @@ void main() {
|
|||||||
'$flutterExe create --template=app ${path.join(tmpDir.path, 'create_app')}',
|
'$flutterExe create --template=app ${path.join(tmpDir.path, 'create_app')}',
|
||||||
'$flutterExe create --template=package ${path.join(tmpDir.path, 'create_package')}',
|
'$flutterExe create --template=package ${path.join(tmpDir.path, 'create_package')}',
|
||||||
'$flutterExe create --template=plugin ${path.join(tmpDir.path, 'create_plugin')}',
|
'$flutterExe create --template=plugin ${path.join(tmpDir.path, 'create_plugin')}',
|
||||||
'git clean -f -X **/.packages',
|
'$gitExe clean -f -X **/.packages',
|
||||||
]);
|
'$tarExe cJf ${path.join(tmpDir.path, 'flutter_master.tar.xz')} flutter',
|
||||||
if (Platform.isWindows) {
|
];
|
||||||
commands.add('7za a -tzip -mx=9 ${outputFile.absolute.path} flutter');
|
int step = 0;
|
||||||
} else {
|
for (String command in commands) {
|
||||||
commands.add('tar cJf ${outputFile.absolute.path} flutter');
|
_verifyCommand(args[step++], command);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test('calls the right commands for zip output', () async {
|
||||||
|
outputFile = new File(path.join(tmpDir.absolute.path, 'flutter_master.zip'));
|
||||||
|
preparer = new ArchiveCreator(tmpDir, outputFile, runner: runner);
|
||||||
|
_answerWithResults();
|
||||||
|
results = <MockProcessResult>[new MockProcessResult('deadbeef\n', '', 0)];
|
||||||
|
preparer.checkoutFlutter('master');
|
||||||
|
preparer.prepareArchive();
|
||||||
|
preparer.createArchive();
|
||||||
|
final List<String> commands = <String>[
|
||||||
|
'$gitExe clone -b master https://chromium.googlesource.com/external/github.com/flutter/flutter',
|
||||||
|
'$gitExe reset --hard master',
|
||||||
|
'$gitExe remote remove origin',
|
||||||
|
'$gitExe remote add origin https://github.com/flutter/flutter.git',
|
||||||
|
'$flutterExe doctor',
|
||||||
|
'$flutterExe update-packages',
|
||||||
|
'$flutterExe precache',
|
||||||
|
'$flutterExe ide-config',
|
||||||
|
'$flutterExe create --template=app ${path.join(tmpDir.path, 'create_app')}',
|
||||||
|
'$flutterExe create --template=package ${path.join(tmpDir.path, 'create_package')}',
|
||||||
|
'$flutterExe create --template=plugin ${path.join(tmpDir.path, 'create_plugin')}',
|
||||||
|
'$gitExe clean -f -X **/.packages',
|
||||||
|
];
|
||||||
|
if (Platform.isWindows) {
|
||||||
|
commands.add('$zipExe a -tzip -mx=9 ${path.join(tmpDir.path, 'flutter_master.zip')} flutter');
|
||||||
|
} else {
|
||||||
|
commands.add('$zipExe -r -9 -q ${path.join(tmpDir.path, 'flutter_master.zip')} flutter');
|
||||||
|
}
|
||||||
|
|
||||||
int step = 0;
|
int step = 0;
|
||||||
for (String command in commands) {
|
for (String command in commands) {
|
||||||
_verifyCommand(args[step++], command);
|
_verifyCommand(args[step++], command);
|
||||||
@ -119,37 +149,50 @@ void main() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('throws when a command errors out', () async {
|
test('throws when a command errors out', () async {
|
||||||
preparer =
|
outputFile = new File(path.join(tmpDir.absolute.path, 'flutter.tar.xz'));
|
||||||
new ArchiveCreator(tmpDir, processManager: processManager, subprocessOutput: false);
|
preparer = new ArchiveCreator(
|
||||||
|
tmpDir,
|
||||||
|
outputFile,
|
||||||
|
runner: runner,
|
||||||
|
);
|
||||||
|
|
||||||
results = <MockProcess>[
|
results = <MockProcessResult>[
|
||||||
new MockProcess('', '', 0),
|
new MockProcessResult('', '', 0),
|
||||||
new MockProcess('', "Don't panic.\n", -1)
|
new MockProcessResult('OMG! OMG! an ERROR!\n', '', -1)
|
||||||
];
|
];
|
||||||
_answerWithResults();
|
_answerWithResults();
|
||||||
expect(expectAsync2<Null, String, File>(preparer.createArchive)('master', new File('foo')),
|
expect(() => preparer.checkoutFlutter('master'),
|
||||||
throwsA(const isInstanceOf<ProcessFailedException>()));
|
throwsA(const isInstanceOf<ProcessFailedException>()));
|
||||||
|
expect(args.length, 2);
|
||||||
|
_verifyCommand(args[0],
|
||||||
|
'$gitExe clone -b master https://chromium.googlesource.com/external/github.com/flutter/flutter');
|
||||||
|
_verifyCommand(args[1], '$gitExe reset --hard master');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockProcessManager extends Mock implements ProcessManager {}
|
class MockProcessRunner extends Mock implements Function {
|
||||||
|
ProcessResult call(
|
||||||
class MockProcess extends Mock implements Process {
|
String executable,
|
||||||
MockProcess(this._stdout, [this._stderr, this._exitCode]);
|
List<String> arguments, {
|
||||||
|
String workingDirectory,
|
||||||
String _stdout;
|
Map<String, String> environment,
|
||||||
String _stderr;
|
bool includeParentEnvironment,
|
||||||
int _exitCode;
|
bool runInShell,
|
||||||
|
Encoding stdoutEncoding,
|
||||||
@override
|
Encoding stderrEncoding,
|
||||||
Stream<List<int>> get stdout =>
|
});
|
||||||
new Stream<List<int>>.fromIterable(<List<int>>[_stdout.codeUnits]);
|
}
|
||||||
|
|
||||||
@override
|
class MockProcessResult extends Mock implements ProcessResult {
|
||||||
Stream<List<int>> get stderr =>
|
MockProcessResult(this.stdout, [this.stderr = '', this.exitCode = 0]);
|
||||||
new Stream<List<int>>.fromIterable(<List<int>>[_stderr.codeUnits]);
|
|
||||||
|
@override
|
||||||
@override
|
dynamic stdout = '';
|
||||||
Future<int> get exitCode => new Future<int>.value(_exitCode);
|
|
||||||
|
@override
|
||||||
|
dynamic stderr;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int exitCode;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
archive: 1.0.33 # TRANSITIVE DEPENDENCY
|
archive: 1.0.33 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
browser: 0.10.0+2 # TRANSITIVE DEPENDENCY
|
browser: 0.10.0+2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
@ -34,7 +34,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -9,7 +9,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,7 +19,7 @@ dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -9,7 +9,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,7 +19,7 @@ dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -9,7 +9,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,7 +19,7 @@ dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -9,7 +9,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,7 +19,7 @@ dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -16,7 +16,7 @@ dev_dependencies:
|
|||||||
archive: 1.0.33 # TRANSITIVE DEPENDENCY
|
archive: 1.0.33 # TRANSITIVE DEPENDENCY
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
browser: 0.10.0+2 # TRANSITIVE DEPENDENCY
|
browser: 0.10.0+2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
@ -27,7 +27,7 @@ dev_dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -10,7 +10,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,7 +19,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -16,7 +16,7 @@ dev_dependencies:
|
|||||||
test: 0.12.26
|
test: 0.12.26
|
||||||
|
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -25,7 +25,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -13,7 +13,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -23,7 +23,7 @@ dev_dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -25,7 +25,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -34,7 +34,7 @@ dev_dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -7,7 +7,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -16,7 +16,7 @@ dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -10,7 +10,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -19,7 +19,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -9,7 +9,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -18,7 +18,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -12,7 +12,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -22,7 +22,7 @@ dev_dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -12,7 +12,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -22,7 +22,7 @@ dev_dependencies:
|
|||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -6,7 +6,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -15,7 +15,7 @@ dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -17,7 +17,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -28,7 +28,7 @@ dev_dependencies:
|
|||||||
dart_style: 1.0.9 # TRANSITIVE DEPENDENCY
|
dart_style: 1.0.9 # TRANSITIVE DEPENDENCY
|
||||||
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
file: 2.3.5 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -22,7 +22,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -30,7 +30,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -26,7 +26,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -35,7 +35,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -14,7 +14,7 @@ dev_dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -23,7 +23,7 @@ dev_dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
http: 0.11.3+14 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -27,7 +27,7 @@ dependencies:
|
|||||||
|
|
||||||
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
args: 0.13.7 # TRANSITIVE DEPENDENCY
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
cli_util: 0.1.2+1 # TRANSITIVE DEPENDENCY
|
||||||
@ -36,7 +36,7 @@ dependencies:
|
|||||||
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
crypto: 2.0.2+1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
||||||
|
@ -48,13 +48,13 @@ dev_dependencies:
|
|||||||
mockito: 2.2.1
|
mockito: 2.2.1
|
||||||
|
|
||||||
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
async: 1.13.3 # TRANSITIVE DEPENDENCY
|
||||||
barback: 0.15.2+14 # TRANSITIVE DEPENDENCY
|
barback: 0.15.2+13 # TRANSITIVE DEPENDENCY
|
||||||
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
boolean_selector: 1.0.2 # TRANSITIVE DEPENDENCY
|
||||||
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
charcode: 1.1.1 # TRANSITIVE DEPENDENCY
|
||||||
convert: 2.0.1 # TRANSITIVE DEPENDENCY
|
convert: 2.0.1 # TRANSITIVE DEPENDENCY
|
||||||
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
csslib: 0.14.1 # TRANSITIVE DEPENDENCY
|
||||||
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
glob: 1.1.5 # TRANSITIVE DEPENDENCY
|
||||||
html: 0.13.2+2 # TRANSITIVE DEPENDENCY
|
html: 0.13.2+1 # TRANSITIVE DEPENDENCY
|
||||||
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
http_multi_server: 2.0.4 # TRANSITIVE DEPENDENCY
|
||||||
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
http_parser: 3.1.1 # TRANSITIVE DEPENDENCY
|
||||||
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
io: 0.3.1 # TRANSITIVE DEPENDENCY
|
||||||
|
Loading…
x
Reference in New Issue
Block a user