From f99d0e3c3170d36b693aa0b5f438f84a9101c97a Mon Sep 17 00:00:00 2001 From: David Kwon Date: Fri, 19 Apr 2024 16:23:50 -0400 Subject: [PATCH] Update default entrypoint script Signed-off-by: David Kwon --- pkg/library/home/persistentHome.go | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/pkg/library/home/persistentHome.go b/pkg/library/home/persistentHome.go index 841ae31b8..77ef652c1 100644 --- a/pkg/library/home/persistentHome.go +++ b/pkg/library/home/persistentHome.go @@ -135,23 +135,36 @@ func addInitContainer(dwTemplateSpec *v1alpha2.DevWorkspaceTemplateSpec, initCon } func inferInitContainer(dwTemplateSpec *v1alpha2.DevWorkspaceTemplateSpec) *v1alpha2.Container { - var firstUnflattenedComponent v1alpha2.Component + var nonImportedComponent v1alpha2.Component for _, component := range dwTemplateSpec.Components { if component.Container == nil { continue } - var err error - component.Attributes.Get(constants.MergedContributionsAttribute, &err) - if err == nil { - firstUnflattenedComponent = component + pluginSource := component.Attributes.GetString(constants.PluginSourceAttribute, nil) + if pluginSource == "" || pluginSource == "parent" { + // First, non-imported container component is selected + nonImportedComponent = component break } } - if firstUnflattenedComponent.Name != "" { - image := firstUnflattenedComponent.Container.Image - command := []string{"/bin/sh", "-c", "/entrypoint.sh || true"} + createOutFile := "touch /home/user/.init-persistent-home" + runSetupScript := `([ -n "$HOME_SETUP_SCRIPT" ] && [ -f "$HOME_SETUP_SCRIPT" ] && echo "Running $HOME_SETUP_SCRIPT" && (source "$HOME_SETUP_SCRIPT" || true))` + runStow := ` + (command -v stow > /dev/null && \ + STOW_COMPLETE=/home/user/.stow_completed && \ + [ ! -f $STOW_COMPLETE ] && \ + echo "Running/ stow" && \ + stow . -t /home/user/ -d /home/tooling/ --no-folding --adopt -v 2 > /tmp/stow.log 2>&1 && \ + cp /home/tooling/.viminfo /home/user/.viminfo && \ + cp /home/tooling/.bashrc /home/user/.bashrc && \ + cp /home/tooling/.bash_profile /home/user/.bash_profile && \ + touch $STOW_COMPLETE + )` + if nonImportedComponent.Name != "" { + image := nonImportedComponent.Container.Image + command := []string{"/bin/sh", "-c", "(" + createOutFile + " && " + runSetupScript + " || " + runStow + " || true) > /home/user/.init-persistent-home 2>&1"} return &v1alpha2.Container{ Image: image,