| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 library descriptor.tar; | |
| 6 | |
| 7 import 'dart:async'; | |
| 8 | |
| 9 import 'package:path/path.dart' as path; | |
| 10 import 'package:scheduled_test/scheduled_test.dart'; | |
| 11 import 'package:scheduled_test/descriptor.dart'; | |
| 12 | |
| 13 import '../../lib/src/io.dart'; | |
| 14 | |
| 15 /// Describes a tar file and its contents. | |
| 16 class TarFileDescriptor extends DirectoryDescriptor implements | |
| 17 ReadableDescriptor { | |
| 18 TarFileDescriptor(String name, List<Descriptor> contents) | |
| 19 : super(name, contents); | |
| 20 | |
| 21 /// Creates the files and directories within this tar file, then archives | |
| 22 /// them, compresses them, and saves the result to [parentDir]. | |
| 23 Future<String> create([String parent]) => schedule(() { | |
| 24 if (parent == null) parent = defaultRoot; | |
| 25 return withTempDir((tempDir) { | |
| 26 return Future.wait(contents.map((entry) { | |
| 27 return entry.create(tempDir); | |
| 28 })).then((_) { | |
| 29 var createdContents = | |
| 30 listDir(tempDir, recursive: true, includeHidden: true); | |
| 31 return createTarGz(createdContents, baseDir: tempDir).toBytes(); | |
| 32 }).then((bytes) { | |
| 33 var file = path.join(parent, name); | |
| 34 writeBinaryFile(file, bytes); | |
| 35 return file; | |
| 36 }); | |
| 37 }); | |
| 38 }, 'creating tar file:\n${describe()}'); | |
| 39 | |
| 40 /// Validates that the `.tar.gz` file at [path] contains the expected | |
| 41 /// contents. | |
| 42 Future validate([String parent]) { | |
| 43 throw new UnimplementedError("TODO(nweiz): implement this"); | |
| 44 } | |
| 45 | |
| 46 Stream<List<int>> read() { | |
| 47 return new Stream<List<int>>.fromFuture(withTempDir((tempDir) { | |
| 48 return create( | |
| 49 tempDir).then((_) => readBinaryFile(path.join(tempDir, name))); | |
| 50 })); | |
| 51 } | |
| 52 } | |
| OLD | NEW |