Zajmuję się tworzeniem skryptu zarządzania, który wykonuje dość dużą ilość pracy za pomocą mnóstwa opcji wiersza poleceń. W pierwszych kilku iteracjach skryptu wykorzystano optparse do zbierania danych wprowadzanych przez użytkownika, a następnie po prostu spuszczamy stronę, testując wartość każdej opcji w odpowiedniej kolejności i wykonując akcję w razie potrzeby. Doprowadziło to do dżungli kodu, który jest naprawdę trudny do odczytania i utrzymania.przetwarzanie wiersza komend przez introspekcję
Szukam czegoś lepszego.
Mam nadzieję, że będę miał system, w którym będę mógł pisać funkcje w mniej lub bardziej normalnej formie python, a następnie po uruchomieniu skryptu będę miał opcje (i tekst pomocy) generowane z moich funkcji, parsowane i wykonywane w odpowiednie zamówienie. Dodatkowo, naprawdę chciałbym, aby móc budować interfejsy sub-Command Django stylu, gdzie myscript.py install
działa całkowicie niezależnie od myscript.py remove
(oddzielne opcje, pomoc, itp)
Znalazłem simon willison's optfunc i robi dużo z tego, ale wydaje się, że po prostu brakuje znaku - chcę napisać każdą OPCJĘ jako funkcję, zamiast próbować skompresować cały zestaw opcji w ogromny ciąg opcji.
Wyobrażam sobie architekturę obejmującą zestaw klas dla głównych funkcji i każdej zdefiniowanej metody klasy odpowiadającej konkretnej opcji w linii poleceń. Ta struktura ma tę zaletę, że każda opcja znajduje się w pobliżu kodu funkcjonalnego, który modyfikuje, co ułatwia utrzymanie. Rzecz, z którą nie wiem, jak sobie poradzić, to porządkowanie poleceń, ponieważ porządkowanie metod klasowych nie jest deterministyczne.
Zanim przejdę do odrodzenia koła: Czy istnieją inne istniejące fragmenty kodu, które zachowują się podobnie? Inne rzeczy, które można łatwo zmodyfikować? Zadawanie tego pytania wyjaśniło moje własne zdanie na temat tego, co byłoby miłe, ale informacja zwrotna na temat tego, dlaczego jest to okropny pomysł, lub jak powinna działać, byłaby mile widziana.
Dzięki, wydaje się, że to dobra rada. –
To jest doskonałe! –