| 572 | } |
| 573 | |
| 574 | func filterPluginEnv(environ []string, pluginName, kind string) []string { |
| 575 | pluginEnv := make([]string, 0, len(environ)) |
| 576 | cleanName := strings.ReplaceAll(pluginName, "-", "_") |
| 577 | prefix := strings.ToUpper("__" + kind + "_" + cleanName + "__") |
| 578 | |
| 579 | globalEnvironmentVariables := map[string]string{} |
| 580 | specificEnvironmentVariables := map[string]bool{} |
| 581 | |
| 582 | for _, v := range environ { |
| 583 | switch { |
| 584 | case strings.HasPrefix(v, "CLOUDQUERY_API_KEY="), |
| 585 | strings.HasPrefix(v, "AWS_"): |
| 586 | k := getEnvKey(v) |
| 587 | globalEnvironmentVariables[k] = v |
| 588 | case strings.HasPrefix(v, "_CQ_TEAM_NAME="), |
| 589 | strings.HasPrefix(v, "_CQ_INSTALLATION_ID="), |
| 590 | strings.HasPrefix(v, "HOME="): |
| 591 | pluginEnv = append(pluginEnv, v) |
| 592 | case strings.HasPrefix(v, prefix): |
| 593 | cleanEnv := strings.TrimPrefix(v, prefix) |
| 594 | pluginEnv = append(pluginEnv, cleanEnv) |
| 595 | if strings.HasPrefix(cleanEnv, "CLOUDQUERY_API_KEY=") || |
| 596 | strings.HasPrefix(cleanEnv, "AWS_") { |
| 597 | k := getEnvKey(cleanEnv) |
| 598 | specificEnvironmentVariables[k] = true |
| 599 | } |
| 600 | } |
| 601 | } |
| 602 | for k, v := range globalEnvironmentVariables { |
| 603 | if _, ok := specificEnvironmentVariables[k]; !ok { |
| 604 | pluginEnv = append(pluginEnv, v) |
| 605 | } |
| 606 | } |
| 607 | return pluginEnv |
| 608 | } |
| 609 | |
| 610 | func getEnvKey(v string) string { |
| 611 | parts := strings.SplitN(v, "=", 2) |