Skip to content

Commit 121fceb

Browse files
docs: improve documentation for readme and development (#417)
Improve and restructure documentation for README.md and DEVELOPMENT.md. Signed-off-by: Nicklas Silversved <nicklas.silversved@digg.se>
1 parent d71fe63 commit 121fceb

File tree

4 files changed

+252
-181
lines changed

4 files changed

+252
-181
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ För säkerhetssårbarheter, följ riktlinjerna i vår [Säkerhetsinformation](S
134134
- Var koncis och länka till externa resurser vid behov.
135135
- Följ [en-mening-per-rad](https://sembr.org/)-principen i Markdown eller AsciiDoc.
136136

137-
Svenska är det primära språket
137+
Svenska är det primära språket.
138138

139139
## FOSS-standarder
140140

README.md

Lines changed: 153 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -17,63 +17,150 @@ SPDX-License-Identifier: CC0-1.0
1717

1818
**Beskrivning**:
1919

20-
RAP-LP är ett kommandoradsverktyg för att linta OpenAPI v3-definitioner med hjälp av [Spectral](https://github.com/stoplightio/spectral). Verktyget är specifikt utvecklat för att linta OpenAPI-definitioner enligt den svenska REST API-profilens specifikation [REST API-profil](https://dev.dataportal.se/rest-api-profil).
20+
RAP-LP är ett kommandoradsverktyg för att linta OpenAPI v3-definitioner med hjälp av [Spectral](https://github.com/stoplightio/spectral).<br>
21+
Verktyget är specifikt utvecklat för att linta OpenAPI-definitioner enligt den svenska REST API-profilens specifikation [REST API-profil](https://dev.dataportal.se/rest-api-profil).
2122

2223
## Innehållsförteckning
2324

2425
- [REST API-profil - Lint Processor (RAP-LP)](#rest-api-profil---lint-processor-rap-lp)
2526
- [Innehållsförteckning](#innehållsförteckning)
26-
- [Installation och krav](#installation-och-krav)
2727
- [Instruktioner för att komma igång snabbt](#instruktioner-för-att-komma-igång-snabbt)
2828
- [Versioner](#versioner)
2929
- [Användning](#användning)
3030
- [Begränsningar](#begränsningar)
3131
- [Support](#support)
32+
- [FAQ](#faq)
3233
- [Bidra](#bidra)
3334
- [Utveckling](#utveckling)
3435
- [Licens](#licens)
3536
- [Underhållare](#underhållare)
3637
- [Krediter och referenser](#krediter-och-referenser)
3738

38-
## Installation och krav
39+
## Instruktioner för att komma igång snabbt
3940

40-
Det enklaste sättet att installera RAP-LP är genom att använda [npm](https://www.npmjs.com/):
41+
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`.
4142

42-
1. Klona ned projektet från senaste release, gärna via latest release tag.
43-
2. Installera alla beroenden:
43+
### NPM
44+
> Notera: Att GitHub Packages (npm) kräver authentisering.<br>
45+
> Konfigurera `.npmrc` mot rätt registry och scope, antingen globalt eller lokalt för enskilda projekt - `@diggsweden:registry=https://npm.pkg.github.com`<br>
46+
> Om du saknar inloggning med GitHub Personal access token (PAT), se [FAQ](#hur-skapar-jag-ett-github-personal-access-token-pat).
47+
48+
> Notera: Att `<version>` byts ut mot önskad version av verktyget, oftast senaste release tag. För mer information se [versioner](#versioner).
4449
50+
#### Installera globalt med npm:
4551
```bash
46-
npm install
52+
npm i -g @diggsweden/rest-api-profil-lint-processor@<version>
53+
raplp -f openapi.yaml
4754
```
55+
> Notera: Att en omstart av terminal kan behövas för att `raplp` ska kunna användas som kommando.
4856
49-
## Instruktioner för att komma igång snabbt
57+
#### Installera lokalt som `npm run` script
58+
59+
Installera och lägg som `devDependencies`:
60+
61+
```
62+
npm i --save-dev @diggsweden/rest-api-profil-lint-processor@<version>
63+
```
64+
65+
Lägg till ett [`npm run` script](https://docs.npmjs.com/cli/run-script) i din `package.json` med rätt sökväg till filen du vill validera:
66+
67+
```json
68+
{
69+
"scripts": {
70+
"lint-processor": "raplp -f openapi.yaml"
71+
}
72+
}
73+
```
5074

51-
Använd det här kommandot för att köra applikationen mot en YAML-fil:
75+
Nu kan du använda `npm run lint-processor`.
5276

77+
### NPX
78+
Kör utan installation och package.json:
5379
```bash
54-
npm start -- -f PATH_TO_THE_YAML_FILE
80+
npx @diggsweden/rest-api-profil-lint-processor@<version> -f openapi.yaml
5581
```
5682

57-
**Exempel**
83+
> Notera: Att npx laddar ned paketet till en tillfällig cache-mapp om det inte redan finns en version i node_modules/.bin
5884
85+
### Podman
86+
Kör med podman:
5987
```bash
60-
npm start -- -f apis/dok-api.yaml
88+
podman run --rm -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml
6189
```
6290

91+
### Docker
92+
Kör med docker:
93+
```bash
94+
docker run --rm -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml
95+
```
96+
> Notera: Sökvägar kan hanteras olika beroende på miljö:
97+
> - Podman (Linux/macOS/WSL): -v $(pwd):/app/example
98+
> - Docker (PowerShell): -v "${PWD}:/app/example"
99+
> - Docker (CMD): -v %cd%:/app/example
100+
101+
### Bygga från källkod
102+
1. Klona ned projektet, gärna från senaste release tag.
103+
2. Installera alla beroenden:
104+
105+
```bash
106+
npm install
107+
npm start -- -f openapi.yaml
108+
```
109+
> Notera: Att alla kommandon lokalt körs med `npm start --`.
110+
63111
## Versioner
64-
Senaste release tag ska alltid vara stabil och testad, vilket gör den till den föredragna versionen för att nyttja verktyget.
112+
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.
113+
114+
**Stabila versioner**<br>
115+
[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>
116+
Dessa versioner är taggade med `vX.X.X` utan något suffix.
117+
118+
**Pre-release- och testversioner**<br>
119+
Pre-release-versioner är taggade med följande suffix:
120+
- alpha → tidig testversion, ofta instabil
121+
- beta → mer testad, men fortfarande pre-release
122+
- rc → nära färdigställande, stabil release candidate
123+
124+
Rena testversioner är taggade med `vX.X.X-dev` följt av namnet på den branchen.<br>
125+
Dessa versioner är byggda för att testa funktionalitet som är under utveckling.
65126

66-
Main och pre-releaser används med reservation för att all funktionalitet inte är garanterat stabil och testad.
127+
Alla versioner av verktyget hittar du här:
128+
- [Container Image](https://github.com/diggsweden/rest-api-profil-lint-processor/pkgs/container/rest-api-profil-lint-processor)
129+
- [NPM Package](https://github.com/diggsweden/rest-api-profil-lint-processor/pkgs/npm/rest-api-profil-lint-processor)
67130

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

70-
För att validera mot en specifik kategori av regler, lägg till `-c CategoryName`.
134+
### Tillgängliga flaggor
135+
136+
| Flagga | Beskrivning | Typ | Standard | Obligatorisk |
137+
|---|---|---|---|---|
138+
| `-f, --file` | Sökväg till OpenAPI-specifikation (YAML/JSON). | string || Ja |
139+
| `-c, --categories` | Regelkategorier separerade med kommatecken. Tillgängliga: `UfnRules, SakRules, VerRules, FnsRules, ArqRules, DokRules, AmeRules, ForRules, DotRules, FelRules`. | string || Nej |
140+
| `-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 |
141+
| `-a, --append` | Append—utökar loggen i befintlig felloggningsfil (om `--logError` används). | boolean | `false` | Nej |
142+
| `-d, --logDiagnostic` | Sökväg till fil för diagnostiseringsinformation från RAP-LP i JSON-format. | string || Nej |
143+
| `--dex` | Sökväg till fil för diagnostiseringsinformation från RAP-LP i Excel-format. | string || Nej |
144+
145+
146+
> Notera: Att `raplp` i alla kommandon nedan ersätts med respektive miljös sätt att köra verktyget (npm, docker eller podman).
147+
148+
### Validering med alla regler
149+
För att validera en openapi-definition med verktyget, lägg till `-f <YAML_FILE>`
150+
```bash
151+
raplp -f openapi.yaml
152+
```
71153

72154
### Validering med utvalda regler
73-
**Exempel**
155+
För att validera mot en specifik kategori av regler, lägg till `-c <CategoryName>`.<br>
156+
>Notera: Att du kan lägga till flera regler som en kommaseparerad lista.
74157
75158
```bash
76-
npm start -- -f apis/dok-api.yaml -c DokRules
159+
# Validera mot en specifik regel
160+
raplp -f openapi.yaml -c DokRules
161+
162+
# Validera mot flera regler
163+
raplp -f openapi.yaml -c DokRules,AmeRules,SakRules
77164
```
78165

79166
#### Tillgängliga kategorier med regler
@@ -85,140 +172,71 @@ npm start -- -f apis/dok-api.yaml -c DokRules
85172
- FelRules
86173
- FnsRules
87174
- ForRules
175+
- ResRules
88176
- SakRules
89177
- UfnRules
90178
- VerRules
91179

92-
För att spara meddelanden från felloggar, lägg till `-l FileName`.
93-
94-
95-
### Validering som skriver resultat till en valfri logfil
96-
97-
**Exempel**
180+
### Validering som skriver felmeddelanden till en valfri loggfil
181+
För att skriva felmeddelanden till en valfri loggfil, lägg till `-l <FILE>`
98182
```bash
99-
npm start -- -f apis/dok-api.yaml -l rap-lp.log
183+
raplp -f openapi.yaml -l raplp.log
100184
```
185+
> Notera: Att varje körning skriver över den tidigare loggfilen.
101186
102-
103-
### Validering som skriver resultat till en valfri logfil samt loggar i terminalen
104-
För att lägga till loggning, lägg till `-a`
105-
106-
**Exempel**
187+
För att lägga till loggning i samma fil, lägg till `-a`
107188
```bash
108-
npm start -- -f apis/dok-api.yaml -l rap-lp.log -a
189+
raplp -f openapi.yaml -l raplp.log -a
109190
```
110191

111192
### Validering som sparar loggdiagnostik i en fil
112-
För att spara loggdiagnostik i en fil, lägg till `-d FileName`
113-
114-
**Exempel**
193+
För att spara loggdiagnostik i en fil, lägg till `-d <FILE>`
115194

116195
```bash
117-
npm start -- -f apis/dok-api.yaml -d logDiagnostic.log
196+
raplp -f openapi.yaml -d logDiagnostic.log
118197
```
119198

120199
### Validering som sparar information om regelutfall i en Excel-fil
121200

122-
För att spara information om regelutfall från diagnostiseringen till en avstämningsfil i Excel, lägg till --dex.
123-
124-
Om en specifik sökväg till avstämningsfilen ska anges, kan denna läggas till. Om ingen sökväg anges, genererar verktyget automatiskt en ny avstämningsfil i den katalog där det körs.
201+
För att spara information om regelutfall från diagnostiseringen till en avstämningsfil i Excel, lägg till `--dex`.<br>
202+
Om en specifik sökväg till avstämningsfilen ska anges, kan denna läggas till.<br>
203+
Om ingen sökväg anges, genererar verktyget automatiskt en ny avstämningsfil i den katalog där det körs.
125204

126-
Avstämningsfilen i Excel har ett fast format. Om en egen version av filen ska användas, måste den utpekade resursen hämtas med en kompatibel version av REST API-profilen.
205+
[Avstämningsfilen](document/Avstaemning_REST_API_profil_v_1_2_0_0.xlsx) i Excel har ett fast format, om en egen version av filen ska användas måste den utpekade resursen hämtas med en kompatibel version av REST API-profilen.
127206

128207
**Exempel utan sökväg till avstämningsfil i Excel**
129208

130209
```bash
131-
npm start -- -f apis/dok-api.yaml --dex
210+
raplp -f openapi.yaml --dex
132211
```
133212

134213
**Exempel med sökväg till avstämningsfil i Excel**
135214

136215
```bash
137-
npm start -- -f apis/dok-api.yaml --dex path-to-excel-file
216+
raplp -f openapi.yaml --dex <PATH>
138217
```
139218

140219
### Visa information version
141220
För att visa aktuell version av verktyget, lägg till `--version`
142221

143-
**Exempel**
144-
145222
```bash
146-
npm start -- --version
223+
raplp --version
147224
```
148225

149226
### Visa hjälp
150227

151228
```bash
152-
npm start -- --help
229+
raplp --help
153230
```
154231

155-
### Användning via podman/docker
156-
157-
I en terminal kör:
158-
```bash
159-
podman run --rm -it -v $(pwd):/<PATH> ghcr.io/diggsweden/rest-api-profil-lint-processor:<VERSION X.X.X> -f <PATH>/<YAML_FILE>
160-
```
161-
* Där \<PATH> motsvarar den path i containern som du vill att nuvarande katalog \$(pwd) mountas in i, containern får tillgång till dina filer i \$(pwd).
162-
* Där \<YAML_FILE> motsvarar den filen som du vill applicera valideringen på.
163-
* Där \<VERSION> mostsvarar den version av rest-api-profilen som du vill nyttja.
164-
165-
Exempel
166-
```bash
167-
podman run -it -v $(pwd):/app/example ghcr.io/diggsweden/rest-api-profil-lint-processor:1.0.0 -f example/dot-api.yaml -l example/test.log --dex example/avstamning.xlsx
168-
```
169-
170-
Vid eventuella fel och du inte hittar rap-lp-error.log kan du behöva köra kommandot via containern enligt den alternativa instruktionen nedan. Se till att containern har rättigheter att skriva till den katalog som du mountar, se [Skrivåtkomst till mount från container](#skrivåtkomst-till-mount-från-container).
171-
172-
#### Alternativ att köra ifrån containern
173-
1. Starta en podman container:
174-
- podman run --rm -it --entrypoint /bin/sh -v $(pwd):/\<PATH> ghcr.io/diggsweden/rest-api-profil-lint-processor:0.3.0
175-
2. Kör din validering ifrån containern:
176-
- npm start -- -f \<PATH-TO-FILE>
177-
3. Lägg på önskade flaggor enligt tidigare exempel.
178-
179-
Exempel:
180-
```bash
181-
$ podman run --rm -it --entrypoint /bin/sh -v $(pwd):/apis ghcr.io/diggsweden/rest-api-profil-lint-processor:0.3.0
182-
183-
/app: $ npm start -- -f apis/dot-api.yaml -l test.log --dex example.xlsx
184-
```
185-
186-
### Eventuella hinder med podman-kommando
187-
188-
#### Access till registry
189-
190-
Du kan behöva ett Personal Access Token (PAT) för din användare i github för att kunna hämta images från Github Container Registry (GHCR).
191-
1. Skapa PAT i github via settings -> developer settings -> tokens -> generate new token.
192-
- viktigt att sätta read:packages
193-
- spara ned ditt token
194-
2. Logga in med:
195-
- kör i en terminal: podman login ghcr.io
196-
- användarnamn: Ditt github-användarnamn.
197-
- lösenord: ditt token från tidigare steg.
198-
3. Validera enligt tidigare exempel.
199-
200-
#### Skrivåtkomst till mount från container
201-
1. Kolla rättigheter
202-
```bash
203-
ls -ld /path/to/mount
204-
```
205-
2. För att testa om det är ett åtkomstproblem kan du temporärt prova om det går efter du gett alla skrivrättigheter till den mountade katalogen:
206-
```bash
207-
sudo chmod 777 /path/to/mount
208-
```
209-
3. Beroende på din miljö och vilka möjligheter du har, hantera åtkomstproblemet mer beständigt och återställ tidigare läs- och skrivrättigheter.
210-
4. Du kan även prova:
211-
```bash
212-
sudo podman run -it -v $(pwd):/app/example ghcr.io/diggsweden/rest-api-profil-lint-processor:1.0.0 -f example/dot-api.yaml -l example/test.log --dex example/avstamning.xlsx
213-
```
214-
215232
### Riktlinjer och förklaringar
216233
Vill du veta mer om de specifika reglerna som verktyget tillämpar, se avsnittet [GUIDELINES](GUIDELINES.md) för detaljer.
217234

218235

219236
### Förklaring av översikt för regelutfall
220237

221-
Om man väljer att köra verktyget i console läge, så kommer diagnostiseringsinformationen på stdout. I denna så kommer en sammanställning av det totala regelutfallet att visas.
238+
Om man väljer att köra verktyget i console läge, så kommer diagnostiseringsinformationen på stdout.<br>
239+
I denna så kommer en sammanställning av det totala regelutfallet att visas.
222240

223241
- Verkställda och godkända regler:
224242
- OK = Krav bedömt och hanterat för att möta kravet
@@ -231,7 +249,9 @@ Om man väljer att köra verktyget i console läge, så kommer diagnostiseringsi
231249

232250
![alt text](document/instructions/images/regelutfall.png)
233251

234-
I exemplet ovan framgår det att kraven för reglerna AME.05 och VER.05 är godkända och att det aktuella API:et uppfyller dessa. Däremot är kravet för regeln DOK.03 inte godkänt, vilket innebär att API:et inte möter detta krav. Dessutom framgår det att reglerna SAK.10 och DOK.01 inte är tillämpade för det aktuella API:et.
252+
I exemplet ovan framgår det att kraven för reglerna AME.05 och VER.05 är godkända och att det aktuella API:et uppfyller dessa.<br>
253+
Däremot är kravet för regeln DOK.03 inte godkänt, vilket innebär att API:et inte möter detta krav.<br>
254+
Dessutom framgår det att reglerna SAK.10 och DOK.01 inte är tillämpade för det aktuella API:et.
235255

236256
**Förklaring av detaljering för regelutfall:**
237257

@@ -248,9 +268,13 @@ Tillsammans med diagnostiseringsinformationen följer en detaljerad beskrivning
248268

249269
![alt text](document/instructions/images/regelutfall-2.png)
250270

251-
I exemplet ovan framgår det att kravet för regeln DOK.01 inte är godkänt och att det aktuella API:et inte uppfyller detta. Kravet har bedömts ha allvarlighetsgraden Error eftersom API:et bryter mot ett SKALL/SKALL INTE-krav i REST API-profilen. Det finns också information om var i den aktuella OpenAPI-specifikationen problemet återfinns.
271+
I exemplet ovan framgår det att kravet för regeln DOK.01 inte är godkänt och att det aktuella API:et inte uppfyller detta.<br>
272+
Kravet har bedömts ha allvarlighetsgraden Error eftersom API:et bryter mot ett SKALL/SKALL INTE-krav i REST API-profilen.<br>
273+
Det finns också information om var i den aktuella OpenAPI-specifikationen problemet återfinns.
252274

253-
Vidare framgår det att kravet för regeln DOK.03 inte är godkänt och att det aktuella API:et inte möter detta krav. Kravet har bedömts ha allvarlighetsgraden Warning eftersom API:et bryter mot ett BÖR/BÖR INTE-krav i REST API-profilen. Även här finns information om var i den aktuella OpenAPI-specifikationen problemet återfinns.
275+
Vidare framgår det att kravet för regeln DOK.03 inte är godkänt och att det aktuella API:et inte möter detta krav.<br>
276+
Kravet har bedömts ha allvarlighetsgraden Warning eftersom API:et bryter mot ett BÖR/BÖR INTE-krav i REST API-profilen.<br>
277+
Även här finns information om var i den aktuella OpenAPI-specifikationen problemet återfinns.
254278

255279
## Begränsningar
256280

@@ -260,9 +284,29 @@ Vidare framgår det att kravet för regeln DOK.03 inte är godkänt och att det
260284

261285
Om du har frågor, funderingar, buggrapporter etc, vänligen kontakta [Digg - Agency for Digital Government](https://www.digg.se/)
262286

287+
## FAQ
288+
### Hur skapar jag ett GitHub Personal Access Token (PAT)?
289+
1. Gå till GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token → Generate new token (classic).
290+
2. Sätt en beskrivning för ditt token under `Note` och ett utgångsdatum under `Expiration` (ha utgångsdatum!).
291+
3. Select scopes → read:packages
292+
4. Skapa token → kopiera värdet direkt (visas bara en gång).
293+
294+
```bash
295+
npm login --registry=https://npm.pkg.github.com
296+
# username: ditt GitHub-användarnamn
297+
# password: GitHub PAT med read:packages
298+
```
299+
300+
```bash
301+
podman login ghcr.io
302+
# username: ditt GitHub-användarnamn
303+
# password: GitHub PAT med read:packages
304+
```
305+
263306
## Bidra
264307

265-
Om du vill bidra till projektet, vänligen följ instruktionerna i avsnittet [Contributing](CONTRIBUTING.md).
308+
Om du vill bidra till projektet, vänligen följ instruktionerna i avsnittet [Contributing](CONTRIBUTING.md).<br>
309+
För utvecklare finns det mer information i avsnittet [Development](development/DEVELOPMENT.md).
266310

267311
## Utveckling
268312

0 commit comments

Comments
 (0)