Skip to content

Add back write caching, simplify caching, use sync I/O #3995

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions _test_common/lib/runner_asset_writer_spy.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,4 @@ class RunnerAssetWriterSpy extends AssetWriterSpy implements RunnerAssetWriter {

@override
Future<void> deleteDirectory(AssetId id) => _delegate.deleteDirectory(id);

@override
Future<void> completeBuild() async {}
}
48 changes: 17 additions & 31 deletions build/lib/src/state/filesystem.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';

import 'package:pool/pool.dart';

/// The filesystem the build is running on.
///
/// Methods behave as the `dart:io` methods with the same names, with some
Expand Down Expand Up @@ -77,25 +75,21 @@ abstract interface class Filesystem {

/// The `dart:io` filesystem.
class IoFilesystem implements Filesystem {
/// Pool for async file operations.
final _pool = Pool(32);

@override
Future<bool> exists(String path) => _pool.withResource(File(path).exists);
Future<bool> exists(String path) => File(path).exists();

@override
bool existsSync(String path) => File(path).existsSync();

@override
Future<Uint8List> readAsBytes(String path) =>
_pool.withResource(File(path).readAsBytes);
Future<Uint8List> readAsBytes(String path) => File(path).readAsBytes();

@override
Uint8List readAsBytesSync(String path) => File(path).readAsBytesSync();

@override
Future<String> readAsString(String path, {Encoding encoding = utf8}) =>
_pool.withResource(() => File(path).readAsString(encoding: encoding));
File(path).readAsString(encoding: encoding);

@override
String readAsStringSync(String path, {Encoding encoding = utf8}) =>
Expand All @@ -108,19 +102,15 @@ class IoFilesystem implements Filesystem {
}

@override
Future<void> delete(String path) {
return _pool.withResource(() async {
final file = File(path);
if (await file.exists()) await file.delete();
});
Future<void> delete(String path) async {
final file = File(path);
if (await file.exists()) await file.delete();
}

@override
Future<void> deleteDirectory(String path) {
return _pool.withResource(() async {
final directory = Directory(path);
if (await directory.exists()) await directory.delete(recursive: true);
});
Future<void> deleteDirectory(String path) async {
final directory = Directory(path);
if (await directory.exists()) await directory.delete(recursive: true);
}

@override
Expand All @@ -135,12 +125,10 @@ class IoFilesystem implements Filesystem {
}

@override
Future<void> writeAsBytes(String path, List<int> contents) {
return _pool.withResource(() async {
final file = File(path);
await file.parent.create(recursive: true);
await file.writeAsBytes(contents);
});
Future<void> writeAsBytes(String path, List<int> contents) async {
final file = File(path);
await file.parent.create(recursive: true);
await file.writeAsBytes(contents);
}

@override
Expand All @@ -159,12 +147,10 @@ class IoFilesystem implements Filesystem {
String path,
String contents, {
Encoding encoding = utf8,
}) {
return _pool.withResource(() async {
final file = File(path);
await file.parent.create(recursive: true);
await file.writeAsString(contents, encoding: encoding);
});
}) async {
final file = File(path);
await file.parent.create(recursive: true);
await file.writeAsString(contents, encoding: encoding);
}
}

Expand Down
Loading
Loading