easybuild-org / easybuild-org/EasyBuild.FileSystemProvider

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

Abierto
#17 0 comentarios 0 reacciones 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
F#
Estrellas
35
Forks
2
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.