GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - haacked/Rothko: An abstracted library for interacting with the file system, registry, etc.

BranchesTags
Open more actions menu

Latest commit

 

History

171 Commits
171 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
.vs/Rothko/v15/sqlite3
.vs/Rothko/v15/sqlite3
 
 
Tests
Tests
 
 
script
script
 
 
src
src
 
 
tools
tools
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CodeAnalysisDictionary.xml
CodeAnalysisDictionary.xml
 
 
LICENSE-MIT.txt
LICENSE-MIT.txt
 
 
README.md
README.md
 
 
ReleaseNotes.md
ReleaseNotes.md
 
 
Rothko-core.sln
Rothko-core.sln
 
 
Rothko.nuspec
Rothko.nuspec
 
 
Rothko.ruleset
Rothko.ruleset
 
 
Rothko.sln
Rothko.sln
 
 
SolutionInfo.cs
SolutionInfo.cs
 
 
appveyor.yml
appveyor.yml
 
 
rothko-icon.png
rothko-icon.png
 
 

Repository files navigation

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.

About

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

Topics

c-sharpfilesystemtestability

Resources

Readme
MIT license

Code of conduct

Code of conduct
Activity

Stars

81 stars

Watchers

7 watching

Forks

18 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.