Closed
Description
TODO: maybe move the list of tasks to a wiki page?
Tasks
filesystem:
- identify all current filesystem usage
- find direct usage
- (#7519)
fs
module - (#7519)
fs-extra
module
- (#7519)
- find indirect usage
- (#7519)
tmp
module - (#7519)
glob
module - ...
- (#7519)
- there are probably some we have missed
- find direct usage
- consolidate all filesystem usage into
IFileSystem
(src/client/common/platform/filesystem.ts)- (#7519) add
...
to IFileSystem- implement
- update call sites
- ...
- drop unused methods from
IFileSystem
(and friends)- (#7519)
pathExistsSync()
- ...
- (#7519)
- how to deal with third-party modules that use the filesystem directly?
- (#7519) add
- ensure we keep using only our wrapper in the future
- how to keep from accidentally using the filesystem directly?
- use the new
vscode.workspace.fs
API (see [meta] Use the vscode filesystem API for *all* filesystem operations. #8533) - improve testability (and other cleanup)
- (#7519) factor out
TempFileSystem
for tmp file/dir ops (i.e. as a wrapper around the nodetmp
module) - (#7519) factor out
RawFileSystem
- (#7519) factor out
FileSystemUtils
fromFileSystem
(and useRawFileSystem
in it) - eliminate
IFileSystem
in favor ofIFileSystemUtils
(incl. itsraw
property)
- (#7519) factor out
paths:
- improve testability (and other cleanup)
- move
IPathUtils
fromsrc/client/common/types.ts
tosrc/client/common/platform/types.ts
- (#7519) factor out
FileSystemPaths
as wrapper around 'path' module - rename
src/client/common/platform/pathutils.ts
tofspaths.ts
- move
FileSystemPaths
there (for the low-level operations) - rename
PathUtils
toFileSystemPathUtils
(for high-level operations) - move low-level operations to
IFileSystemPaths
-
separator
->sep
-
delimiter
-
basename()
-
- move high-level operations to
IFileSystemPathUtils
-
arePathsSame()
-
- add
IFileSystemPathUtils.raw
to exposeFileSystemPaths
- move
- identify all current node
path
module usage- find direct usage (see [meta] Consolidate filesystem path operations. #8541)
- find indirect usage
- there are probably some we have missed
- consolidate all fs path operations into
FileSystemPathUtils
& raw (see [meta] Consolidate filesystem path operations. #8541)- how to deal with third-party modules that use node's "path" module directly?
- ensure we keep using only our wrapper in the future (see [meta] Consolidate filesystem path operations. #8541)
- how to keep from accidentally using node's "path" module directly?
other:
- clean up (particularly for testability)
- move
IsWindows
fromsrc/client/common/types.ts
tosrc/client/common/platform/types.ts
- move