MCPcopy Index your code
hub / github.com/rilldata/rill / pullEnv

Method pullEnv

runtime/runtime.go:279–344  ·  view source on GitHub ↗
(ctx context.Context, instanceID string)

Source from the content-addressed store, hash-verified

277}
278
279func (r *Runtime) pullEnv(ctx context.Context, instanceID string) (int, bool, error) {
280 inst, err := r.Instance(ctx, instanceID)
281 if err != nil {
282 return 0, false, err
283 }
284
285 repo, release, err := r.Repo(ctx, instanceID)
286 if err != nil {
287 return 0, false, err
288 }
289 defer release()
290
291 // Fetch cloud variables if an admin connector is configured (not configured only for tests)
292 var cloudPerEnv map[string]map[string]string
293 if inst.AdminConnector != "" {
294 admin, release, err := r.Admin(ctx, instanceID)
295 if err != nil {
296 return 0, false, err
297 }
298 defer release()
299
300 cfg, err := admin.GetConfig(ctx)
301 if err != nil && !errors.Is(err, drivers.ErrNotAuthenticated) {
302 return 0, false, fmt.Errorf("failed to get project variables: %w", err)
303 }
304 if cfg != nil {
305 cloudPerEnv = cfg.Variables
306 }
307 }
308
309 // Parse local .env files
310 p, err := parser.Parse(ctx, repo, instanceID, inst.Environment, inst.OLAPConnector, false)
311 if err != nil {
312 return 0, false, fmt.Errorf("failed to parse project: %w", err)
313 }
314
315 localPerEnv := p.GetDotEnvPerEnvironment()
316
317 // Check if all environments are already up to date
318 equal := true
319 totalCount := 0
320 for env, cloudVars := range cloudPerEnv {
321 totalCount += len(cloudVars)
322 if !maps.Equal(cloudVars, localPerEnv[env]) {
323 equal = false
324 break
325 }
326 }
327
328 if equal {
329 return totalCount, false, nil
330 }
331
332 // Write merged variables per environment
333 for env, cloudVars := range cloudPerEnv {
334 merged := make(map[string]string)
335 maps.Copy(merged, localPerEnv[env])
336 maps.Copy(merged, cloudVars)

Callers 1

ReloadConfigMethod · 0.95

Calls 8

InstanceMethod · 0.95
RepoMethod · 0.95
AdminMethod · 0.95
ParseFunction · 0.92
writeEnvFunction · 0.85
GetConfigMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected