CLI Design Pattern#1
Conversation
…mmand and refactor error handling with miette
|
Już się tak nie definiuje modułów w ruscie, to stary sposób .
└── src/
├── utils/
│ ├── bar.rs
│ ├── foo.rs
│ └── mod.rs
└── main.rszalecane jest to robić w taki, nowszy sposób: .
└── src/
├── utils/
│ ├── bar.rs
│ └── foo.rs
├── utils.rs
└── main.rshttps://stackoverflow.com/questions/26435102/in-rust-what-is-the-purpose-of-a-mod-rs-file Lepiej żebyśmy używali tego nowego podejścia |
spoko, to poprawię wszędzie |
|
już nie ma ani jednego |
|
Zmieniłem implementację |
Co w PR?:
Zmiany w
cli:MevaCommandjako abstrakcję dla polecenia w naszym systemie (wykorzystuje clap builder-pattern).engine).init(wszystkie opcje i funkcjonalności zgodnie ze speckąinit.md).enginei owijamy ewentualny błąd.Zmiany w
engine:RepositoryLayoutto trait, przy pomocy którego łatwo odwołujemy się do struktury naszego repozytorium.MevaRepositoryto struktura implementującaRepositoryLayoutoraz posiadająca metodęinit.working_diro typie PathBuf.initna ten moment tworzy taką strukturę:create_dirsorazcreate_filesi dodać je do layout-u repo)Uawga: Na ten moment w przypadku błędu w momencie tworzenia struktury repozytorium nie ma logiki typu
rollback, więc może się zdarzyć, że repozytorium będzie w niespójnym stanie (do zastanowienia, czy już teraz chcemy zająć się tą transakcyjnością, o której rozmawialiśmy).