provs/doc/dev/architecture.md

1.7 KiB

Initialization

sequenceDiagram
    actor user
    participant app as Application
    participant ds as DesktopService
    participant gtr as GitTrustFactory
    participant  pa as CliArgumentsParser
    participant  cr as DesktopConfigRepository
    participant ut as CliUtils
    participant su as ProvsWithSudo
    
    user ->> app: main
    activate app
    app ->> pa: parseCommands
    app ->> cr: getConfig(configFileName)
    app ->> ut: createProvInstance(cmd.target)
    app ->> su: ensureSudoWithoutPassword(cmd.target.remoteTarget()?.password)
    app ->> ds: provisionDesktopCommand(cmd, config)
    activate ds
    ds ->> gtr : get("github", "gitlab")
    gtr -->> ds: GitTrust
    deactivate ds
    deactivate app

Domain

classDiagram
    namespace configuration {
        class TargetCliCommand {
            val target: String,
            val passwordInteractive: Boolean = false
        }
        class ConfigFileName {
            fileName: String
            }
    }

    namespace desktop {
        class DesktopCliCommand {
        }

        class DesktopConfig {
            val ssh: SshKeyPairSource? = null,
            val gpg: KeyPairSource? = null,
            val gitUserName: String? = null,
            val gitEmail: String? = null,
        }

        class DesktopType {
            val name: String
        }
        class DesktopOnlyModule {
            <<enum>>
            FIREFOX, VERIFY
        }
    }

    DesktopCliCommand "1" *-- "1" DesktopType: type
    DesktopCliCommand "1" *-- "1" TargetCliCommand: target
    DesktopCliCommand "1" *-- "1" ConfigFileName: configFile
    DesktopCliCommand "1" *-- "..n" DesktopOnlyModule: onlyModules