package main

import (
	"fmt"
	cron "github.com/robfig/cron/v3"
	"io/ioutil"
	"os"
	"path/filepath"
	"time"
)

// 删除子目录下的以.html结尾的文件，创建时间早于keepDate的保留
func deleteHTMLFiles(dirPath string, keepDate time.Time) {
	files, err := ioutil.ReadDir(dirPath)
	if err != nil {
		fmt.Printf("Error reading directory %s: %v\n", dirPath, err)
		return
	}

	for _, file := range files {
		if !file.IsDir() && filepath.Ext(file.Name()) == ".html" {
			filePath := filepath.Join(dirPath, file.Name())
			if file.ModTime().Before(keepDate) {
				err := os.Remove(filePath)
				if err != nil {
					fmt.Printf("Error deleting file %s: %v\n", filePath, err)
				} else {
					fmt.Printf("Deleted file: %s\n", filePath)
				}
			} else {
				fmt.Printf("File %s is within the keep period. Skipping deletion.\n", filePath)
			}
		}
	}
}

func start() {
	// 获取当前目录的绝对路径
	currentDir, err := os.Getwd()

	if err != nil {
		fmt.Println("Error getting current directory:", err)
		os.Exit(1)
	}

	// 获取当前日期和保留日期（前三天）
	currentTime := time.Now()
	keepDate := currentTime.AddDate(0, 0, -3)

	// 遍历当前目录的子目录
	subDirs, err := ioutil.ReadDir(currentDir)
	if err != nil {
		fmt.Println("Error reading current directory:", err)
		os.Exit(1)
	}

	// 删除子目录下的以.html结尾的文件
	for _, subDir := range subDirs {
		if subDir.IsDir() {
			subDirPath := filepath.Join(currentDir, subDir.Name())
			deleteHTMLFiles(subDirPath, keepDate)
		}
	}

	fmt.Println("Deletion of .html files completed.")
}

func main() {
	// 获取当前目录的绝对路径
	currentDir, _ := os.Getwd()
	fmt.Print("currentDir=",currentDir,"\n")
	c := cron.New()
	i := 1
	_, _ = c.AddFunc("0 0 */1 * *", func() {
		start()
		line := "\n--------------------------------------------------------\n"
		fmt.Println(line, time.Now(), line)
		i++
	})
	c.Run()
}
