CLI nástroj
CLI (Command-Line Interface) nástroj je program ovládaný textovými príkazmi v termináli — bez grafického rozhrania. Výhodou je priamočiarosť, automatizovateľnosť a možnosť zaradiť ho do skriptov, CI/CD pipelines a plánovaných úloh.
Ako to funguje
Terminál je najstarší a stále jeden z najefektívnejších spôsobov, ako komunikovať s počítačom. CLI nástroj dostane vstup cez argumenty príkazového riadku a environment premenné, vykoná operáciu a vráti výsledok — do konzoly, do súboru alebo cez exit kód. Táto jednoduchosť je aj sila: CLI nástroj netreba nasadiť, netreba mu priradiť URL, nevyžaduje prihlásenie. Spustíte ho, urobí čo má, skončí.
Rozdiel medzi dobrým a zlým CLI nástrojom je v detailoch. Dobrý CLI nástroj má zmysluplné chybové hlášky s exit kódom 1 pri zlyhaní (aby skript vedel, že niečo zlyhalo), --help flag s popisom argumentov, a deterministické správanie — rovnaký vstup dá vždy rovnaký výstup. Zlý CLI nástroj ticho zlyhá, vypíše stack trace v produkčnom logu alebo ignoruje chybové vstupy bez upozornenia. V unixovej filozofii každý nástroj robí jednu vec dobre a jeho výstup možno previesť do ďalšieho nástroja cez pipe.
Typické prípady použitia: migrácie databázy (drizzle-kit migrate), seed databázy testovacími dátami, generovanie reportov z produkčných dát, synchronizácia obsahu medzi prostrediami, odosielanie dávkových emailov, spracovanie CSV súborov, interakcia s externými API bez písania webového formulára. Všetky tieto operácie by sa dali urobiť manuálne alebo cez webové rozhranie — ale CLI ich robí opakovateľne, auditovateľne a automatizovateľne.
Vlastný CLI nástroj na mieru dáva zmysel, keď sa opakujúca operácia nedá jednoducho pokryť existujúcim nástrojom. Príklady: import dát zo starého systému pri migrácii klienta, generovanie šablón dokumentov podľa konfigurácie, správa multi-tenant databázy s operáciami naprieč tenantmi. CLI nástroj sa dá napísať v TypeScript (Node.js) s knižnicou ako commander.js alebo yargs, v Go pre staticky linkovaný binárny súbor bez závislostí, alebo ako jednoduchý Bash skript pre triviálne prípady.
Z našej praxe
V Strange Loops tvoríme CLI nástroje ako súčasť väčšiny interných projektov. Pre rehabit (klinický IS pre SylvoRehab) sme vytvorili CLI na import historických dát pacientov zo starého systému — nástroj spracoval CSV súbory, transformoval dáta, overil integritu a naplnil PostgreSQL databázu. Pre QualiTravel máme CLI na správu multi-tenant databázy — pridanie nového tenanta, nastavenie počiatočnej konfigurácie, seed testovacích dát pre staging. Všetky píšeme v TypeScript s commander.js a spúšťame cez tsx (priamo bez kompilácie). CLI nástroje sú tiež súčasťou CI/CD — drizzle-kit migrate sa spúšťa automaticky pri každom nasadení.
Kedy to potrebujete
- Importujete dáta zo starého systému pri migrácii klienta — jednorázová, ale komplexná operácia kde CLI dáva kontrolu a auditovateľnosť
- Potrebujete opakujúce sa operácie (seed databázy, generovanie reportov) zaradiť do CI/CD pipeline alebo cronu bez webového servera
- Vývojový tím potrebuje interný nástroj na správu prostredia — pridanie používateľa, reset hesla, kontrola stavu systému
- Spracovávate dátové súbory (CSV, JSON export) a transformujete ich do formátu vhodného pre import do databázy alebo externej služby
Najčastejšie otázky
V čom sa píšu CLI nástroje?
Závisí od požiadaviek. TypeScript/Node.js je najpohodlnejší, ak projekt už beží na Node — zdieľate typy, ORM, validačné schémy. Go produkuje staticky linkovaný binárny súbor bez závislostí, ktorý sa distribuuje jednoduchšie. Bash je vhodný pre jednoduché skriptovanie príkazov shellu. Pre väčšinu interných nástrojov v Strange Loops volíme TypeScript, pretože zdieľa ekosystém s ostatným kódom projektu.
Ako zaradím CLI nástroj do cronu alebo CI/CD?
CLI nástroj je spustiteľný príkaz — zaradíte ho rovnako ako akýkoľvek iný príkaz. V GitHub Actions ho zavoláte v kroku run:. V cronte (systemd timer alebo crontab) definujete plán a príkaz. Dôležité je, aby nástroj vracal správny exit kód: 0 pri úspechu, nenulový pri chybe — cron a CI/CD systémy podľa neho detekujú zlyhanie.
Kedy je lepší CLI ako webové rozhranie?
CLI je lepší pre operácie, ktoré sa opakujú, automatizujú alebo vykonávajú v produkčnom prostredí bez grafického prehliadača. Webové rozhranie je lepšie pre operácie, kde je dôležitý vizuálny prehľad, potvrdenie používateľa alebo prístup pre netechnických ľudí. V praxi sa tieto dve veci dopĺňajú — admin panely majú bežné operácie v UI, výnimočné alebo dávkové operácie v CLI.
Súvisiace pojmy
Docker
Docker je platforma na kontajnerizáciu — zabalenie aplikácie spolu s jej závislosťami, konfiguráciou a runtime prostredím do prenositeľného kontajnera, ktorý beží identicky na laptope vývojára, CI serveri aj v produkcii.
CI/CD
CI/CD (Continuous Integration / Continuous Delivery) je prax automatického overovania a nasadzovania kódu po každej zmene — CI zabezpečí, že nový kód nerozbíja existujúcu funkcionalitu, CD ho automaticky dostane do produkcie bez manuálneho zásahu.
API
API (Application Programming Interface) je formálne definované rozhranie, cez ktoré jeden softvér komunikuje s druhým. Webové API typicky prenáša dáta cez HTTP vo formáte JSON — klient pošle požiadavku, server vráti odpoveď, pričom ani jeden nemusí vedieť nič o vnútornej implementácii toho druhého.
Potrebujete s tým pomôcť?
Ak riešite niečo z toho, čo tu opisujeme, ozvite sa. Povieme vám, či a ako vieme pomôcť.