feat: assembly and main entry point

This commit is contained in:
2026-08-26 23:38:13 +08:00
parent c24df57882
commit f5a21d922d
2 changed files with 74 additions and 2 deletions
+33 -2
View File
@@ -1,7 +1,38 @@
package main package main
import "log" import (
"flag"
"log"
"os"
"path/filepath"
"yoresee_dropbox/internal/app"
)
func main() { func main() {
log.Println("yDropbox starting...") addr := flag.String("addr", "127.0.0.1:8999", "Listen address")
workspace := flag.String("workspace", "./workspace", "Workspace directory")
token := flag.String("token", "", "Access token")
flag.Parse()
if *token == "" {
*token = os.Getenv("YDROPBOX_TOKEN")
}
if *token == "" {
log.Fatal("Token required: --token or YDROPBOX_TOKEN env")
}
absWorkspace, _ := filepath.Abs(*workspace)
os.MkdirAll(filepath.Join(absWorkspace, "inbox"), 0755)
os.MkdirAll(filepath.Join(absWorkspace, "outbox"), 0755)
os.MkdirAll(filepath.Join(absWorkspace, ".ydropbox"), 0755)
cfg := app.Config{
Addr: *addr,
Workspace: absWorkspace,
Token: *token,
}
if err := app.Run(cfg); err != nil {
log.Fatal(err)
}
} }
+41
View File
@@ -1 +1,42 @@
package app package app
import (
"log"
"net/http"
"path/filepath"
"time"
"yoresee_dropbox/internal/scanner"
"yoresee_dropbox/internal/server"
"yoresee_dropbox/internal/store"
)
type Config struct {
Addr string
Workspace string
Token string
}
func NewHandler(cfg Config) (http.Handler, *store.Store, error) {
dbPath := filepath.Join(cfg.Workspace, ".ydropbox", "db.sqlite")
s, err := store.Open(dbPath)
if err != nil {
return nil, nil, err
}
sc := scanner.New(s, cfg.Workspace, 10*time.Second)
sc.Start()
srv := server.New(s, cfg.Token, cfg.Workspace)
return srv.Handler(), s, nil
}
func Run(cfg Config) error {
handler, s, err := NewHandler(cfg)
if err != nil {
return err
}
defer s.Close()
log.Printf("Listening on %s", cfg.Addr)
return http.ListenAndServe(cfg.Addr, handler)
}