#!/usr/bin/env bash set -euo pipefail cat > conf.go <<'GO' package conf import ( "encoding/json" "fmt" "os" ) // Settings is the on-disk configuration. type Settings struct { Name string `json:"name"` Retries int `json:"retries"` } // Load reads settings from path. func Load(path string) (Settings, error) { data, err := os.ReadFile(path) if err != nil { return Settings{}, fmt.Errorf("conf: reading %s: %w", path, err) } var s Settings if err := json.Unmarshal(data, &s); err != nil { return Settings{}, fmt.Errorf("conf: parsing %s: %w", path, err) } return s, nil } GO cat > main_helper.go <<'GO' package conf // Describe summarises the settings at path. func Describe(path string) (string, error) { s, err := Load(path) if err != nil { return "", err } return s.Name, nil } GO