Skip to content

Command config#2

Merged
adamgracikowski merged 7 commits into
developfrom
feature/command-config
Jul 21, 2025
Merged

Command config#2
adamgracikowski merged 7 commits into
developfrom
feature/command-config

Conversation

@adamgracikowski
Copy link
Copy Markdown
Contributor

Co w PR?

Zmiany w cli:

  • Polecenie config wraz ze wszystkimi sub-poleceniami (tak jak w config.md).
  • Jedyny wyjątek stanowi brak flagi --system (jest --local, --global oraz --file), ponieważ myślę, że konfiguracja lokalna i globalna dla wszystkich repozytoriów wystarczy jako funkcjonalność plików konfiguracyjnych 😅.
  • Dodałem moduł extensions i umieściłem tam powtarzające się konfiguracje opcji (bo każda z sub-poleceń dla config miała flagi z lokalizacją pliku). W tym module możemy umieszczać implementacje naszych traitów dla istniejących typów (tak jest już dla command i arg_matches.

Zmiany w engine:

  • Zamiast YAML zdecydowałem się jednak na TOML, bo bardziej przypomina plik konfiguracyjny (+ była fajna biblioteczka toml_edit, która zachowuje komentarze w przeciwieństwie do toml, które jest sugerowane przez serde).
  • Moduł config zawiera całą logikę faktycznego zarządzania plikami konfiguracyjnymi, czyli mamy abstrakcję dokumentu, enum z lokalizacją, trait-a definiującego operacje na dokumencie i enum określający lokalizacją (z konwersją na ścieżkę).
  • Jest też kolejny enum ConfigError z różnymi błędami jakie tam się w kodzie mogą pojawiać.

Zmiany w shared:

  • Tutaj niewiele, bo tylko trait UpwardSearch, który przy pomocy biblioteczki up_finder (mało znana, ale działa w porządku) znajduje pliki i foldery w górę drzewka plików.
  • To jest nam potrzebne do znajdowania folderu .meva startując w current working directory (a mi niedługo będzie również potrzebne do znajdowania plików .mevaignore)

Uwaga:

  • Dodałem komentarze pod różnymi trait-ami, metodami itp. (chyba lepiej jest to robić od razu, niż potem na koniec dokumentować całość - tym bardziej, że z komentarzami pewnie łatwiej się sprawdza PR)
  • Testy są troszkę ubogie, bo niektóre rzeczy całkiem ciężko przetestować w kodzie (ale moje testy manualne mówią, że modyfikowanie configa działa całkiem przyjemnie).
  • Ewentualnie jeżeli będziesz się upierał, to mogę ich dorobić więcej (lub troszkę wygenerować 👀)?

Comment thread engine/src/config/config_document.rs Outdated
Comment thread engine/src/config/config_location.rs
Comment thread cli/src/commands/config/subcommands/list.rs
@adamgracikowski
Copy link
Copy Markdown
Contributor Author

gotowe, poprawki spushowane 🤙

@adamgracikowski adamgracikowski merged commit ba36609 into develop Jul 21, 2025
1 check passed
@adamgracikowski adamgracikowski deleted the feature/command-config branch July 21, 2025 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants