fix: context handling
All checks were successful
Release Secrets Manager Action / build (push) Successful in 1m10s
All checks were successful
Release Secrets Manager Action / build (push) Successful in 1m10s
This commit is contained in:
parent
c302a35868
commit
dbae38d884
1 changed files with 47 additions and 18 deletions
65
main.go
65
main.go
|
|
@ -1,14 +1,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bufio"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"secretsmanager/config"
|
"secretsmanager/config"
|
||||||
"secretsmanager/secretsmanager"
|
"secretsmanager/secretsmanager"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/caarlos0/env/v11"
|
"github.com/caarlos0/env/v11"
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
|
|
@ -38,37 +39,65 @@ func main() {
|
||||||
log.Fatalf("Error retrieving secrets: %s", err)
|
log.Fatalf("Error retrieving secrets: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for key, value := range data {
|
dataSorted, err := sortMap(data)
|
||||||
err = exportToPipeline(key, value)
|
if err != nil {
|
||||||
if err != nil {
|
log.Fatalf("Error sorting secrets: %s", err)
|
||||||
log.Fatalf("error exporting secret to pipeline: %s", err)
|
}
|
||||||
}
|
|
||||||
|
err = exportToPipeline(dataSorted)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("error exporting secret to pipeline: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func exportToPipeline(key string, value interface{}) error {
|
func sortMap(data map[string]interface{}) (map[string]interface{}, error) {
|
||||||
|
keys := make([]string, len(data))
|
||||||
|
for k := range data {
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
sort.Strings(keys)
|
||||||
|
result := make(map[string]interface{})
|
||||||
|
for _, k := range keys {
|
||||||
|
result[k] = data[k]
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func exportToPipeline(data map[string]interface{}) error {
|
||||||
outputFile := os.Getenv("GITHUB_OUTPUT")
|
outputFile := os.Getenv("GITHUB_OUTPUT")
|
||||||
if outputFile == "" {
|
if outputFile == "" {
|
||||||
return fmt.Errorf("env var GITHUB_OUTPUT not found (are we running in a pipeline?)")
|
return fmt.Errorf("env var GITHUB_OUTPUT not found (are we running in a pipeline?)")
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := os.OpenFile(outputFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
f, err := os.OpenFile(outputFile, os.O_APPEND|os.O_WRONLY, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error opening GITHUB_OUTPUT: %w", err)
|
return fmt.Errorf("error opening GITHUB_OUTPUT: %w", err)
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
var outputString string
|
w := bufio.NewWriter(f)
|
||||||
if s, ok := value.(string); ok {
|
|
||||||
outputString = fmt.Sprintf("%s=%s\n", key, value)
|
for key, value := range data {
|
||||||
if strings.Contains(s, "\n") {
|
if key == "" || value == nil {
|
||||||
delimiter := "EOF"
|
continue
|
||||||
outputString = fmt.Sprintf("%s=<<%s\n%s\n%s\n", key, delimiter, value, delimiter)
|
}
|
||||||
|
var outputString string
|
||||||
|
outputString = fmt.Sprintf("%s=%v\n", key, value)
|
||||||
|
|
||||||
|
if s, ok := value.(string); ok {
|
||||||
|
if strings.Contains(s, "\n") {
|
||||||
|
delimiter := "EOF"
|
||||||
|
outputString = fmt.Sprintf("%s=<<%s\n%s\n%s\n", key, delimiter, value, delimiter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := w.WriteString(outputString); err != nil {
|
||||||
|
return fmt.Errorf("failed writing to GITHUB_OUTPUT: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
err = w.Flush()
|
||||||
if _, err := f.WriteString(outputString); err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed writing to GITHUB_OUTPUT: %w", err)
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue