diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/infrastructure/ClojureScript.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/infrastructure/ClojureScript.kt index 1b7975d..9da60dc 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/infrastructure/ClojureScript.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/desktop/infrastructure/ClojureScript.kt @@ -3,9 +3,26 @@ package org.domaindrivenarchitecture.provs.desktop.infrastructure import org.domaindrivenarchitecture.provs.framework.core.Prov import org.domaindrivenarchitecture.provs.framework.core.ProvResult import org.domaindrivenarchitecture.provs.framework.ubuntu.install.base.aptInstall +import org.domaindrivenarchitecture.provs.framework.ubuntu.install.base.isPackageInstalled fun Prov.installShadowCljs(): ProvResult = task { - aptInstall("npm") - cmd("npm install -g npx", sudo = true) - cmd("npm install -g shadow-cljs", sudo = true) + + if (!isPackageInstalled("npm")) { + aptInstall("npm") + cmd("sudo npm install -g npx") + cmd("sudo npm install -g shadow-cljs") + } else { + val npmVersion = cmd("npm --version") + ProvResult(true, out = "Package npm v$npmVersion already installed. Checking shadow-cljs now.") + if (chk("npm list -g shadow-cljs|grep empty")) { + cmd("sudo npm install -g shadow-cljs") + } else { + ProvResult(true, out = "Package shadow-cljs already installed.") + } + if (chk("npm list -g npx|grep empty")) { + cmd("sudo npm install -g npx") + } else { + ProvResult(true, out = "Package npx already installed.") + } + } }