package main

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

type ModuleDependency struct {
	Path     string
	Version  string
	Dir      string
	Indirect bool
	License  string
}

func pareseGoMod() []ModuleDependency {
	// Get list of all modules
	cmd := exec.Command("go", "list", "-m", "-json", "all")
	output, err := cmd.Output()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error getting module list: %v\n", err)
		os.Exit(1)
	}

	// Split the JSON objects (one per line)
	modules := []ModuleDependency{}
	decoder := json.NewDecoder(strings.NewReader(string(output)))
	for decoder.More() {
		var mod ModuleDependency
		if err := decoder.Decode(&mod); err != nil {
			fmt.Fprintf(os.Stderr, "Error decoding module: %v\n", err)
			continue
		}
		modules = append(modules, mod)
	}
	return modules
}