Formålet med dette dokument, er at beskrive systemkrav og opsætning for udviklere på projektet. Desuden beskrive en række værktøjer, der hjælper med udviklingen, som er anvendt i projektet.
-
Xcode, min version 12.4
Swiftlint, min. version 0.41.0.: https://github.com/realm/SwiftLint
Da alle filer skal indeholde headers, jvf. NSP anbefales det at man anvender følgende Xcode templates, når man koder for at garantere headers.
Kopier "NSP" mappen til følgende lokation:
/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates |
Derefter bør din mappestruktur ser sådan ud:![]()

For at få en "NSP" short cut til at indsætte copy right header kan nedenstående fil placeres på følgende path:
~/Library/Developer/Xcode/UserData/CodeSnippets |
Projektet indeholder en række tools, der anvendes under projektudvikling. De ligger alle i Tools mappen i repositoryet.
Alle strings er oprettet i følgende Google sheet (nedenstående link er view-only access):
https://docs.google.com/spreadsheets/d/1z4JOetw8HvD6h36hj29lx8iv97VG1DhSip-JhkIrg3c/edit?usp=sharing
Med følgende script kan man opdatere Localizable.strings så den svarer til indholdet i Google Sheet'et:
./Tools/update_strings.sh |
Desuden anvendes R.swift til at tilgå strings via et typealias: Localizable
Alle modeller der anvendes til JSON responses fra maternity API'et er genereret ud fra OpenAPI speccen. For at generere nye modeller anvendes følgende script:
./Tools/generate-models.sh |
For at undgå merge konflikter i projekt-filen, anbefales det at man - inden oprettelse af PR - anvender et script, der sorterer projekt-filen alfabetisk:
./Tools/sort-xcode.sh |
Projektet anvender Xocde Build Configurations til at styre forskellige build konfigurationer med.
Der eksisterer følgende konfigurationer:
enum BuildConfiguration: String {
case debug = "Debug"
case development = "Development"
case test = "Test"
case testMock = "TestMock"
case release = "Release"
} |
De forskellige konfigurationer udløser forskelligt setup af komponenter i app'en. Det ses i den statiske Configuration.build(for buildConfiguration: BuildConfiguration) -> Configuration metode.
Distribuering kræver at man opfylder kravene for at bygge projektet og at man har fastlane min. version 2.176.0: https://fastlane.tools/
Projektet distribueres som IPA med Enterprise certifikat (via Trifork's pt.). Det kræver at man har adgang til Min Graviditet (iOS) på https://insp.tpa.io/ og at man har en bruger med API key (der spørges efter denne i fastlane inden IPA'en uploades)
For at sikre ens distribuering af apps med forskellige konfigurationer, anvendes fastlane hvor følgende lanes eksisterer:
Se afsnit 5.3 ang. versionering af app'en.
...
Se afsnit 5.3 ang. versionering af app'en.
App'en kører efter en almindelig major.minor.patch versionering, som styres manuelt i xcodeproj-filen. Build nummeret opdateres automatisk med antallet git-commits, således at det altid ændrer sig, når man har lavet ændringer i koden.
Alle distribuerings fastlane lanes spørger om man vil bumpe versionsnummeret. Hvis der svares "y" opdateres projektfilens build nummer og ændringerne committes automatisk til git.
Fastlane lanes sørger desuden for altid at tagge med den valgte configuration, version og build nummer efter successful distribuering. Formatet er: CONFIGURATION_VERSION_BUILDNUMMER (Test_0.0.1_1000)