2022-09-02 14:54:37 +00:00
|
|
|
# MfGames.IO CIL
|
2021-09-11 05:54:27 +00:00
|
|
|
|
2021-09-11 06:18:16 +00:00
|
|
|
This a small collection of classes and extensions to make working with System.IO a little bit easier.
|
2021-12-07 03:19:34 +00:00
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
At the moment, this library is not on [NuGet.org](https://nuget.org/). Instead,
|
|
|
|
it is hosted at [MyGet](https://www.myget.org/feed/Packages/mfgames).
|
|
|
|
|
|
|
|
```
|
2022-09-02 14:54:37 +00:00
|
|
|
dotnet add package MfGames.IO --source https://www.myget.org/F/mfgames/api/v3/index.json
|
2021-12-07 03:19:34 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
The repository can also be added to a project by setting the `NuGet.Config` file.
|
|
|
|
|
|
|
|
```
|
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<configuration>
|
|
|
|
<packageSources>
|
|
|
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
|
|
|
<add key="mfgames" value="https://www.myget.org/F/mfgames/api/v3/index.json" protocolVersion="3" />
|
|
|
|
</packageSources>
|
|
|
|
</configuration>
|
|
|
|
```
|
|
|
|
|
|
|
|
## Extensions
|
|
|
|
|
2021-12-07 04:28:37 +00:00
|
|
|
### Assembly Extensions
|
|
|
|
|
|
|
|
#### `DirectoryInfo? GetDirectory(this Assembly? assembly)`
|
|
|
|
|
2021-12-07 05:15:42 +00:00
|
|
|
Gets a directory containing the assembly directory.
|
|
|
|
|
|
|
|
#### `FileInfo? GetFile(this Assembly? assembly)`
|
|
|
|
|
|
|
|
Gets a file representing the assembly's `Location` property or null.
|
2021-12-07 04:28:37 +00:00
|
|
|
|
2021-12-07 03:19:34 +00:00
|
|
|
### DirectoryInfo Extensions
|
|
|
|
|
|
|
|
#### `DirectoryInfo? CreateIfMissing(this DirectoryInfo? directory)`
|
|
|
|
|
|
|
|
Creates `directory` if it doesn't exist and `directory` is not null. This will
|
|
|
|
also create any parent directories to duplicate the `mkdir -p directory`
|
|
|
|
functionality that inspired it.
|
|
|
|
|
|
|
|
#### `DirectoryInfo? FindGitRoot(this DirectoryInfo?)`
|
|
|
|
|
|
|
|
Finds the Git root from the given directory, using `FindSelfOrParent`.
|
|
|
|
|
|
|
|
#### `DirectoryInfo? FindParent(this DirectoryInfo?, Func<DirectoryInfo, bool> match)`
|
|
|
|
|
|
|
|
Finds a parent directory that returns true from the given `match`. This does not
|
|
|
|
check the given `directory`, but only parents. If none are found, this returns
|
|
|
|
null.
|
|
|
|
|
|
|
|
#### `DirectoryInfo? FindSelfOrParent(this DirectoryInfo?, Func<DirectoryInfo, bool> match)`
|
|
|
|
|
|
|
|
Finds a parent directory that returns true from the given `match`. This checks
|
|
|
|
the given `directory` before going to parents. If none are found, this returns
|
|
|
|
null.
|
|
|
|
|
|
|
|
#### `DirectoryInfo GetDirectory(this DirectoryInfo directory, string[] paths)`
|
|
|
|
|
|
|
|
The equivalent of `new DirectoryInfo(Path.Combine(directory.FullName, ...paths))`.
|
|
|
|
|
|
|
|
#### `FileInfo GetFile(this DirectoryInfo directory, string[] paths)`
|
|
|
|
|
|
|
|
The equivalent of `new FileInfo(Path.Combine(directory.FullName, ...paths))`.
|
|
|
|
|
|
|
|
#### `bool IsGitRoot(this DirectoryInfo? directory)`
|
|
|
|
|
|
|
|
Returns `true` if the given directory is non-null and contains the `.git` folder.
|
|
|
|
Otherwise, returns false.
|
|
|
|
|
|
|
|
### FileInfo Extensions
|
|
|
|
|
|
|
|
#### `string ReadAllText(this FileInfo file)`
|
|
|
|
|
|
|
|
The same as `File.ReadAllText(file.GetFullPath)`.
|
|
|
|
|
|
|
|
#### `string ReadAllText(this FileInfo file, Encoding encoding)`
|
|
|
|
|
|
|
|
The same as `File.ReadAllText(file.GetFullPath, encoding)`.
|
|
|
|
|
|
|
|
#### `void WriteAllText(this FileInfo file, string text)`
|
|
|
|
|
|
|
|
The same as `File.WriteAllText(file.GetFullPath, text)`.
|
|
|
|
|
|
|
|
#### `void WriteAllText(this FileInfo file, string text, Encoding encoding)`
|
|
|
|
|
|
|
|
The same as `File.WriteAllText(file.GetFullPath, text, encoding)`.
|
2021-12-07 05:37:04 +00:00
|
|
|
|
|
|
|
### Type Extensions
|
|
|
|
|
|
|
|
#### `DirectoryInfo? GetDirectory(this Type? type)`
|
|
|
|
|
|
|
|
Gets a directory containing the type's assembly directory.
|
|
|
|
|
|
|
|
#### `FileInfo? GetFile(this Type? type)`
|
|
|
|
|
|
|
|
Gets a file representing the type's assembly's `Location` property or null.
|