// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
//
// SPDX-License-Identifier: AGPL-3.0-or-later

// Package dateutil provides natural language date parsing for lune commands.
package dateutil

import (
	"fmt"

	"git.secluded.site/go-lunatask"
	dps "github.com/markusmobius/go-dateparser"
)

// Parse parses a natural language date string into a lunatask.Date.
// Supports formats like "yesterday", "2 days ago", "March 5", "2024-01-15", etc.
// Returns today's date if the input is empty.
func Parse(input string) (lunatask.Date, error) {
	if input == "" {
		return lunatask.Today(), nil
	}

	parsed, err := dps.Parse(nil, input)
	if err != nil {
		return lunatask.Date{}, fmt.Errorf("parsing date %q: %w", input, err)
	}

	return lunatask.NewDate(parsed.Time), nil
}
