MCPcopy Index your code
hub / github.com/devspace-sh/devspace / runHook

Function runHook

pkg/devspace/hook/hook.go:138–176  ·  view source on GitHub ↗
(ctx devspacecontext.Context, hookConfig *latest.HookConfig, extraEnv map[string]string, event string)

Source from the content-addressed store, hash-verified

136}
137
138func runHook(ctx devspacecontext.Context, hookConfig *latest.HookConfig, extraEnv map[string]string, event string) error {
139 // Determine output writer
140 var writer io.WriteCloser
141 if hookConfig.Silent {
142 writer = logpkg.WithNopCloser(&bytes.Buffer{})
143 } else if ctx.Log() == logpkg.GetInstance() {
144 writer = logpkg.WithNopCloser(stdout)
145 } else {
146 writer = ctx.Log().Writer(logrus.InfoLevel, false)
147 }
148 defer writer.Close()
149
150 // Decide which hook type to use
151 var hook Hook
152 if hookConfig.Container != nil {
153 if hookConfig.Upload != nil {
154 hook = NewRemoteHook(NewUploadHook())
155 } else if hookConfig.Download != nil {
156 hook = NewRemoteHook(NewDownloadHook())
157 } else if hookConfig.Logs != nil {
158 // we use another waiting strategy here, because the pod might has finished already
159 hook = NewRemoteHookWithWaitingStrategy(NewLogsHook(writer), targetselector.NewUntilNotWaitingStrategy(time.Second*2))
160 } else if hookConfig.Wait != nil {
161 hook = NewWaitHook()
162 } else {
163 hook = NewRemoteHook(NewRemoteCommandHook(writer, writer))
164 }
165 } else {
166 hook = NewLocalCommandHook(writer, writer)
167 }
168
169 // Execute the hook
170 err := executeHook(ctx, hookConfig, writer, extraEnv, hook, event)
171 if err != nil {
172 return err
173 }
174
175 return nil
176}
177
178func executeHook(ctx devspacecontext.Context, hookConfig *latest.HookConfig, hookWriter io.WriteCloser, extraEnv map[string]string, hook Hook, event string) error {
179 hookLog := ctx.Log()

Callers 1

executeSingleFunction · 0.85

Calls 13

NewRemoteHookFunction · 0.85
NewUploadHookFunction · 0.85
NewDownloadHookFunction · 0.85
NewLogsHookFunction · 0.85
NewWaitHookFunction · 0.85
NewRemoteCommandHookFunction · 0.85
NewLocalCommandHookFunction · 0.85
executeHookFunction · 0.85
LogMethod · 0.65
WriterMethod · 0.65

Tested by

no test coverage detected