easybuild-org / easybuild-org/EasyBuild.FileSystemProvider

Explore the idea of returning `DirectoryInfo` or `FileInfo` instead of `string`

オープン
#17 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement
主要言語
F#
スター
35
フォーク
2
PR マージ指標
30日以内にマージされた PR はありません

説明

The more I use this project, the more I find myself needing to transform the `string` into a `DirectoryInfo` or `FileInfo` which better represents a directory or file.

Indeed, a `string` is not well typed in term of Domain and can be anything.

Access a the `string` representation from both these types is easy enough by using `.FullName` where the other direction is a bit more convoluted.

I am wondering if we should not convert the TP to expose these return type instead of the string.

Ideas:

1. We go full breaking change and only expose `DirectoryInfo` or `FileInfo` API
2. We look to see if it is possible make `RelativeFileSystem` and `RelativeFileSystem` take an argument to configure their output
3. We create 2 modules to split the API and the user can choose the version he prefers:

```fs
module EasyBuild.FileSystemProvider.Typed
// or
module EasyBuild.FileSystemProvider.Infos

type RelativeFileSystemProvider(config: TypeProviderConfig) =
// ...
// Returns `DirectoryInfo` or `FileInfo`

module EasyBuild.FileSystemProvider.UnTyped
// or
module EasyBuild.FileSystemProvider.Simple
// or
module EasyBuild.FileSystemProvider.Strings

type RelativeFileSystemProvider(config: TypeProviderConfig) =
// ...
// Returns `DirectoryInfo` or `FileInfo`
```

I think I am in favor of option 1, because if people want to access the string value they just need to add `.FullName` and it makes less code to maintain 😇

Note: In regard of https://github.com/easybuild-org/EasyBuild.FileSystemProvider/issues/3, I think we will expose these APIs:

```fs
Workspace.src.``.``

// One of these variations
Workspace.src.GetInfos()
Workspace.src.Infos()
```

@shayanhabibi @JordanMarr Any opinions?

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。