fsprojects / Paket

A dependency manager for .NET with support for NuGet packages and Git repositories.
https://fsprojects.github.io/Paket/
MIT License
2.02k stars 523 forks source link

Refactor "layers" into folders #488

Closed forki closed 9 years ago

forki commented 9 years ago

We already have a somehow implicit layer architecture in the core project. Low level functions are on the top of the project, commands in the middle and public api on the bottom.

I think we should make this more explicit and introduce folders. What do people think? Is there a suggested folder structure?

/cc @mexx @theimowski @isaac_abraham

theimowski commented 9 years ago

I'm ok with folders. Also as speaking of layers and in context of #476 I'm working on a concept of Paket Environment (not sure yet if the name's ok). Basically I'd like to have type representation of codebase under Paket control, this is what I imagine it to look like:

type Environment = {
    RootDirectory : DirectoryInfo
    DependenciesFile : DependenciesFile
    LockFile : LockFile
    Projects : list<ProjectFile * ReferencesFile>
}

With that, we could go towards modelling the commands using this representation on a high-level perspective. Sorry if that's offtopic

forki commented 9 years ago

Oh that type looks nice.

mexx commented 9 years ago

Currently I would not introduce folders, the Paket.Core project with 43 .fs files is small enough for me to find the stuff I'm working with. Further I would prefer to go more in the direction of Hexagonal Architecture rather than layers. With it I would group stuff by purpose rather than by level of abstraction.