From 8af00445f3bcfbaedb14792b4e2304a2b2470cce Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Mon, 11 May 2026 11:30:50 +0200 Subject: feat: commande CLI delete pour supprimer une galerie Co-Authored-By: Claude Sonnet 4.6 --- gallery.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'gallery.go') diff --git a/gallery.go b/gallery.go index 741964e..f0c0972 100644 --- a/gallery.go +++ b/gallery.go @@ -936,6 +936,37 @@ func (s *Server) createGalleryOpts(name, password string, thumbs bool) error { return s.save() } +// --------------------------------------------------------------------------- +// CLI: delete gallery +// --------------------------------------------------------------------------- + +func (s *Server) deleteGallery(name string) error { + if !validGalleryName.MatchString(name) { + return fmt.Errorf("invalid gallery name %q", name) + } + + s.mu.Lock() + _, ok := s.galleries[name] + if !ok { + s.mu.Unlock() + return fmt.Errorf("gallery %q not found", name) + } + delete(s.galleries, name) + s.mu.Unlock() + + if err := s.save(); err != nil { + return fmt.Errorf("failed to update config: %w", err) + } + + dir := s.galleryDir(name) + if err := os.RemoveAll(dir); err != nil { + return fmt.Errorf("config removed but failed to delete directory %s: %w", dir, err) + } + + log.Printf("Gallery %q deleted", name) + return nil +} + // --------------------------------------------------------------------------- // Embedded templates & static assets // --------------------------------------------------------------------------- @@ -960,6 +991,7 @@ func printUsage() { fmt.Fprintf(os.Stderr, `Usage: gallery serve [--addr :8080] [--data ./data] gallery create [--data ./data] [--no-thumbs] + gallery delete [--data ./data] Options: --no-thumbs Disable thumbnail generation; serve source images in the grid. @@ -968,6 +1000,7 @@ Examples: gallery create crete-2026 "MySecret123" --data ./gallery-data gallery create big-photos "pass" --data ./gallery-data --no-thumbs gallery serve --addr :8080 --data ./gallery-data + gallery delete crete-2026 --data ./gallery-data `) } @@ -1021,6 +1054,32 @@ func main() { } fmt.Printf("Gallery %q created in %s\n", name, filepath.Join(flags["data"], name)) + case "delete": + if len(os.Args) < 3 { + fmt.Fprintln(os.Stderr, "Usage: gallery delete [--data ./data]") + os.Exit(1) + } + name := os.Args[2] + flags := parseFlags(os.Args[3:], map[string]string{"data": "./data"}) + + srv := NewServer(flags["data"], 20<<20) + if err := srv.load(); err != nil { + log.Fatalf("Failed to load state: %v", err) + } + + fmt.Printf("Delete gallery %q and all its photos from %s? [y/N] ", name, srv.galleryDir(name)) + var answer string + fmt.Scanln(&answer) + if strings.ToLower(strings.TrimSpace(answer)) != "y" { + fmt.Println("Aborted.") + os.Exit(0) + } + + if err := srv.deleteGallery(name); err != nil { + log.Fatalf("Failed to delete gallery: %v", err) + } + fmt.Printf("Gallery %q deleted.\n", name) + case "serve": flags := parseFlags(os.Args[2:], map[string]string{ "addr": ":8080", -- cgit v1.3