Added 'only' option and ms-teams
This commit is contained in:
parent
3b77038bd4
commit
f219e70d83
7 changed files with 84 additions and 1 deletions
|
@ -6,6 +6,7 @@ import org.domaindrivenarchitecture.provs.configuration.application.CliTargetPar
|
||||||
import org.domaindrivenarchitecture.provs.configuration.domain.ConfigFileName
|
import org.domaindrivenarchitecture.provs.configuration.domain.ConfigFileName
|
||||||
import org.domaindrivenarchitecture.provs.configuration.domain.TargetCliCommand
|
import org.domaindrivenarchitecture.provs.configuration.domain.TargetCliCommand
|
||||||
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopCliCommand
|
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopCliCommand
|
||||||
|
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopSubmodule
|
||||||
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopType
|
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopType
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,10 +45,17 @@ open class CliArgumentsParser(name: String) : CliTargetParser(name) {
|
||||||
"c",
|
"c",
|
||||||
"the filename containing the yaml config",
|
"the filename containing the yaml config",
|
||||||
)
|
)
|
||||||
|
val only by option(
|
||||||
|
ArgType.Choice<DesktopSubmodule>(),
|
||||||
|
"only",
|
||||||
|
"o",
|
||||||
|
"provisions only parts ",
|
||||||
|
)
|
||||||
|
|
||||||
override fun execute() {
|
override fun execute() {
|
||||||
configFileName = cliConfigFileName?.let { ConfigFileName(it) }
|
configFileName = cliConfigFileName?.let { ConfigFileName(it) }
|
||||||
parsed = true
|
parsed = true
|
||||||
|
submodules = if (only != null) listOf(only!!.name.lowercase()) else null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,15 @@ import org.domaindrivenarchitecture.provs.framework.ubuntu.user.base.whoami
|
||||||
|
|
||||||
|
|
||||||
fun provisionDesktop(prov: Prov, cmd: DesktopCliCommand) {
|
fun provisionDesktop(prov: Prov, cmd: DesktopCliCommand) {
|
||||||
|
val submodules = cmd.submodules
|
||||||
// retrieve config
|
// retrieve config
|
||||||
val conf = if (cmd.configFile != null) getConfig(cmd.configFile.fileName) else DesktopConfig()
|
val conf = if (cmd.configFile != null) getConfig(cmd.configFile.fileName) else DesktopConfig()
|
||||||
prov.provisionWorkplace(cmd.type, conf.ssh?.keyPair(), conf.gpg?.keyPair(), conf.gitUserName, conf.gitEmail)
|
|
||||||
|
if (submodules == null) {
|
||||||
|
prov.provisionWorkplace(cmd.type, conf.ssh?.keyPair(), conf.gpg?.keyPair(), conf.gitUserName, conf.gitEmail)
|
||||||
|
} else {
|
||||||
|
prov.provisionDesktopSubmodules(submodules)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,3 +117,12 @@ fun Prov.provisionWorkplace(
|
||||||
}
|
}
|
||||||
ProvResult(true)
|
ProvResult(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Prov.provisionDesktopSubmodules(
|
||||||
|
submodules: List<String>,
|
||||||
|
) = task {
|
||||||
|
|
||||||
|
if (submodules.contains(DesktopSubmodule.TEAMS.name.lowercase())) {
|
||||||
|
installMsTeams()
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package org.domaindrivenarchitecture.provs.desktop.domain
|
||||||
|
|
||||||
|
enum class DesktopSubmodule {
|
||||||
|
TEAMS
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package org.domaindrivenarchitecture.provs.desktop.infrastructure
|
||||||
|
|
||||||
|
import org.domaindrivenarchitecture.provs.framework.core.Prov
|
||||||
|
import org.domaindrivenarchitecture.provs.framework.ubuntu.filesystem.base.createDir
|
||||||
|
import org.domaindrivenarchitecture.provs.framework.ubuntu.web.base.downloadFromURL
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ATTENTION: Download URL might be only valid for a limited time and thus might not be working.
|
||||||
|
*/
|
||||||
|
fun Prov.installCitrixWorkspaceApp() = task {
|
||||||
|
downloadFromURL("https://downloads.citrix.com/20976/linuxx64-22.5.0.16.tar.gz?__gda__=exp=1654847726~acl=/*~hmac=be248338ecd7c7de50950ff7825fc0a80577fef7d3610988c64391cff8eaca16", "xitrix.tar.gz", "/tmp")
|
||||||
|
createDir("xitrix", "/tmp")
|
||||||
|
cmd("tar -xf xitrix.tar.gz -C /tmp/xitrix")
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package org.domaindrivenarchitecture.provs.desktop.infrastructure
|
||||||
|
|
||||||
|
import org.domaindrivenarchitecture.provs.framework.core.Prov
|
||||||
|
import org.domaindrivenarchitecture.provs.framework.ubuntu.install.base.aptInstall
|
||||||
|
|
||||||
|
fun Prov.installMsTeams() = task {
|
||||||
|
aptInstall("curl")
|
||||||
|
cmd("curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -")
|
||||||
|
cmd("sudo sh -c 'echo \"deb [arch=amd64] https://packages.microsoft.com/repos/ms-teams stable main\" > /etc/apt/sources.list.d/teams.list'")
|
||||||
|
//cmd("sudo apt update")
|
||||||
|
aptInstall("teams")
|
||||||
|
//cmd("sudo apt install teams")
|
||||||
|
}
|
|
@ -14,4 +14,13 @@ internal class CliArgumentsParserTest {
|
||||||
assertEquals(null, cli.configFile)
|
assertEquals(null, cli.configFile)
|
||||||
assertEquals(true, cli.target.isValidLocalhost())
|
assertEquals(true, cli.target.isValidLocalhost())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun parse_cliCommand_with_only_submodule_teams_and_local_target() {
|
||||||
|
val cli = CliArgumentsParser("test").parseCommand(args = arrayOf("ide", "local", "-o", "teams"))
|
||||||
|
|
||||||
|
assertTrue(cli.isValid())
|
||||||
|
assertEquals(true, cli.target.isValidLocalhost())
|
||||||
|
assertEquals(true, cli.submodules?.contains("teams"))
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package org.domaindrivenarchitecture.provs.desktop.infrastructure
|
||||||
|
|
||||||
|
import org.domaindrivenarchitecture.provs.test.defaultTestContainer
|
||||||
|
import org.domaindrivenarchitecture.provs.test.tags.ContainerTest
|
||||||
|
import org.junit.jupiter.api.Assertions.assertTrue
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
class MsTeamsTest {
|
||||||
|
|
||||||
|
@ContainerTest
|
||||||
|
fun installMsTeams() {
|
||||||
|
// given
|
||||||
|
val a = defaultTestContainer()
|
||||||
|
// when
|
||||||
|
val res = a.task { installMsTeams() }
|
||||||
|
// then
|
||||||
|
assertTrue(res.success)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue