Pársování příkazové řádky a práce s adresáři pohodlně, přehledně - jaký jazyk vybrat?
Na linuxu máme takový rozsáhlejší projekt a jeho součístí je i pár skriptů, které na základě argumentů zakládají/klonují/ověřují gitové repozitáře. Poslední dobou těch skriptpů přibývá a požadavky se stávají komplexnějšími, tak přemýšlím nad redesignem celé této oblasti.
Ty skripty se skládají ze dvou částí
1) první poskládá z aktuálního adresáře a parametrů výsledné parametry (hlavní adresář, "uživatele" - subprojekt, zbytek cesty, server, nějaké názvy a další parametry) a pokud nastane chyba, tak ji nahlásí a celé to končí. Zatím je to v bashi, ale začíná být docela opruz to udržovat a rozčiřovat.
2) pokud vše proběhne dobře, druhá část dělá vlastní práci (nižší desítky volání programů, kopírování adresářů, zápisy, pipeliny s různými filtry a tak) - na ní není moc co vylepšovat a bash jí sedí.
Zatím vše fungovalo, ale jak se to rozrůstá, je ta první část několika násobně větší, než ta druhá, výkonná a navíc by se dala u těch skriptů sdílet, protože dělá v podstatě to samé, jen se to místy trochu liší (hlavně v helpu), ale to se dá snadno parametrizovat. A teď je tu řada požadavků, jak to rozhraní vylepšit (a různě se překrývají a duplikují, ale stroj se má přizpůsobit člověku, nikoli naopak).
Například jedna z "jednodušších" variant, kde se se podle různých priorit a heuristik doplňují jednotlivé části z aktuální cesty a parametrů má jako jeden z výstupů takovouto cestu k adresáři
~/{GIT|$ROOT}/{git/$user}/{$dir|`pwd`|PORTAGE}/category.projekt
("kupodivu" je výsledek přehledný a snadno používatelný, ale těch "uses-case" jak to zadávat a proč se za těch víc než 10 let co projekt žije nahromadilo spousta a každá má dobrý důvod)
Dále nutno říct, že ty samé skripty jsou volány i různých dalších programů v dávkovém režimu, takže musí být schopny běžet neinteraktivně - často u toho nebude ani člověk, ani klávesnice ani monitor. Změna API se dá do většiny těch programů nějak propasírovat, nebo častěji je naopak podmnožinou nového API, tam je to dobré.
Ale týmy se se teď dohadují, co všechno ještě by se hodilo a pokud to brzo nějak nerozetnu s tím, že tady je nový nástroj, umí to a to a používá se tak a tak a komu se to nelíbí, ať si založí oficiální ticket na změnu, tak zanedlouho vymyslí takový kolos, že do něj budu muset narvat i základní 3 Asimovovy zákony, jinak to špatně dopadne.
Takže řeším, jak udělat program/funkci/skript, který by si přehledně poradil se spoustou parametrů a dobře se v něm pracovalo se stringy a s adresářovou strukturou - a když už se to má psát vlastně od začátku, přeorganizovat a výrazně rozšířit, tak už stojí za to se zamyslet nad tím, v jakém jazyku to napsat. Různých jazyků jsem už používal spoustu, takže se nemusíte v návrzích omezovat (klidně od ASM po třeba lisp)
Jaký jazyk byste použili/doporučili pro tu první část vy a proč?