package main import ( "context" "flag" "log" "net/http" "donniemarko/internal/render" "donniemarko/internal/scanner" "donniemarko/internal/service" "donniemarko/internal/storage" "donniemarko/internal/web" ) func main() { // Define command line flags var help bool rootFolder := flag.String("root", ".", "Root folder to serve files from") listenAddr := flag.String("addr", "localhost:5555", "Address to listen on") flag.BoolVar(&help, "help", false, "display this program usage") flag.Parse() if help { flag.PrintDefaults() return } // Initialize storage noteStorage := storage.NewNoteStorage() // Initialize scanner monitor := scanner.NewScanner(*rootFolder) // Initialize notes handler for scanner notesHandler := scanner.NewNotesHandler(noteStorage) monitor.SetHandler(notesHandler) // Initialize service noteService := service.NewNoteService() noteService.SetStorage(noteStorage) // Start scanner in background ctx := context.Background() go monitor.Monitor(ctx) // log.Println("WE GET THERE", len(noteStorage.Index)) // Initialize template manager tm := render.NewTemplateManager("internal/web/templates") // Initialize web handler handler := web.NewHandler(noteService, tm) // Setup routes handler.SetupRoutes() log.Printf("Serving on http://%s", *listenAddr) log.Fatal(http.ListenAndServe(*listenAddr, nil)) }