Files
cv-site/internal/models/cv/loader.go
T

42 lines
1.0 KiB
Go
Raw Normal View History

package cv
import (
"fmt"
"strings"
"time"
"github.com/juanatsap/cv-site/internal/fileutil"
"github.com/juanatsap/cv-site/internal/lang"
)
// LoadCV loads CV data from a JSON file for the specified language
func LoadCV(language string) (*CV, error) {
if err := lang.Validate(language); err != nil {
return nil, err
}
var cvData CV
filename := fmt.Sprintf("data/cv-%s.json", language)
if err := fileutil.LoadJSON(filename, &cvData); err != nil {
return nil, err
}
// Replace {{YEAR}} placeholder in reference URLs with current year
currentYear := fmt.Sprintf("%d", time.Now().Year())
for i := range cvData.References {
cvData.References[i].URL = replaceYearPlaceholder(cvData.References[i].URL, currentYear)
}
// Validate the loaded CV data
if err := cvData.Validate(); err != nil {
return nil, fmt.Errorf("validation failed: %w", err)
}
return &cvData, nil
}
// replaceYearPlaceholder replaces {{YEAR}} with the current year
func replaceYearPlaceholder(url string, year string) string {
return strings.ReplaceAll(url, "{{YEAR}}", year)
}