From b265824b63180945e464eff594cef634c8d88d52 Mon Sep 17 00:00:00 2001 From: jerger Date: Thu, 30 Jun 2022 09:00:42 +0200 Subject: [PATCH] refactrored desktop mappings --- .../provs/desktop/domain/DesktopService.kt | 112 ++++++++++-------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/domain/DesktopService.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/domain/DesktopService.kt index e53ce95..f93b631 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/domain/DesktopService.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/domain/DesktopService.kt @@ -43,21 +43,82 @@ fun Prov.provisionDesktop( gitEmail: String? = null, ) = task { + // TODO: jem - 2022-06-30: why?? We got already a typed var! DesktopType.valueOf(desktopType.name) // throws exception when desktopType.name is unknown + validatePrecondition() + provisionBaseDesktop(gpg, ssh, gitUserName, gitEmail) + + if (desktopType == DesktopType.OFFICE || desktopType == DesktopType.IDE) { + provisionOfficeDesktop() + } + if (desktopType == DesktopType.IDE) { + provisionIdeDesktop() + } + ProvResult(true) +} + +private fun Prov.validatePrecondition() { if (!currentUserCanSudo()) { throw Exception("Current user ${whoami()} cannot execute sudo without entering a password! This is necessary to execute provisionDesktop") } +} +private fun Prov.provisionIdeDesktop() { + aptInstall(JAVA) + aptInstall(OPEN_VPM) + aptInstall(OPENCONNECT) + aptInstall(VPNC) + installDocker() + + // IDEs + installVSC("python", "clojure") + aptInstall(CLOJURE_TOOLS) + installShadowCljs() + installIntelliJ() + installDevOps() + provisionPython() +} + +private fun Prov.provisionOfficeDesktop() { + aptInstall(ZIP_UTILS) + aptInstall(BROWSER) + aptInstall(EMAIL_CLIENT) + installDeltaChat() + aptInstall(OFFICE_SUITE) + aptInstall(CLIP_TOOLS) + installZimWiki() + installGopass() + aptInstallFromPpa("nextcloud-devs", "client", "nextcloud-client") + + optional { + aptInstall(DRAWING_TOOLS) + } + + aptInstall(SPELLCHECKING_DE) +} + +private fun Prov.provisionBaseDesktop( + gpg: KeyPair?, + ssh: KeyPair?, + gitUserName: String?, + gitEmail: String? +) { aptInstall(KEY_MANAGEMENT) aptInstall(VERSION_MANAGEMENT) aptInstall(NETWORK_TOOLS) aptInstall(SCREEN_TOOLS) + aptInstall(KEY_MANAGEMENT_GUI) + aptInstall(PASSWORD_TOOLS) + aptInstall(OS_ANALYSIS) + aptInstall(BASH_UTILS) provisionKeys(gpg, ssh) provisionGit(gitUserName ?: whoami(), gitEmail, gpg?.let { gpgFingerprint(it.publicKey.plain()) }) installVirtualBoxGuestAdditions() + installRedshift() + configureRedshift() aptPurge( "remove-power-management xfce4-power-manager " + @@ -67,58 +128,7 @@ fun Prov.provisionDesktop( aptPurge("popularity-contest") configureNoSwappiness() - configureBash() - - if (desktopType == DesktopType.OFFICE || desktopType == DesktopType.IDE) { - aptInstall(KEY_MANAGEMENT_GUI) - aptInstall(BASH_UTILS) - aptInstall(OS_ANALYSIS) - aptInstall(ZIP_UTILS) - aptInstall(PASSWORD_TOOLS) - - aptInstall(BROWSER) - aptInstall(EMAIL_CLIENT) - installDeltaChat() - aptInstall(OFFICE_SUITE) - aptInstall(CLIP_TOOLS) - - installZimWiki() - installGopass() - aptInstallFromPpa("nextcloud-devs", "client", "nextcloud-client") - - optional { - aptInstall(DRAWING_TOOLS) - } - - aptInstall(SPELLCHECKING_DE) - - installRedshift() - configureRedshift() - } - - if (desktopType == DesktopType.IDE) { - - aptInstall(JAVA) - - aptInstall(OPEN_VPM) - aptInstall(OPENCONNECT) - aptInstall(VPNC) - - installDocker() - - // IDEs - installVSC("python", "clojure") - aptInstall(CLOJURE_TOOLS) - installShadowCljs() - - installIntelliJ() - - installDevOps() - - provisionPython() - } - ProvResult(true) } private fun Prov.provisionDesktopSubmodules(