in commands/variable/export/export.go [167:225]
func printGroupVariables(variables []*gitlab.GroupVariable, opts *ExportOpts, out io.Writer) error {
if !isValidEnvironmentScope((opts.Scope)) {
return fmt.Errorf("invalid environment scope: %s", opts.Scope)
}
writtenKeys := make([]string, 0)
switch opts.OutputFormat {
case "env":
for _, variable := range variables {
if matchesScope(variable.EnvironmentScope, opts.Scope) {
if !strings.Contains(variable.EnvironmentScope, "*") {
fmt.Fprintf(out, "%s=%s\n", variable.Key, variable.Value)
writtenKeys = append(writtenKeys, variable.Key)
}
}
}
keysMap := CreateWrittenKeysMap(writtenKeys)
for _, variable := range variables {
if matchesScope(variable.EnvironmentScope, opts.Scope) {
if !(keysMap[variable.Key]) && (strings.Contains(variable.EnvironmentScope, "*")) {
fmt.Fprintf(out, "%s=%s\n", variable.Key, variable.Value)
}
}
}
case "export":
for _, variable := range variables {
if matchesScope(variable.EnvironmentScope, opts.Scope) {
if !strings.Contains(variable.EnvironmentScope, "*") {
fmt.Fprintf(out, "export %s=%s\n", variable.Key, variable.Value)
writtenKeys = append(writtenKeys, variable.Key)
}
}
}
keysMap := CreateWrittenKeysMap(writtenKeys)
for _, variable := range variables {
if matchesScope(variable.EnvironmentScope, opts.Scope) {
if !(keysMap[variable.Key]) && (strings.Contains(variable.EnvironmentScope, "*")) {
fmt.Fprintf(out, "export %s=%s\n", variable.Key, variable.Value)
}
}
}
case "json":
filteredVariables := make([]*gitlab.GroupVariable, 0)
for _, variable := range variables {
if matchesScope(variable.EnvironmentScope, opts.Scope) {
filteredVariables = append(filteredVariables, variable)
}
}
res, err := marshalJson(filteredVariables)
if err != nil {
return err
}
fmt.Fprintln(out, string(res))
default:
return fmt.Errorf("unsupported output format: %s", opts.OutputFormat)
}
return nil
}