Ustawienia projektu
Plik ustawień jest opcjonalny: bez niego wbudowane domyślne ustawienia wchodzą w życie, a dzięki niemu można nadpisać część zachowania.
Domyślne kategorie i katalog wyników są w większości przypadków w porządku, ale
Czasem warto je ustawić — na przykład rozłożone pliki nie powinny trafiać do
Sorted/, a do katalogu o innej nazwie. Bez pliku konfiguracyjnego
SafeSort używa wartości wbudowanych:
destination = "Sorted"
exclude = [".git", ".venv"]
Aby je zmienić, SafeSort szuka opcjonalnego pliku
safesort.toml bezpośrednio w głównym katalogu skanowanym:
| Sytuacja | Co się stanie |
|---|---|
| safesort.toml jest u podstaw katalogu | czytać i stosować ustawienia |
| safesort.toml nieobecny | używanie wbudowanych ustawień domyślnych |
destination = "Organized"
exclude = [".git", ".venv"]
[extensions]
books = [".epub"]
Tabela [extensions] działa jako overlay. String
books = [".epub"] dodaje kategorię books i nie usuwa
documents lub images. Jeśli użytkownik ustawia to wyraźnie
documents = [".md"]tylko lista documents zostanie wymienionych.
plan, apply i ponownym uruchomieniu konfiguracja pozostaje na bazie głównej, więc następne uruchomienie ma te same ustawienia.safesort.toml nie znaleziono, używa się wbudowanych ustawień domyślnych. Program działa przewidywalnie i bez żadnej linii ustawień. Plik konfiguracyjny nadpisuje defaults, ale nie jest warunkiem wstępnym do uruchomienia.Odczyt pliku używa tomllib, standard
Biblioteki parsowania tylko do odczytu Python TOML:
def load_config(root: Path) -> Config:
config_path = root / "safesort.toml"
if not config_path.is_file():
return Config()
try:
with config_path.open("rb") as handle:
raw = tomllib.load(handle)
except tomllib.TOMLDecodeError as exc:
raise ConfigError(f"Could not parse config file {config_path}: {exc}") from exc
# ...
open("rb"), nie open("r"): tomllib decyduje, jak zdekodować bajty pliku na tekst zgodnie ze specyfikacją TOML, więc oczekuje binarnego strumienia jako wejścia, a nie już odczytanego łańcuch znaków.Jeśli plik ustawień istnieje, ale zawiera niepoprawny TOML, SafeSort nie próbuje zgadywać zamiaru użytkownika. Wyświetla zrozumiały błąd
ConfigError z plikiem i powodem, zamiast odpadać
trudne do odczytania prześladowanie lub ciche kontynuowanie z domyślnymi ustawieniami.