Skip to content

Commit 3542e5e

Browse files
feat: update argv check and readme
Signed-off-by: Nicklas Silversved <nicklas.silversved@digg.se>
1 parent 6b6b8ca commit 3542e5e

File tree

2 files changed

+141
-65
lines changed

2 files changed

+141
-65
lines changed

README.md

Lines changed: 139 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<!--
22
SPDX-FileCopyrightText: 2025 diggsweden/rest-api-profil-lint-processor
33
4-
SPDX-License-Identifier: CC0-1.0
4+
SPDX-License-Identifier: CC0-1.0
55
-->
66

77
# REST API-profil - Lint Processor (RAP-LP)
8-
[![Tag](https://img.shields.io/github/v/tag/diggsweden/rest-api-profil-lint-processor?style=for-the-badge&sort=semver&filter=%21*-*&color=green)](https://github.com/diggsweden/rest-api-profil-lint-processor/tags)
98

9+
[![Tag](https://img.shields.io/github/v/tag/diggsweden/rest-api-profil-lint-processor?style=for-the-badge&sort=semver&filter=%21*-*&color=green)](https://github.com/diggsweden/rest-api-profil-lint-processor/tags)
1010

1111
[![License: EUPL 1.2](https://img.shields.io/badge/License-European%20Union%20Public%20Licence%201.2-library?style=for-the-badge&&color=lightblue)](LICENSE)
1212
[![REUSE](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.reuse.software%2Fstatus%2Fgithub.com%2Fdiggsweden%2Frest-api-profil-lint-processor&query=status&style=for-the-badge&label=REUSE&color=lightblue)](https://api.reuse.software/info/github.com/diggsweden/rest-api-profil-lint-processor)
@@ -41,18 +41,21 @@ Verktyget är specifikt utvecklat för att linta OpenAPI-definitioner enligt den
4141
Förutsätter att det finns en `openapi.yaml` att validera i den aktuella katalogen och beroende på hur man önskar att nyttja verktyget måste det finns installerade versioner av `Node.js`,`npm`, `Podman` eller `Docker`.
4242

4343
### NPM
44+
4445
> Notera: Att GitHub Packages (npm) kräver authentisering.<br>
4546
> Konfigurera `.npmrc` mot rätt registry och scope, antingen globalt eller lokalt för enskilda projekt - `@diggsweden:registry=https://npm.pkg.github.com`<br>
4647
> Om du saknar inloggning med GitHub Personal access token (PAT), se [FAQ](#hur-skapar-jag-ett-github-personal-access-token-pat).
4748
4849
> Notera: Att `<version>` byts ut mot önskad version av verktyget, oftast senaste release tag. För mer information se [versioner](#versioner).
4950
5051
#### Installera globalt med npm:
52+
5153
```bash
5254
npm i -g @diggsweden/rest-api-profil-lint-processor@<version>
5355
raplp -f openapi.yaml
5456
```
55-
> Notera: Att en omstart av terminal kan behövas för att `raplp` ska kunna användas som kommando.
57+
58+
> Notera: Att en omstart av terminal kan behövas för att `raplp` ska kunna användas som kommando.
5659
5760
#### Installera lokalt som `npm run` script
5861

@@ -75,115 +78,94 @@ Lägg till ett [`npm run` script](https://docs.npmjs.com/cli/run-script) i din `
7578
Nu kan du använda `npm run lint-processor`.
7679

7780
### NPX
81+
7882
Kör utan installation och package.json:
83+
7984
```bash
8085
npx @diggsweden/rest-api-profil-lint-processor@<version> -f openapi.yaml
8186
```
8287

8388
> Notera: Att npx laddar ned paketet till en tillfällig cache-mapp om det inte redan finns en version i node_modules/.bin
8489
8590
### Podman
91+
8692
Kör med podman:
93+
8794
```bash
8895
podman run --rm -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml
8996
```
9097

9198
### Docker
99+
92100
Kör med docker:
101+
93102
```bash
94103
docker run --rm -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml
95104
```
105+
96106
> Notera: Sökvägar kan hanteras olika beroende på miljö:
107+
>
97108
> - Podman (Linux/macOS/WSL): -v $(pwd):/app/example
98109
> - Docker (PowerShell): -v "${PWD}:/app/example"
99110
> - Docker (CMD): -v %cd%:/app/example
100111
101112
### Bygga från källkod
113+
102114
1. Klona ned projektet, gärna från senaste release tag.
103115
2. Installera alla beroenden:
104116

105117
```bash
106118
npm install
107119
npm start -- -f openapi.yaml
108120
```
121+
109122
> Notera: Att alla kommandon lokalt körs med `npm start --`.
110123
111-
### API (Application programming interface) läge
112-
```bash
113-
npm start -- -m api
114-
```
124+
### Server
115125

116-
Validera mot en endpoint:
117-
```bash
118-
POST http://localhost:3000/api/v1/validation/validate
119-
```
126+
Verktyget kan även köras som en lokal HTTP-server genom att ange [API-läge](#api-application-programming-interface). I detta läge kan funktionaliteten anropas via HTTP i stället för CLI-flaggor.
120127

121-
Request body - application/json`
122-
```bash
123-
{
124-
"yaml": "<base64encoded file>",
125-
"categories": [
126-
"CATEGORY1",
127-
"CATEGORY2"
128-
]
129-
}
130-
```
128+
Starta servern:
131129

132-
Använd detta kommando för att validera en yaml-fil via terminalen, här kan du även validera mot specifika [kategorier](#tillgängliga-kategorier-med-regler):
133130
```bash
134-
curl -X POST http://localhost:3000/api/v1/validation/validate \
135-
-H "Content-Type: application/json" \
136-
-d "{\"yaml\": \"$(base64 -w 0 Path_to_the_YAML_file)\", \"categories\": [\"CATEGORY1\", \"CATEGORY2\"]}"
131+
npm start -- -m api
137132
```
138-
Exempel
133+
134+
Validera en fil via terminalen:
135+
139136
```bash
140137
curl -X POST http://localhost:3000/api/v1/validation/validate \
141138
-H "Content-Type: application/json" \
142-
-d "{\"yaml\": \"$(base64 -w 0 apis/dok-api.yaml)\", \"categories\": [\"DokRules\", \"UfnRules\"]}"
139+
-d "{\"yaml\": \"$(base64 -w 0 openapi.yaml)\"}"
143140
```
144141

145142
Det går också att validera via en url istället för en fil men då behöver API-läget startas med en extra flagga för att låsa upp möjligheten att nyttja endpointen:
143+
146144
```bash
147145
npm start -- -m api --enableUrlValidation
148146
```
149147

150-
Använd detta kommando för att validera en yaml-fil baserat på en url via terminalen, även här kan man skicka med kategorier för valideringen. Se tidigare kommando:
151-
```bash
152-
curl -sS -X POST http://localhost:3000/api/v1/validation/url \
153-
-H "Content-Type: application/json" \
154-
-d '{"url":"<URL_TO_YAML_FILE>"}' | jq
155-
```
148+
Validera en fil från en url via terminalen:
156149

157-
Exempel:
158150
```bash
159-
curl -sS -X POST http://localhost:3000/api/v1/validation/url \
160-
-H "Content-Type: application/json" \
161-
-d '{"url":"https://testurl.com/q/openapi"}' | jq
162-
```
163-
164-
#### Ladda ned information om regelutfall som en Excel-fil via api-läge
165-
166-
För att spara information om regelutfall från diagnostiseringen till en avstämningsfil i Excel, använd resultatet från tidigare validering som "result" nedan:
167-
```bash
168-
curl -X POST http://localhost:5173/api/validation/generate-report \
169-
-H "Content-Type: application/json" \
170-
-o avstamningsfil.xlsx \
171-
-d '{
172-
"result": [],
173-
"categories": []
174-
}'
175-
151+
curl -sS -X POST http://localhost:3000/api/v1/validation/url \
152+
-H 'Content-Type: application/json' \
153+
-H 'Accept: application/json' \
154+
-d '{"url":"https://testurl.com/q/openapi"}' \
155+
| jq
176156
```
177157

178158
## Versioner
179-
Main-branchen, feature-brancher, pre-release- och testversioner används med reservation för att de kan innehålla funktionalitet som inte är garanterad att den är testad på samma sätt som en stabil version.
159+
160+
Main-branchen, feature-brancher, pre-release- och testversioner används med reservation för att de kan innehålla funktionalitet som inte är garanterad att den är testad på samma sätt som en stabil version.
180161

181162
**Stabila versioner**<br>
182163
[Release](https://github.com/diggsweden/rest-api-profil-lint-processor/releases) ska alltid vara stabil och testad, vilket gör den till den föredragna versionen för att nyttja verktyget.<br>
183164
Dessa versioner är taggade med `vX.X.X` utan något suffix.
184165

185166
**Pre-release- och testversioner**<br>
186167
Pre-release-versioner är taggade med följande suffix:
168+
187169
- alpha → tidig testversion, ofta instabil
188170
- beta → mer testad, men fortfarande pre-release
189171
- rc → nära färdigställande, stabil release candidate
@@ -192,35 +174,40 @@ Rena testversioner är taggade med `vX.X.X-dev` följt av namnet på den branche
192174
Dessa versioner är byggda för att testa funktionalitet som är under utveckling.
193175

194176
Alla versioner av verktyget hittar du här:
177+
195178
- [Container Image](https://github.com/diggsweden/rest-api-profil-lint-processor/pkgs/container/rest-api-profil-lint-processor)
196179
- [NPM Package](https://github.com/diggsweden/rest-api-profil-lint-processor/pkgs/npm/rest-api-profil-lint-processor)
197180

198181
## Användning
182+
199183
Här beskrivs vilka användningsområden verktyget har med diverse flaggor som kan sättas för att nyttja verktygets funktionalitet.
200184

201185
### Tillgängliga flaggor
202186

203-
| Flagga | Beskrivning | Typ | Standard | Obligatorisk |
204-
|---|---|---|---|---|
205-
| `-f, --file` | Sökväg till OpenAPI-specifikation (YAML/JSON). | string || Ja |
206-
| `-c, --categories` | Regelkategorier separerade med kommatecken. Tillgängliga: `UfnRules, SakRules, VerRules, FnsRules, ArqRules, DokRules, AmeRules, ForRules, DotRules, FelRules`. | string || Nej |
207-
| `-l, --logError` | Sökväg till fil för felloggning från RAP-LP. Om inte angiven skrivs loggen till stdout. | string | stdout (om ej satt) | Nej |
208-
| `-a, --append` | Append—utökar loggen i befintlig felloggningsfil (om `--logError` används). | boolean | `false` | Nej |
209-
| `-d, --logDiagnostic` | Sökväg till fil för diagnostiseringsinformation från RAP-LP i JSON-format. | string || Nej |
210-
| `--dex` | Sökväg till fil för diagnostiseringsinformation från RAP-LP i Excel-format. | string || Nej |
211-
187+
| Flagga | Beskrivning | Typ | Standard | Obligatorisk |
188+
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ------------------- | ------------ |
189+
| `-f, --file` | Sökväg till OpenAPI-specifikation (YAML/JSON). | string || Ja |
190+
| `-c, --categories` | Regelkategorier separerade med kommatecken. Tillgängliga: `UfnRules, SakRules, VerRules, FnsRules, ArqRules, DokRules, AmeRules, ForRules, DotRules, FelRules`. | string || Nej |
191+
| `-l, --logError` | Sökväg till fil för felloggning från RAP-LP. Om inte angiven skrivs loggen till stdout. | string | stdout (om ej satt) | Nej |
192+
| `-a, --append` | Append—utökar loggen i befintlig felloggningsfil (om `--logError` används). | boolean | `false` | Nej |
193+
| `-d, --logDiagnostic` | Sökväg till fil för diagnostiseringsinformation från RAP-LP i JSON-format. | string || Nej |
194+
| `--dex` | Sökväg till fil för diagnostiseringsinformation från RAP-LP i Excel-format. | string || Nej |
212195

213196
> Notera: Att `raplp` i alla kommandon nedan ersätts med respektive miljös sätt att köra verktyget (npm, docker eller podman).
214197
215198
### Validering med alla regler
199+
216200
För att validera en openapi-definition med verktyget, lägg till `-f <YAML_FILE>`
201+
217202
```bash
218203
raplp -f openapi.yaml
219204
```
220205

221206
### Validering med utvalda regler
207+
222208
För att validera mot en specifik kategori av regler, lägg till `-c <CategoryName>`.<br>
223-
>Notera: Att du kan lägga till flera regler som en kommaseparerad lista.
209+
210+
> Notera: Att du kan lägga till flera regler som en kommaseparerad lista.
224211
225212
```bash
226213
# Validera mot en specifik regel
@@ -245,18 +232,23 @@ raplp -f openapi.yaml -c DokRules,AmeRules,SakRules
245232
- VerRules
246233

247234
### Validering som skriver felmeddelanden till en valfri loggfil
235+
248236
För att skriva felmeddelanden till en valfri loggfil, lägg till `-l <FILE>`
237+
249238
```bash
250239
raplp -f openapi.yaml -l raplp.log
251240
```
241+
252242
> Notera: Att varje körning skriver över den tidigare loggfilen.
253243
254244
För att lägga till loggning i samma fil, lägg till `-a`
245+
255246
```bash
256247
raplp -f openapi.yaml -l raplp.log -a
257248
```
258249

259250
### Validering som sparar loggdiagnostik i en fil
251+
260252
För att spara loggdiagnostik i en fil, lägg till `-d <FILE>`
261253

262254
```bash
@@ -284,6 +276,7 @@ raplp -f openapi.yaml --dex <PATH>
284276
```
285277

286278
### Visa information version
279+
287280
För att visa aktuell version av verktyget, lägg till `--version`
288281

289282
```bash
@@ -296,9 +289,90 @@ raplp --version
296289
raplp --help
297290
```
298291

292+
### API-läge
293+
294+
Verktyget kan även köras som en lokal HTTP-server, via API (Applikation Programming Interface). I detta läge kan funktionaliteten anropas via HTTP i stället för CLI-flaggor.
295+
296+
För att starta servern, kör:
297+
298+
```bash
299+
npm start -- -m api
300+
```
301+
302+
Validera mot en endpoint:
303+
304+
```bash
305+
POST http://localhost:3000/api/v1/validation/validate
306+
```
307+
308+
Request body - application/json`
309+
310+
```bash
311+
{
312+
"yaml": "<base64encoded file>",
313+
"categories": [
314+
"CATEGORY1",
315+
"CATEGORY2"
316+
]
317+
}
318+
```
319+
320+
Använd detta kommando för att validera en yaml-fil via terminalen, här kan du även validera mot specifika [kategorier](#tillgängliga-kategorier-med-regler):
321+
322+
```bash
323+
curl -X POST http://localhost:3000/api/v1/validation/validate \
324+
-H "Content-Type: application/json" \
325+
-d "{\"yaml\": \"$(base64 -w 0 Path_to_the_YAML_file)\", \"categories\": [\"CATEGORY1\", \"CATEGORY2\"]}"
326+
```
327+
328+
Exempel
329+
330+
```bash
331+
curl -X POST http://localhost:3000/api/v1/validation/validate \
332+
-H "Content-Type: application/json" \
333+
-d "{\"yaml\": \"$(base64 -w 0 openapi.yaml)\", \"categories\": [\"DokRules\", \"UfnRules\"]}"
334+
```
335+
336+
Det går också att validera via en url istället för en fil men då behöver API-läget startas med en extra flagga för att låsa upp möjligheten att nyttja endpointen:
337+
338+
```bash
339+
npm start -- -m api --enableUrlValidation
340+
```
341+
342+
Använd detta kommando för att validera en yaml-fil baserat på en url via terminalen, även här kan man skicka med kategorier för valideringen. Se tidigare kommando:
343+
344+
```bash
345+
curl -sS -X POST http://localhost:3000/api/v1/validation/url \
346+
-H "Content-Type: application/json" \
347+
-d '{"url":"<URL_TO_YAML_FILE>"}' | jq
348+
```
349+
350+
Exempel:
351+
352+
```bash
353+
curl -sS -X POST http://localhost:3000/api/v1/validation/url \
354+
-H "Content-Type: application/json" \
355+
-d '{"url":"https://testurl.com/q/openapi.yaml"}' | jq
356+
```
357+
358+
#### Ladda ned information om regelutfall som en Excel-fil via api-läge
359+
360+
För att spara information om regelutfall från diagnostiseringen till en avstämningsfil i Excel, använd resultatet från tidigare validering som "result" nedan:
361+
362+
```bash
363+
curl -X POST http://localhost:5173/api/validation/generate-report \
364+
-H "Content-Type: application/json" \
365+
-o avstamningsfil.xlsx \
366+
-d '{
367+
"result": [],
368+
"categories": []
369+
}'
370+
371+
```
372+
299373
### Riktlinjer och förklaringar
300-
Vill du veta mer om de specifika reglerna som verktyget tillämpar, se avsnittet [GUIDELINES](GUIDELINES.md) för detaljer.
301374

375+
Vill du veta mer om de specifika reglerna som verktyget tillämpar, se avsnittet [GUIDELINES](GUIDELINES.md) för detaljer.
302376

303377
### Förklaring av översikt för regelutfall
304378

@@ -352,7 +426,9 @@ Kravet har bedömts ha allvarlighetsgraden Warning eftersom API:et bryter mot et
352426
Om du har frågor, funderingar, buggrapporter etc, vänligen kontakta [Digg - Agency for Digital Government](https://www.digg.se/)
353427

354428
## FAQ
429+
355430
### Hur skapar jag ett GitHub Personal Access Token (PAT)?
431+
356432
1. Gå till GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token → Generate new token (classic).
357433
2. Sätt en beskrivning för ditt token under `Note` och ett utgångsdatum under `Expiration` (ha utgångsdatum!).
358434
3. Select scopes → read:packages

src/app.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ async function main() {
8282
}
8383

8484
if(argv.mode === 'api') {
85-
const apiForbiddenArgs = new Set(['f', 'd', 'l', 'c', 'dex']);
85+
const apiForbiddenArgs = new Set(['f', 'c', 'dex']);
8686
const hasForbiddenArgs = Object.keys(argv).filter(
8787
(k) => apiForbiddenArgs.has(k) && Object.prototype.hasOwnProperty.call(argv, k),
8888
);
89-
89+
9090
if (hasForbiddenArgs.length > 0) {
9191
throw new Error('I API-läge är endast --enableUrlValidation och --urlValidationConfigFile tillåtna. ');
9292
}

0 commit comments

Comments
 (0)