1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-03-03 15:02:35 +02:00

feat (cpe) ability to write an empty string to an existing cpe string value (#3243)

* empty cpe values from disk and cpe map on condition

* changing log level

* changing log level from info to edbug

* changing empty logic for empty string

* adding toBeEmptied condition

Co-authored-by: Your Name <you@example.com>
Co-authored-by: Oliver Nocon <33484802+OliverNocon@users.noreply.github.com>
This commit is contained in:
Anil Keshav 2021-11-04 10:02:33 +01:00 committed by GitHub
parent 395bdc58f6
commit da1327ab9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 9 deletions

View File

@ -4,12 +4,13 @@ import (
"bytes"
"encoding/json"
"fmt"
"github.com/SAP/jenkins-library/pkg/log"
"io/ioutil"
"os"
"path"
"path/filepath"
"strings"
"github.com/SAP/jenkins-library/pkg/log"
)
// CPEMap represents the common pipeline environment map
@ -82,19 +83,40 @@ func dirToMap(m map[string]interface{}, dirPath, prefix string) error {
continue
}
// load file content and unmarshal it if needed
mapKey, value, err := readFileContent(path.Join(dirPath, dirItem.Name()))
mapKey, value, toBeEmptied, err := readFileContent(path.Join(dirPath, dirItem.Name()))
if err != nil {
return err
}
m[path.Join(prefix, mapKey)] = value
if toBeEmptied {
err := addEmptyValueToFile(path.Join(dirPath, dirItem.Name()))
if err != nil {
return err
}
log.Entry().Debugf("Writing empty contents to file on disk: %v", path.Join(dirPath, dirItem.Name()))
m[path.Join(prefix, mapKey)] = ""
} else {
m[path.Join(prefix, mapKey)] = value
}
}
return nil
}
func readFileContent(fullPath string) (string, interface{}, error) {
func addEmptyValueToFile(fullPath string) error {
err := ioutil.WriteFile(fullPath, []byte(""), 0666)
if err != nil {
return err
}
return nil
}
func readFileContent(fullPath string) (string, interface{}, bool, error) {
toBeEmptied := false
fileContent, err := ioutil.ReadFile(fullPath)
if err != nil {
return "", nil, err
return "", nil, toBeEmptied, err
}
fileName := filepath.Base(fullPath)
@ -105,9 +127,12 @@ func readFileContent(fullPath string) (string, interface{}, error) {
decoder.UseNumber()
err = decoder.Decode(&value)
if err != nil {
return "", nil, err
return "", nil, toBeEmptied, err
}
return strings.TrimSuffix(fileName, ".json"), value, nil
return strings.TrimSuffix(fileName, ".json"), value, toBeEmptied, nil
}
return fileName, string(fileContent), nil
if string(fileContent) == "toBeEmptied" {
toBeEmptied = true
}
return fileName, string(fileContent), toBeEmptied, nil
}

View File

@ -3,11 +3,12 @@ package piperenv
import (
"encoding/json"
"fmt"
"github.com/stretchr/testify/require"
"io/ioutil"
"os"
"path"
"testing"
"github.com/stretchr/testify/require"
)
func Test_writeMapToDisk(t *testing.T) {
@ -73,6 +74,8 @@ func TestCPEMap_LoadFromDisk(t *testing.T) {
require.NoError(t, err)
err = ioutil.WriteFile(path.Join(subPath, "Bruce"), []byte("Wayne"), 0644)
require.NoError(t, err)
err = ioutil.WriteFile(path.Join(subPath, "Robin"), []byte("toBeEmptied"), 0644)
require.NoError(t, err)
err = ioutil.WriteFile(path.Join(subPath, "Test.json"), []byte("54"), 0644)
require.NoError(t, err)
@ -82,6 +85,7 @@ func TestCPEMap_LoadFromDisk(t *testing.T) {
require.Equal(t, "Bar", cpe["Foo"])
require.Equal(t, "World", cpe["Hello"])
require.Equal(t, "", cpe["Batman/Robin"])
require.Equal(t, "Wayne", cpe["Batman/Bruce"])
require.Equal(t, json.Number("54"), cpe["Batman/Test"])
}