Partoska Laboratory
$ bikiniv2.0.2

Bikini

Malý nástroj a knihovna jazyka C pro dotazy do souborů INI na macOS, Linuxu a Windows. Čtěte, vypisujte, slučujte, nastavujte a mažte hodnoty INI z příkazové řádky, takže vaše shellové skripty už nepotřebují sed ani awk.

Dotazy do INIKnihovna C99Open Source (MIT)macOS · Linux · Windows
bikini — terminál

# Instalace přes npm (nebo Homebrew, Scoop, balíčky).

$ npm install -g @partoska/bikini

# Přečtení jedné hodnoty.

$ bikini server.port app.ini
8080

# Výpis klíčů sekce.

$ bikini -k server app.ini
host
port

# Změna hodnoty v souboru.

$ bikini -w -s 9090 server.port app.ini

Proč Bikini?

Malý a bez závislostí

Jeden nástroj a jedna knihovna v C99, které potřebují jen standardní knihovnu C. Sestavíte je pomocí GCC, Clang nebo MSVC a poběží od Raspberry Pi až po počítač s Windows.

Ptejte se na to, co potřebujete

Vyžádejte si celý dokument pomocí ., jednu sekci pomocí SECTION nebo jednu surovou hodnotu pomocí SECTION.KEY. Názvy, které obsahují tečky, dejte do uvozovek.

Seznamy pro shellové cykly

Parametr -k vypíše sekce dokumentu nebo klíče sekce, jeden na řádek, připravené pro cyklus for.

Opakované sekce a klíče

S parametrem --multi se sekce i klíče smějí opakovat, třeba v seznamech argumentů procesů. Každé opakování určíte jeho indexem, například web[0].Arg[1], nebo všechna najednou pomocí [*].

Slučování vrstvených konfigurací

Zadejte více souborů a Bikini je sloučí v daném pořadí. Pozdější hodnoty nahrazují dřívější, takže místní úpravy leží nad sdílenými výchozími hodnotami.

Nastavení a mazání

Klíče nastavíte pomocí parametru -s a klíče nebo sekce smažete pomocí parametru -d. Výsledek vypište, nebo ho pomocí parametru -w zapište zpět do souboru.

Návratové kódy pro skripty

0 nalezeno, 1 nenalezeno, 2 chyba použití nebo vstupu. Chyby jdou na standardní chybový výstup, takže standardní výstup obsahuje jen odpověď.

Platný výstup INI

Sekce a dokumenty se vypisují jako normalizované INI. Pošlete výstup jednoho bikini do dalšího, nebo ho uložte jako nový soubor.

Váš oddělovač

Výstup ve výchozím stavu zapisuje key = value. Pomocí parametru --delimiter zvolíte jiný oddělovač, například = pro key=value, aby soubor zůstal ve stylu programu, který ho čte.

Připraveno pro AI agenty

Bikini obsahuje skill pro AI agenty. Nainstalujete ho jedním příkazem a AI agenti pro programování, jako jsou Claude Code a Codex, pak umí číst a upravovat vaše soubory INI přesnými příkazy.

$ npx skills add partoska/bikini
Získat skill Bikini

Jeden nástroj, jedna knihovna

Příkaz bikini je tenká vrstva nad knihovnou libbikini. Příkaz použijte ve shellových skriptech a rourách, nebo knihovnu přilinkujte do vlastního programu v C.

Nástroj příkazové řádky

Čte soubory nebo standardní vstup, vypíše přesně to, co dotaz vybere, a upravuje klíče a sekce. Je určený pro shellové skripty, Makefiles a CI úlohy.

$ bikini server.port app.ini

Knihovna C

Čte a zapisuje běžný dialekt INI a zachovává pořadí sekcí a klíčů ze souboru. Sama nic nevypisuje: chyby ukládá do dokumentu i s číslem řádku.

#include <bikini.h>

Rychlý start

Od instalace ke čtení a změně konfiguračního souboru v pěti krocích.

  1. Nainstalujte bikini

    Nainstalujte CLI a ověřte verzi. Dáváte přednost Homebrew, Scoop nebo nativnímu balíčku? Podívejte se na možnosti instalace.

    $ npm install -g @partoska/bikini
    $ bikini -V
  2. Vytvořte konfigurační soubor

    Zapište malý soubor INI, na kterém dotazy vyzkoušíte. Poslouží i jakýkoli existující soubor .ini, .cfg nebo .conf se sekcemi.

    $ printf '[server]\nhost = example.com\nport = 8080\n' > app.ini
  3. Přečtěte hodnotu

    Vypište jednu surovou hodnotu a pak celou sekci jako text INI.

    $ bikini server.port app.ini
    $ bikini server app.ini
  4. Vypište názvy

    Vypište sekce dokumentu pomocí ., nebo klíče jedné sekce.

    $ bikini -k . app.ini
    $ bikini -k server app.ini
  5. Změňte hodnotu

    Nastavte novou hodnotu, pomocí parametru -w ji zapište zpět do souboru a pak ji přečtěte znovu.

    $ bikini -w -s 9090 server.port app.ini
    $ bikini server.port app.ini

Příklady

Vypište celý dokument, jednu sekci nebo jednu hodnotu. Celý název sekce má přednost před rozdělením na tečce, jinak klíč následuje za poslední tečkou. Pokud klíč obsahuje tečku, dejte názvy do uvozovek, a pomocí parametru -i můžete ignorovat velikost písmen.

app.ini
; Comments take a whole line and start with ; or #.[server]host = example.comport = 8080debug = true [database.primary]host = db.localmax-connections = 100 [logging]handler.file = /var/log/app.loglevel = info
$ bikini . app.ini
$ bikini server app.ini
$ bikini server.port app.ini
$ bikini database.primary.max-connections app.ini
$ bikini 'logging."handler.file"' app.ini
$ cat app.ini | bikini -i SERVER.HOST

Další možnosti najdete v dokumentaci.

Instalace

Vyberte způsob, který vyhovuje vašemu systému. Každá možnost nainstaluje stejný nástroj bikini.

$ brew install partoska/tap/bikini

Pro macOS a Linux na x64 a ARM64.

Příkazy používají nejnovější verzi 2.0.2. Všechny soubory a kontrolní součty SHA256 najdete na stránce vydání.

Přidejte skill pro AI agenty

Nechte AI agenty pro programování, jako jsou Claude Code a Codex, ovládat bikini za vás. Instalátor přidá skill Bikini do adresáře se skilly vašeho agenta. V Claude můžete také nahrát soubor bikini_2.0.2_skill.zip ze stránky vydání jako vlastní skill. Nejdřív nainstalujte samotné bikini.

$ npx skills add partoska/bikini

Přehled

Spusťte bikini [OPTIONS] [QUERY] [FILE...]. Přečte každý FILE v daném pořadí, nebo standardní vstup, pokud žádný soubor nezadáte nebo je soubor -. Vestavěnou nápovědu zobrazíte příkazem bikini -h.

Dotazy

.
Celý dokument, normalizovaný (výchozí).
SECTION
Jedna sekce jako text INI.
SECTION.KEY
Surová hodnota klíče.
"NAME"
Název sekce nebo klíče v uvozovkách, který může obsahovat tečky. V uvozovkách se escapují \" a \\.
NAME[N], [*]
S --multi: opakování N daného názvu počítané od 0, nebo všechna opakování pomocí [*]. Index potřebuje každý název, například SECTION[N].KEY[M].

Návratové kódy

0
Nalezeno, nebo se úprava povedla.
1
Nenalezeno, včetně mazání něčeho, co neexistuje, nebo nastavení neexistující hodnoty s --multi.
2
Chyba použití nebo vstupu, včetně syntaktických chyb INI s číslem řádku na standardním chybovém výstupu.

Parametry

-k, --keys
Vypíše sekce dokumentu, nebo klíče sekce SECTION.
-s, --set VALUE
Nastaví SECTION.KEY na zadanou hodnotu a vypíše dokument. S --multi jen nahradí existující hodnotu.
--add VALUE
S --multi: přidá hodnotu za poslední hodnotu SECTION[N].KEY, nebo založí novou sekci, pokud je N o jedna za posledním.
-d, --delete
Smaže SECTION nebo SECTION.KEY a vypíše dokument. S --multi smaže [*] všechna opakování.
-w, --write
Zapíše úpravu zpět do FILE místo jejího vypsání. Vyžaduje právě jeden soubor.
-i, --ignore-case
Porovnává sekce a klíče bez ohledu na velikost písmen (ASCII).
--multi
Povolí opakované sekce a klíče a spojí více souborů, jako by šlo o jeden.
--delimiter TEXT
Zapíše zadaný text mezi klíč a hodnotu: = nebo : s volitelnými mezerami.
-h, --help
Zobrazí nápovědu.
-V, --version
Zobrazí verzi.

Knihovna

bkInit, bkDestroy
Vytvoří a uvolní dokument. Příznak BK_FICASE zapne porovnávání názvů bez ohledu na velikost písmen a BK_FMULTI povolí opakování.
bkLoad, bkSave
Načte dokument ze souboru, nebo ho do souboru uloží.
bkRead, bkWrite
Načte nebo zapíše text přes vaše vlastní callbacky: standardní vstup, socket nebo paměť.
bkParse
Zpracuje text INI z řetězce.
bkGet, bkSet
Přečte nebo nastaví hodnotu klíče. Nastavení přidá chybějící sekci i klíč.
bkRemove
Smaže klíč. Funkce bkSectionRemove smaže celou sekci.
bkSectionAt
Prochází sekce v pořadí dokumentu. bkSectionFind najde sekci podle názvu.
bkKeyAt, bkValueAt
Prochází klíče a hodnoty sekce v pořadí dokumentu.
bkGetNth, bkAdd
S BK_FMULTI přečte opakování podle indexu nebo přidá další hodnotu. Takový index berou všechny funkce končící na Nth.
bkSetDelimiter
Zvolí, co se při zápisu dokumentu vloží mezi klíč a hodnotu.
bkError
Vrátí poslední chybu se stavem, číslem řádku a zprávou.

Celé API najdete v souboru bikini.h. Vložte bikini.h a linkujte pomocí pkg-config --cflags --libs bikini.

Použití

Skripty a provoz

  • →Čtěte nastavení ze souborů INI ve shellových skriptech, Makefiles a CI úlohách bez sed nebo awk.
  • →Položte místní úpravy na sdílené výchozí hodnoty a vypište sloučený výsledek.
  • →Aktualizujte jeden klíč v konfiguračním souboru během nasazení nebo přípravy serveru.

Vývoj

  • →Přidejte konfiguraci INI do programu v C nebo C++ s jednou malou knihovnou bez závislostí.
  • →Čtěte konfiguraci z paměti, socketu nebo standardního vstupu přes callbacky pro streamy.
  • →Nechte AI asistenta pro programování číst a měnit konfigurační soubory přesnými příkazy místo úprav textu.

Technické specifikace

JazykC99
LicenceMIT
Verze2.0.2
PlatformamacOS 11+, Linux (x64, ARM64, ARMv6+), Windows (x64, ARM64)
ZávislostiStandardní knihovna C
SestaveníCMake 3.20+ nebo Make

Čtěte konfiguraci, ne regulární výrazy.

Nainstalujte Bikini jedním příkazem a svou první hodnotu INI přečtete během pár sekund.

Prohlédněte si zdrojový kód na GitHubu, stáhněte balíček z npm, přečtěte si dokumentaci nebo přidejte skill pro AI agenty.