func()

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
}