# Find DAWA-kald i koden med migrate-cli

> Find og erstat DAWA-adresser i et projekt med npx @danadresse/migrate-cli, se hvad værktøjet ikke fanger, og stop nye DAWA-kald i CI.
>
> https://danadresse.dk/guides/find-dawa-kald-med-migrate-cli · verified 2026-11-02
Før du kan skifte fra DAWA, skal du vide, hvor koden kalder DAWA. I et ældre projekt kan adresserne ligge i kildekode, konfigurationsfiler, skabeloner og dokumentation. `@danadresse/migrate-cli` finder dem og kan erstatte dem med `https://api.danadresse.dk`.

Guiden viser, hvordan du kører værktøjet, hvad det præcis gør, hvad det overser, og hvordan du får CI til at fejle, hvis en DAWA-adresse dukker op igen.

## 1. Kør en tør gennemgang

Værktøjet kræver Node 18 eller nyere. Stå i projektets rod og kør:

```bash id=dry-run run=no
npx @danadresse/migrate-cli
```

Uden flag ændrer det ingenting. Det viser hver linje, der ville blive ændret, og hvordan den ville se ud bagefter:

```text id=dry-run-output run=no
Found 3 occurrence(s) in 2 file(s):

  src/adresse.ts
    12: const BASE = "https://dawa.aws.dk";
      → const BASE = "https://api.danadresse.dk";

  templates/checkout.html
    41: <script src="https://dawa.aws.dk/js/autocomplete/dawa-autocomplete2.min.js"></script>
      → <script src="https://api.danadresse.dk/js/autocomplete/dawa-autocomplete2.min.js"></script>

Run with --write to apply changes.
```

## 2. Kend flagene

| Kommando | Virkning |
|---|---|
| `npx @danadresse/migrate-cli` | Tør gennemgang af den aktuelle mappe |
| `npx @danadresse/migrate-cli src/` | Tør gennemgang af `src/` |
| `npx @danadresse/migrate-cli --target src/` eller `-t src/` | Det samme |
| `npx @danadresse/migrate-cli scan src/` | Det samme. `scan` er altid tør |
| `npx @danadresse/migrate-cli --write` eller `-w` | Skriver ændringerne i filerne |
| `npx @danadresse/migrate-cli rewrite src/` | Det samme som `--write` på `src/` |
| `npx @danadresse/migrate-cli --key dawa_live_…` | Indsætter din nøgle i kodeeksemplerne til sidst |
| `npx @danadresse/migrate-cli --fail-on-found` eller `--ci` | Tør gennemgang, der afslutter med exit-kode 1, hvis der blev fundet noget. Til CI |
| `npx @danadresse/migrate-cli --help` | Viser hjælpen |

`--key` gør kun én ting: viser nøglen i eksemplerne. Værktøjet skriver aldrig nøglen ind i dine filer. Et ukendt flag giver en advarsel, men kørslen fortsætter.

## 3. Forstå, hvad der bliver erstattet

Værktøjet leder efter DAWA's domæner, med eller uden `http://` eller `https://` foran:

| Fundet | Bliver til |
|---|---|
| `https://dawa.aws.dk` | `https://api.danadresse.dk` |
| `https://api.dataforsyningen.dk` | `https://api.danadresse.dk` |
| `https://cdn.dataforsyningen.dk` efterfulgt af `/dawa/assets/dawa-autocomplete2/` | `https://api.danadresse.dk` |
| Et domæne alene: `dawa.aws.dk`, `//dawa.aws.dk/…`, `DAWA_HOST=api.dataforsyningen.dk` | `api.danadresse.dk` |

Kun domænedelen erstattes. Stien og parametrene bliver stående, så `https://dawa.aws.dk/adresser?postnr=8000` bliver til `https://api.danadresse.dk/adresser?postnr=8000`. Det virker, fordi vi har de samme stier. `http://` bliver til `https://`, og et domæne uden protokol forbliver uden protokol. Domæner, der bare ligner, fx `x.api.dataforsyningen.dk`, bliver ikke rørt.

Det gennemgår filer med disse endelser: `js ts jsx tsx mjs cjs py php rb go java cs kt swift rs html vue svelte astro json yaml yml env toml ini conf cfg md rst txt`, plus `.env`, `.env.*` (fx `.env.production`), workflows under `.github/` og `.gitlab-ci.yml`. Mapperne `node_modules`, `.git`, `.cache`, `.yarn`, `.venv`, `venv`, `dist`, `build`, `__pycache__`, `.next` og `vendor` springes over.

> [!NOTE]
> Gennemgang af `.env*` og `.github/`, domæner uden protokol og `--fail-on-found` er nyere end version 0.1.0 af pakken. Kør `npx @danadresse/migrate-cli@latest --help`: står `--fail-on-found` ikke på listen, har du en version, der springer skjulte filer over, kun finder URL'er med `http(s)://` og altid afslutter med exit-kode 0. Brug så søgningen i trin 5 og scriptet i trin 6.

Finder det DAWA's widget (`dawa-autocomplete2.js` eller `.min.js`), viser det til sidst det nye script-tag med `?key=`. Se [Fra dawa-autocomplete2](/guides/migrer-dawa-autocomplete2) for, hvorfor nøglen her skal være en browsernøgle.

## 4. Det, værktøjet ikke fanger

Gennemgangen er bevidst simpel. Tjek selv disse steder:

- **Andre skjulte filer.** Ud over `.env*`, `.github/` og `.gitlab-ci.yml` bliver filer, hvis navn starter med punktum, ikke gennemgået, fx `.npmrc` eller `.circleci/config.yml`.
- **Sammensatte strenge.** `"https://dawa." + "aws.dk"` eller en URL, der bygges op i flere trin.
- **Andre filtyper.** Fx `.xml`, `.properties`, `.gradle`, `.twig`, `.liquid`, `.cshtml`, `.razor`, `.sql` og regneark.
- **Kode uden for repoet.** Konfiguration i en database, i et CMS, i miljøvariabler på serveren eller i en tredjepartsplugin.

Og efter erstatningen mangler kaldene stadig en nøgle. Tilføj `X-Api-Key` der, hvor du laver HTTP-kald. Se [Skift fra DAWA ved at ændre base-URL'en](/guides/migrer-fra-dawa).

## 5. Søg selv med ripgrep eller git grep

En søgning med `ripgrep` dækker alle filtyper og alle skjulte filer:

```bash id=ripgrep run=syntax
rg -n --hidden -g '!.git' -g '!node_modules' \
  -e 'dawa\.aws\.dk' \
  -e 'api\.dataforsyningen\.dk' \
  -e 'cdn\.dataforsyningen\.dk/dawa' \
  .
```

`git grep` søger kun i filer, som Git kender, og det er tit det, du vil have:

```bash id=git-grep run=syntax
git grep -nE 'dawa\.aws\.dk|api\.dataforsyningen\.dk|cdn\.dataforsyningen\.dk/dawa'
```

Har du ingen af dem, virker almindelig `grep -rnE` med samme mønster, men så skal du selv udelukke `node_modules`.

## 6. Lad CI fejle, hvis DAWA kommer tilbage

Med `--fail-on-found` afslutter migrate-cli med exit-kode 1, så snart det finder en henvisning til DAWA. Det ændrer intet:

```bash id=ci-cli run=no
npx --yes @danadresse/migrate-cli@latest --fail-on-found
```

Det har ingen mulighed for at undtage filer, så en changelog, der med vilje nævner DAWA, får også buildet til at fejle. Har du brug for undtagelser, eller vil du ikke have Node i pipelinen, så brug et lille script i stedet. Det fejler, hvis en sporet fil nævner et af DAWA's domæner:

```bash id=ci-check run=syntax
#!/usr/bin/env bash
# Fejler, hvis koden igen henviser til DAWA. Kør fra repoets rod.
set -euo pipefail

pattern='dawa\.aws\.dk|api\.dataforsyningen\.dk|cdn\.dataforsyningen\.dk/dawa'

# Undtag filer, der med vilje nævner DAWA (fx denne fil og changelogs).
if git grep -nE "$pattern" -- . ':!scripts/check-no-dawa.sh' ':!CHANGELOG.md'; then
  echo "DAWA lukkede 1. oktober 2026. Brug https://api.danadresse.dk i stedet." >&2
  exit 1
fi
echo "Ingen DAWA-adresser fundet."
```

Gem det som `scripts/check-no-dawa.sh` og kald det fra din pipeline. I GitHub Actions:

```yaml id=github-actions run=no
name: no-dawa
on: [push, pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: bash scripts/check-no-dawa.sh
```

`git grep` returnerer exit-kode 1, når det ikke finder noget. Derfor står kaldet i en `if`, så `set -e` ikke stopper scriptet på det gode udfald.

## Næste skridt

- Tilføj nøglen og test skiftet: [Skift fra DAWA ved at ændre base-URL'en](/guides/migrer-fra-dawa).
- Klar til produktion? [Go-live-tjekliste](/guides/go-live-tjekliste).
