Olen tehnyt kotona pikku koodinpätkiä pikku asioiden tekemiseen, mutta nyt tuli tenkkapoo yhden Dash-skriptin kanssa. Olen lisännyt siihen toimintoja yksi kerrallaan, ja ohjaustietojen kokonaisuus alkaa olla liian monimutkainen dash-koodissa käsiteltäväksi. Skripti vaatii yhden parametrin, ja sen käyttöliittymä on pelkkä käynnistin, jonka kontekstivalikossa on joukko vaihtoehtoja parametrin arvoksi. Tähän en halua mitään muutosta, koska toiminnot sinänsä eivät ole monimutkaisia, vaan nimenomaan ne ohjaustiedot.
Ajattelin, että helpoin käyttöliittymä ohjaustietorakenteen ylläpitoon olisi JSON-tiedoston tms. muokkaus tekstieditorissa. En halua työkalulle uutta käyttöliittymää, minulle riittää oikein hyvin nykyinen käynnistin valikkoineen ja JSON-tiedosto. Dash-skriptin varsinaisen toimintalogiikan voin helposti kirjoittaa uusiksi sellaisella kielellä, jolla JSON-tiedoston lukeminen on helpompaa, esimerkiksi Perlillä.
JSON-tiedostojen käsittelyyn löytyy komentorivityökaluja, esimerkiksi
https://stedolan.github.io/jq/, mutta se ei riitä. Nimittäin kun suunnittelen ohjaustietorakenteen sellaiseksi, että tietojen ylläpito editorilla olisi mahdollisimman yksinkertaista, niin tietojen lukeminen skriptissä (kaikkine asiallisuustarkistuksineen) mene e vielä nykyistäkin monimtkaisemmaksi. Siihen tarkoitukseen jq ei taida olla sopiva.
Mietinkin voisiko hommaa virtaviivaistaa jollain välipalikalla, joka annetun parametrin perusteella poimisi tarvittavat ohjaustiedot ja samalla muuntaisi niiden keskinäisen rakenteen skriptin toimintalogiikan mukaiseksi. Ihan arvaamalla heitin Googleen hakusanat "json transpose", ja löysinkin juuri sopivan työkalun:
https://www.npmjs.com/package/json-transpose. Se muuntaa JSON-rakenteen toiseksi annetun mallineen mukaan. Olen käyttänyt JavaScriptiä vain pikkujuttuihin, joissa en ole tarvinnut mitään framework-virityksiä, enkä ole koskaan ajanut sitä komenoriviltä. Perlin CPAN-moduleista ei löydy ihan vastaavaa, ainakaan samoilla hakusanoilla, vaikka muuten JSON-moduleita löytyy turhankin monta.
Joudun nyt miettimään, miten monta uutta härveliä haluan opetella, että saan lopputuloksen pysymään pienenä ja yksinkertaisena. Minähän teen tätä vain itselleni, joten kannattaisi ehkä kuitenkin vain muuntaa Dash-koodi Perliksi ja lisätä sihen ohjaustietorakenteen muunnos suoraan Perlillä ilman uusia härpäkkeitä.
Tietääkö joku muita keinoja selvitä vähällä työllä? Olenko ajatellut tämän liian monimutkaisesti?