
# CLI

shikiphp vključuje majhno orodje ukazne vrstice na lokaciji `bin/shikiphp` (v projektu je nameščeno kot `vendor/bin/shikiphp`). Ima tri ukaze: `highlight` izriše eno datoteko v HTML, `langs` in `themes` pa izpišeta vsebino paketa.

## `highlight`

Označite datoteko v HTML in jo izpišite v standardni izhod.

```bash
vendor/bin/shikiphp highlight <file> [--lang=<lang>] [--theme=<theme>]
```

- `<file>` — pot do datoteke za branje. Datoteka mora obstajati; standardni vhod se ne bere.
- `--lang` — ID ali vzdevek jezika. Če ga izpustite, se kot ID uporabi končnica datoteke nespremenjena (če je ni, se uporabi `txt`).
- `--theme` — ID teme. Privzeta vrednost je `github-dark`.

```bash
vendor/bin/shikiphp highlight src/App.php --lang=php --theme=nord
```

Izhod je isti blok `<pre class="shiki …">` z eno temo, ki ga vrne [`codeToHtml`](https://shikiphp.inline0.dev/sl/docs/api#shikiphpcodetohtml), temu pa sledi nova vrstica, zato ga lahko neposredno preusmerite v datoteko:

```bash
vendor/bin/shikiphp highlight src/App.php --theme=github-light > app.html
```

Ukaz ne sprejema drugih možnosti. Za dve temi, pretvornike ali katero koli drugo [možnost](https://shikiphp.inline0.dev/sl/docs/options) namesto tega pokličite PHP API.

### Možnosti in argumenti

Možnosti morajo biti v obliki `--name=value`. Vsi drugi argumenti, ki se začnejo z `--`, so prezrti; zadnji argument, ki se ne začne z `--`, se uporabi kot datoteka. Zato `--lang php file.rs` označi `file.rs` kot Rust: `--lang` je prezrt, `php` zamenja `file.rs`, jezik pa se določi na podlagi končnice `.rs`.

### Določanje jezika

Brez `--lang` se končnica nespremenjena uporabi kot ID jezika. To deluje, kadar je končnica hkrati vgrajen ID ali vzdevek — `php`, `js`, `ts`, `tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` in številne druge (glejte [Jezike](https://shikiphp.inline0.dev/sl/docs/languages)). Ne deluje pa za:

- datoteke brez končnice, kot sta `Makefile` ali `Dockerfile`, za katere se uporabi `txt`;
- končnice, ki niso ID jezika, kot je `.txt`.

`txt` ni vgrajen jezik, zato se oba primera trenutno končata z neobdelano napako `Unknown language "txt"` (usodna napaka [#3](https://github.com/inline0/shikiphp/issues/3) s sledjo sklada). Za te datoteke podajte `--lang`:

```bash
vendor/bin/shikiphp highlight Dockerfile --lang=docker
vendor/bin/shikiphp highlight Makefile --lang=make
```

## `langs`

Izpišite vsak ID jezika, ki ga sprejema paket, vsakega v svoji vrstici.

```bash
vendor/bin/shikiphp langs
```

Seznam ima 350 vrstic: najprej so ID-ji 253 vgrajenih slovnic v vrstnem redu paketa (ne po abecedi), nato pa njihovih 97 vzdevkov (`js`, `cjs`, `mjs` itd.). Med ID-ji slovnic je tudi 18 pomožnih slovnic, ki jih vdelujejo druge slovnice, na primer `vue-directives` in `es-tag-css`; za katalog z imeni in vzdevki glejte [Jezike](https://shikiphp.inline0.dev/sl/docs/languages). Za abecedni seznam uporabite `sort`.

## `themes`

Izpišite vsak ID vgrajene teme v svoji vrstici, po abecednem vrstnem redu (65 tem).

```bash
vendor/bin/shikiphp themes
```

Za katalog z imeni in oznakami svetlih/temnih tem glejte [Teme](https://shikiphp.inline0.dev/sl/docs/themes).

## Pomoč in izhodna koda

Za izpis navodil za uporabo zaženite brez ukaza ali z `-h` / `--help` / `help`.

```bash
vendor/bin/shikiphp --help
```

| Primer | Izhod | Izhodna koda |
| --- | --- | --- |
| Uspeh ali pomoč | standardni izhod | `0` |
| Neznan ukaz | `Unknown command: <name>` na standardnem izhodu za napake | `1` |
| `highlight` brez datoteke ali datoteka ne obstaja | vrstica z navodili za uporabo na standardnem izhodu za napake | `1` |
| Neznan jezik ali tema | neujeta izjema `Shikiphp\Exceptions\Highlight` (usodna napaka PHP s sledjo sklada) | `255` |
