All Projects → haacked → Rothko

haacked / Rothko

Licence: mit
An abstracted library for interacting with the file system, registry, etc.

Projects that are alternatives of or similar to Rothko

Linux Apfs Oot
APFS module for linux (out-of-tree repository)
Stars: ✭ 58 (-26.58%)
Mutual labels:  filesystem
Includedir
Include a whole directory tree at compile time
Stars: ✭ 67 (-15.19%)
Mutual labels:  filesystem
Zbox
Zero-details, privacy-focused in-app file system.
Stars: ✭ 1,185 (+1400%)
Mutual labels:  filesystem
Browser Shell
A Linux command-line shell in the browser
Stars: ✭ 60 (-24.05%)
Mutual labels:  filesystem
Simplefs
A simple file system for Linux kernel
Stars: ✭ 65 (-17.72%)
Mutual labels:  filesystem
Onedrive Fuse Fs
Script to mount Microsoft OneDrive (formerly known as SkyDrive) folder as a FUSE filesystem
Stars: ✭ 68 (-13.92%)
Mutual labels:  filesystem
30daysofnode
30 days of node is a code base tutorial series for node.js which deals with providing a practical project based learning experience instead of talking about its conceptual details.
Stars: ✭ 57 (-27.85%)
Mutual labels:  filesystem
Squashfs Tools Ng
A new set of tools and libraries for working with SquashFS images
Stars: ✭ 76 (-3.8%)
Mutual labels:  filesystem
Raspi Overlayroot
Protect your SD card against wear and tear
Stars: ✭ 66 (-16.46%)
Mutual labels:  filesystem
Webdav Fs
Node fs wrapper for WebDAV
Stars: ✭ 72 (-8.86%)
Mutual labels:  filesystem
Fsq
A tool for querying the file system with a SQL-like language.
Stars: ✭ 60 (-24.05%)
Mutual labels:  filesystem
Notify
🔭 Cross-platform filesystem notification library for Rust.
Stars: ✭ 1,123 (+1321.52%)
Mutual labels:  filesystem
Deltafs
Transient file system service featuring highly paralleled indexing on both file data and file system metadata
Stars: ✭ 70 (-11.39%)
Mutual labels:  filesystem
Win10 Explorer
A new windows 10 file explorer
Stars: ✭ 58 (-26.58%)
Mutual labels:  filesystem
Glob
Glob for C++17
Stars: ✭ 74 (-6.33%)
Mutual labels:  filesystem
Udftools
Linux tools for UDF filesystems and DVD/CD-R(W) drives
Stars: ✭ 57 (-27.85%)
Mutual labels:  filesystem
Fast Glob
🚀 It's a very fast and efficient glob library for Node.js
Stars: ✭ 1,150 (+1355.7%)
Mutual labels:  filesystem
Cifsd
cifsd kernel server(SMB/CIFS server)
Stars: ✭ 76 (-3.8%)
Mutual labels:  filesystem
Polyfuse
A FUSE (Filesystem in Userspace) library for Rust
Stars: ✭ 76 (-3.8%)
Mutual labels:  filesystem
Python Btrfs
Python Btrfs module
Stars: ✭ 72 (-8.86%)
Mutual labels:  filesystem

Rothko

We all know the .NET Framework APIs for dealing with the file system are not designed with testability in mind. Also, I wasn't happy with the existing libraries for providing an abstraction for such things. I wanted one that was:

  • Modern - Included the Enumerate* methods for example.
  • Interface based - Using Abstract base classes as the abstraction is blech.
  • Easy to port to - So it had to follow the existing APIs closely.

Rothko is this library. It provides abstractions for:

  • File system.
  • Registry
  • Environment.

The starting point for Rothko is the OperatingSystemFacade class. From there you can get to the other abstractions.

  • IFileSystem
  • IEnvironment
  • IRegistry

Goals

The goal is to use this in GitHub for Windows as well as any other applications where testability is important.

A secondary goal is to make it very easy to port code using the core .NET Framework APIs to port over to Rothko. The interfaces map closely to the .NET Framework's, except in a few places where I wouldn't be able to live with myself if I didn't modernize the library. For example, I updated methods that return arrays to return IEnumerable (or derived interface) instead.

Once these low level abstractions are implemented, I plan to add a set of Facade classes that provide a more usable API that we all wished had been there all along. These Facade classes will simply delegate to the lower-level abstractions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].