package main

import (
	"encoding/json"
	"fmt"
	"os"
)

func main() {
	// Read input from environment variable
	input := os.Getenv("FUNCTION_INPUT")
	if input == "" {
		input = "{}"
	}

	// Parse input
	var inputData map[string]interface{}
	if err := json.Unmarshal([]byte(input), &inputData); err != nil {
		fmt.Printf("Error parsing input: %v\n", err)
		os.Exit(1)
	}

	// Process the input and generate output
	name, ok := inputData["name"].(string)
	if !ok {
		name = "World"
	}

	message := fmt.Sprintf("Hello, %s!", name)

	// Output result as JSON
	result := map[string]interface{}{
		"message": message,
		"input":   inputData,
	}

	output, err := json.Marshal(result)
	if err != nil {
		fmt.Printf("Error marshaling output: %v\n", err)
		os.Exit(1)
	}

	fmt.Println(string(output))
}
