blechelse-go/main.go
2025-03-30 14:26:03 +02:00

78 lines
2 KiB
Go

package main
import (
"encoding/csv"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"strings"
)
// Config represents the structure of the config.json file.
type Config struct {
BaseDir string `json:"Base_Dir"`
Modules []Module `json:"Modules"`
}
// Module represents a module entry in the config.json file.
type Module struct {
Name string `json:"Name"`
Path string `json:"Path"`
CSVFile string `json:"CSVFile"`
DefaultLanguage string `json:"Default_Language"`
DefaultVariants []string `json:"Default_Variants"`
}
func main() {
// Open the config.json file
configFilePath := "config.json"
data, err := ioutil.ReadFile(configFilePath)
if err != nil {
log.Fatalf("Error reading file: %v", err)
}
// Parse the JSON data into a Config struct
var config Config
err = json.Unmarshal(data, &config)
if err != nil {
log.Fatalf("Error parsing JSON: %v", err)
}
// Print the display texts of all modules as a comma-separated list
fmt.Println("Display Texts of Modules:")
for _, module := range config.Modules {
displayTexts := []string{}
csvFilePath := config.BaseDir + "/" + module.CSVFile
// Open and read the CSV file
csvFile, err := os.Open(csvFilePath)
if err != nil {
log.Fatalf("Error opening CSV file %s: %v", csvFilePath, err)
}
defer csvFile.Close()
reader := csv.NewReader(csvFile)
records, err := reader.ReadAll()
if err != nil {
log.Fatalf("Error reading CSV file %s: %v", csvFilePath, err)
}
// Ignore the first line
if len(records) > 1 {
records = records[1:]
}
for _, record := range records {
displayTexts = append(displayTexts, record[1]) // Assuming the display text is in the second column (index 1)
}
fmt.Printf("- Module Name: %s (%s)\n", module.Name, commaSeparated(displayTexts))
}
}
// Helper function to join a slice of strings with commas
func commaSeparated(slice []string) string {
return fmt.Sprintf("[%s]", strings.Join(slice, ", "))
}