/* Copyright © 2026 Craig Williams This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ package cli import ( "context" "git.avsdev.uk/Go/job-search/internal/config" ) // Define a private key type to avoid collisions type configContextKey struct { name string } // Define the key var configKey = &configContextKey{"config"} // Public accessor to store a value to ctx func WithConfig(ctx context.Context, conf config.JobSearchConfig) context.Context { // No allocation here since userIDKey is a pointer to a struct return context.WithValue(ctx, configKey, conf) } // Public accessor to fetch a value from ctx func ConfigFromContext(ctx context.Context) (config.JobSearchConfig, bool) { v, ok := ctx.Value(configKey).(config.JobSearchConfig) return v, ok }