
# CLI

shikiphp indeholder et lille kommandolinjeværktøj i `bin/shikiphp` (installeret som `vendor/bin/shikiphp` i dit projekt). Det har tre kommandoer: `highlight` gengiver én fil til HTML, mens `langs` og `themes` viser pakkens indhold.

## `highlight`

Fremhæv en fil til HTML, og skriv resultatet til stdout.

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

- `<file>` — stien til filen, der skal læses. Filen skal findes; standardinput læses ikke.
- `--lang` — sprog-ID'et eller aliaset. Hvis det udelades, bruges filtypen som ID, præcis som den er (eller `txt`, hvis der ikke er nogen filtype).
- `--theme` — tema-ID'et. Standardværdien er `github-dark`.

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

Outputtet er den samme blok med ét tema i `<pre class="shiki …">`, som [`codeToHtml`](https://shikiphp.inline0.dev/da/docs/api#shikiphpcodetohtml) returnerer, efterfulgt af et linjeskift, så det kan omdirigeres direkte til en fil:

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

Kommandoen accepterer ingen andre tilvalg. Ved dobbelte temaer, transformers eller andre [tilvalg](https://shikiphp.inline0.dev/da/docs/options) skal du i stedet kalde PHP API.

### Valgmuligheder og argumenter

Valgmuligheder skal bruge formen `--name=value`. Andre argumenter, der begynder med
`--`, ignoreres, og det sidste argument, der ikke begynder med `--`, bruges som
filen. `--lang php file.rs` fremhæver derfor `file.rs` som Rust: `--lang`
ignoreres, `php` erstattes af `file.rs`, og sproget bestemmes ud fra filtypenavnet
`.rs`.

### Sprogbestemmelse

Uden `--lang` bliver filtypenavnet uændret til sprog-id'et. Det fungerer,
når filtypenavnet selv er et inkluderet id eller alias — `php`, `js`, `ts`,
`tsx`, `py`, `rs`, `go`, `md`, `yml`, `json`, `sh` og mange flere (se
[Sprog](https://shikiphp.inline0.dev/da/docs/languages)). Det fungerer ikke for:

- filer uden filtypenavn, såsom `Makefile` eller `Dockerfile`, som falder tilbage til `txt`;
- filtypenavne, der ikke er et sprog-id, såsom `.txt`.

`txt` er ikke et inkluderet sprog, så begge tilfælde ender i øjeblikket med en
`Unknown language "txt"`-fejl ([#3](https://github.com/inline0/shikiphp/issues/3)).
Angiv `--lang` for disse filer:

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

## `langs`

Udskriv hvert id, som pakken accepterer som sprog, ét pr. linje.

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

Listen har 350 linjer: de 253 inkluderede grammatik-id'er i pakkens rækkefølge (ikke
alfabetisk), efterfulgt af deres 97 aliaser (`js`, `cjs`, `mjs` osv.).
Grammatik-id'erne omfatter 18 hjælpegrammatikker, som andre grammatikker indlejrer, såsom
`vue-directives` og `es-tag-css`; se [Sprog](https://shikiphp.inline0.dev/da/docs/languages) for kataloget
med navne og aliaser. Send listen gennem `sort` for at få den sorteret alfabetisk.

## `themes`

Udskriv hvert inkluderet tema-id, ét pr. linje, i alfabetisk rækkefølge (65 temaer).

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

Se [Temaer](https://shikiphp.inline0.dev/da/docs/themes) for kataloget med navne og lyse/mørke typer.

## Hjælp og afslutningsstatus

Kør uden kommando eller med `-h` / `--help` / `help` for at udskrive brugsvejledning.

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

| Situation | Output | Afslutningsstatus |
| --- | --- | --- |
| Succes eller hjælp | stdout | `0` |
| Ukendt kommando | `Unknown command: <name>` på stderr | `1` |
| `highlight` uden en fil, eller filen findes ikke | brugsvejledningen på stderr | `1` |
| Ukendt sprog eller tema | en ikke-håndteret `Shikiphp\Exceptions\Highlight` (fatal PHP-fejl med stacktrace) | `255` |
