
# CLI

shikiphp sisaldab väikest käsureatööriista asukohas `bin/shikiphp` (paigaldatakse sinu projekti nime all `vendor/bin/shikiphp`). Sellel on kolm käsku: `highlight` renderdab ühe faili HTML-na ning `langs` ja `themes` loetlevad paketi sisu.

## `highlight`

Tõsta fail esile HTML-na ja väljasta see stdout-i.

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

- `<file>` — loetava faili tee. Fail peab olemas olema; standardset sisendit ei loeta.
- `--lang` — keele ID või alias. Kui see puudub, kasutatakse keele ID-na muutmata kujul faililaiendit (selle puudumisel kasutatakse `txt`).
- `--theme` — teema ID. Vaikimisi on `github-dark`.

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

Väljund on sama ühe teema `<pre class="shiki …">` plokk, mille tagastab [`codeToHtml`](https://shikiphp.inline0.dev/et/docs/api#shikiphpcodetohtml), millele järgneb reavahetus, nii et selle saab suunata otse faili:

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

Käsk ei võta muid suvandeid. Kahe teema, teisendajate või muude [suvandite](https://shikiphp.inline0.dev/et/docs/options) jaoks kutsu selle asemel PHP API.

### Suvandid ja argumendid

Suvandid peavad olema kujul `--name=value`. Kõiki muid argumente, mis algavad märgiga `--`, eiratakse ning failiks loetakse viimane argument, mis ei alga märgiga `--`. Seega tõstab `--lang php file.rs` esile faili `file.rs` kui Rust: `--lang` eiratakse, `php` asendatakse väärtusega `file.rs` ning keel tuletatakse `.rs` laiendist.

### Keele tuletamine

Ilma suvandita `--lang` kasutatakse laiendit muutmata kujul keele ID-na. See toimib, kui laiend on ise paketiga kaasas olev ID või alias — `php`, `js`, `ts`, `tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` ja paljud teised (vt [Keeled](https://shikiphp.inline0.dev/et/docs/languages)). See ei toimi järgmistel juhtudel:

- laiendita failid, näiteks `Makefile` või `Dockerfile`, mille puhul kasutatakse vaikeväärtust `txt`;
- laiendid, mis pole keele ID-d, näiteks `.txt`.

`txt` pole paketiga kaasas olev keel, seega lõpevad mõlemad juhud praegu veaga `Unknown language "txt"` ( [#3](https://github.com/inline0/shikiphp/issues/3)).
Nende failide puhul edasta `--lang`:

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

## `langs`

Väljasta kõik ID-d, mida pakett aktsepteerib keeltena, igaüks oma reale.

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

Loendis on 350 rida: kõigepealt 253 paketiga kaasas olevat grammatika ID-d paketi järjekorras (mitte tähestikulises), seejärel 97 aliast (`js`, `cjs`, `mjs` jne). Grammatika ID-de hulgas on 18 abigrammatikat, mida muud grammatikad põimivad, näiteks `vue-directives` ja `es-tag-css`; nimede ja aliasega kataloogi leiate lehelt [Keeled](https://shikiphp.inline0.dev/et/docs/languages). Tähestikulise loendi saamiseks suuna väljund käsule `sort`.

## `themes`

Väljasta kõik paketiga kaasas olevad teemade ID-d, igaüks oma reale ja tähestikulises järjekorras (65 teemat).

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

Nimede ja heleda/tumeda tüübi kataloogi leiate lehelt [Teemad](https://shikiphp.inline0.dev/et/docs/themes).

## Abi ja väljumiskood

Kasutuse kuvamiseks käivita käsk ilma käsuta või kasuta `-h` / `--help` / `help`.

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

| Olukord | Väljund | Väljumiskood |
| --- | --- | --- |
| Õnnestumine või abi | stdout | `0` |
| Tundmatu käsk | `Unknown command: <name>` stderr-is | `1` |
| `highlight` ilma failita või faili puudumisel | kasutusjuhise rida stderr-is | `1` |
| Tundmatu keel või teema | püüdmata `Shikiphp\Exceptions\Highlight` (PHP saatuslik viga virnajäljega) | `255` |
