| Crates.io | amisgitpm |
| lib.rs | amisgitpm |
| version | 0.0.1 |
| created_at | 2022-12-27 17:02:39.16779+00 |
| updated_at | 2022-12-27 17:02:39.16779+00 |
| description | A collection of traits for creating a project manager |
| homepage | |
| repository | https://github.com/david-soto-m/amisgitpm |
| max_upload_size | |
| id | 746335 |
| size | 22,013 |
This project only provides traits. The idea behind this is that a complete implementation can have pieces from several other implementations and still work, only having to rewrite parts of it.
A project manager executable that implements all the traits can do six things:
It divides the implementations in three parts
It is composed by tree traits and an error enum
The first trait is the PMOperations. It handles the "low level" stuff, so
that the other traits have really easy implementations
The PMProgramatic and the PMInteractive define methods to achive the six
tasks in different ways. PMProgramatic is oriented towards being an API for
programmers interacting with the project manager, and PMInteractive is
oriented towards being used by a CLI application or some other way to interact
with final users.
agpm_pm::ProjectManager is a struct that implements all three traits
It is the PMDirs trait
The directories are where the store should write its stuff and where the project manager should put the projects.
The project manager uses three different directories
A structure that implements this trait is the agpm_dirs::PMDirsImpl
The store is how the project configurations are stored. It holds two traits
ProjectT and ProjectStore
The first is a trait that allows the project manager traits to interact with individual project configurations and setups.
The second trait allows project managers to store new projects, and delete them.
The types that implement these traits are agpm_project::Project and
agpm_store::ProjectStore