blob: d4527d7741d48e7243b708c093e27b7b4eb542d1 [file] [log] [blame]
part of file.src.backends.chroot;
class _ChrootLink extends _ChrootFileSystemEntity<Link, io.Link>
with ForwardingLink {
factory _ChrootLink.wrapped(
ChrootFileSystem fs,
io.Link delegate, {
bool relative: false,
}) {
String localPath = fs._local(delegate.path, relative: relative);
return new _ChrootLink(fs, localPath);
}
_ChrootLink(ChrootFileSystem fs, String path) : super(fs, path);
@override
io.Link get delegate => fileSystem.delegate.link(_realPath);
@override
Future<Link> create(String target, {bool recursive: false}) async {
if (fileSystem._context.isAbsolute(target)) {
// Relative targets are left untouched.
target = fileSystem._real(target);
}
return wrap(await delegate.create(target, recursive: recursive));
}
@override
void createSync(String target, {bool recursive: false}) {
if (fileSystem._context.isAbsolute(target)) {
// Relative targets are left untouched.
target = fileSystem._real(target);
}
return delegate.createSync(target, recursive: recursive);
}
@override
Future<String> target() async {
String realTarget = await delegate.target();
return fileSystem._local(
realTarget,
relative: fileSystem._context.isRelative(realTarget),
);
}
@override
String targetSync() {
String realTarget = delegate.targetSync();
return fileSystem._local(
realTarget,
relative: fileSystem._context.isRelative(realTarget),
);
}
@override
Link get absolute => new _ChrootLink(fileSystem, _absolutePath);
}