in packages/cli/internal/pkg/storage/input_client.go [63:113]
func (ic *InputInstance) updateInputsInFile(initialProjectDirectory string, inputFile map[string]interface{}, bucketName string, baseS3Key string, fileLocation string) error {
var updatedInputReferenceFile = make(map[string]interface{})
for key, value := range inputFile {
var inputReferences []string
switch typedValue := value.(type) {
case string:
inputReferences = strings.Split(typedValue, ",")
updatedReferences, err := ic.uploadReferencesToS3(inputReferences, initialProjectDirectory, bucketName, baseS3Key)
if err != nil {
return err
}
updatedInputReferenceFile[key] = strings.Join(updatedReferences, ",")
case []interface{}:
var updatedRef []interface{}
// We only support one level deep
for _, val := range typedValue {
stringValue, ok := val.(string)
if !ok {
updatedRef = append(updatedRef, val)
log.Debug().Msgf("The value %#v is not a string and will not be checked if it's an input file", val)
} else {
inputReferences = append(inputReferences, stringValue)
}
}
updatedReferences, err := ic.uploadReferencesToS3(inputReferences, initialProjectDirectory, bucketName, baseS3Key)
if err != nil {
return err
}
for _, val := range updatedReferences {
updatedRef = append(updatedRef, val)
}
updatedInputReferenceFile[key] = updatedRef
default:
updatedInputReferenceFile[key] = value
}
}
marshalledData, err := jsonMarshall(updatedInputReferenceFile)
if err != nil {
return err
}
err = ioutilWriteFile(fileLocation, marshalledData, 0644)
if err != nil {
return err
}
return nil
}