Files

4.6 KiB

Design Class Diagram

Metadata

Key Value
ID DCD-003
CrossReference DM-003, SD-002, DICT-001, UC-002, DCD-001

Version History

Date Status Author Reviewer Change Commit
2026-10-07 Proposed Jens Tirsvad Nielsen S02 Default configuration files: --config and --env, else ./config.env and ./.env in the working folder, else the checkout's 0ab5006
2026-10-07 Proposed Jens Tirsvad Nielsen S02 .env is optional (as in UC-001 extension 2b): only config.env is required; a .env found nowhere means the token is asked 24f1507

Purpose and Scope

Covers UC-002. Adds the classes that start the script through a command link. ProjectCreator, Configuration and Run are the classes of DCD-001 and change only as stated under Method Traceability. The consolidated diagram is DCD-002.

Diagram

@startuml
class Launcher {
  +resolveCheckout(invocation : Path) : Checkout
  +currentFolder() : WorkingFolder
  +locateConfigFiles(configPath : Path [0..1], envPath : Path [0..1], checkout : Checkout, workingFolder : WorkingFolder) : ConfigFiles
  +startFromWorkingFolder(configPath : Path [0..1], envPath : Path [0..1]) : PromptSet
}
class Checkout {
  -path : Path
  +configFile() : Path
  +envFile() : Path [0..1]
}
class WorkingFolder {
  -path : Path
  +configFile() : Path [0..1]
  +envFile() : Path [0..1]
}
class ConfigFiles {
  -configFile : Path
  -envFile : Path [0..1]
}
class ProjectCreator {
  +startProjectCreation(workingFolder : WorkingFolder, configFiles : ConfigFiles) : PromptSet
}
class Run
Launcher "1" --> "1" ProjectCreator : starts
Launcher ..> Checkout : creates
Launcher ..> WorkingFolder : creates
Launcher ..> ConfigFiles : creates
Run "1" *-- "1" ConfigFiles
Run "1" *-- "1" Checkout
Run "1" *-- "1" WorkingFolder
@enduml

Class Table

Class Refines (Domain Model concept) Responsibility Attributes Operations
Launcher Command Link (the object that follows it) Follows the command link to the checkout, takes the folder the Maintainer stands in, chooses the two configuration files, and starts the run. none resolveCheckout, currentFolder, locateConfigFiles, startFromWorkingFolder
Checkout Checkout Names the folder that holds the script's own files and the default config.env and .env. path configFile, envFile
WorkingFolder Working Folder Names the base of the default directory of the new project and the files it may hold. path configFile, envFile
ConfigFiles none (system concept of [OC-002]) Carries the two files chosen for the Configuration; envFile is absent when no credentials file was found. configFile, envFile none

The concept Command Link has no class: it is a link the Maintainer makes with the shell, and the system only follows it.

Method Traceability

Method signature Operation Contract / SD message
Launcher.startFromWorkingFolder(configPath, envPath) : PromptSet SD-002 startFromWorkingFolder; P1, P6
Launcher.resolveCheckout(invocation) : Checkout SD-002 resolveCheckout(invocation); P2
Launcher.currentFolder() : WorkingFolder SD-002 currentFolder(); P3
Launcher.locateConfigFiles(configPath, envPath, checkout, workingFolder) : ConfigFiles SD-002 locateConfigFiles(...); P5
WorkingFolder.configFile() : Path [0..1], WorkingFolder.envFile() : Path [0..1] SD-002 locateConfigFiles; P5
Checkout.configFile() : Path, Checkout.envFile() : Path SD-002 locateConfigFiles; P5
ProjectCreator.startProjectCreation(workingFolder, configFiles) : PromptSet SD-002 startProjectCreation; P4, P6, P7. Replaces the signature of DCD-001 by adding workingFolder and configFiles

Pattern Annotations

Pattern Classes Rationale
Controller Launcher One class takes the system operation of UC-002
Information Expert Launcher, Checkout The launcher knows the invocation; the checkout knows where its files are

Dependency Check

Launcher depends on ProjectCreator, Checkout, WorkingFolder and ConfigFiles; none of them depends on Launcher, so no cycle is added.