From f8574d5ecf31021b1aee7fcb0c8b45c190bffead Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 2 Aug 2025 15:54:18 +0300 Subject: add timestamps to .apkg exports and num of cards --- internal/anki/apkg_generator.go | 12 ++++++++++-- internal/anki/apkg_generator_test.go | 13 +++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'internal/anki') diff --git a/internal/anki/apkg_generator.go b/internal/anki/apkg_generator.go index 7f0538e..9707937 100644 --- a/internal/anki/apkg_generator.go +++ b/internal/anki/apkg_generator.go @@ -68,8 +68,16 @@ func (g *APKGGenerator) GenerateAPKG(outputPath string) error { return fmt.Errorf("failed to create database: %w", err) } - // Create the .apkg zip file - if err := g.createZipPackage(tempDir, outputPath); err != nil { + // Create the .apkg zip file with a timestamped name + timestamp := time.Now().Format("2006-01-02-15:04:05") + safeDeckName := strings.ReplaceAll(g.deckName, " ", "_") + safeDeckName = strings.ReplaceAll(safeDeckName, "/", "-") + numberOfCards := len(g.cards) + outputDir := filepath.Dir(outputPath) + finalName := fmt.Sprintf("%s-%s-%d.apkg", safeDeckName, timestamp, numberOfCards) + finalPath := filepath.Join(outputDir, finalName) + + if err := g.createZipPackage(tempDir, finalPath); err != nil { return fmt.Errorf("failed to create zip package: %w", err) } diff --git a/internal/anki/apkg_generator_test.go b/internal/anki/apkg_generator_test.go index 95be7d7..01e5a26 100644 --- a/internal/anki/apkg_generator_test.go +++ b/internal/anki/apkg_generator_test.go @@ -106,13 +106,18 @@ func TestGenerateAPKG(t *testing.T) { t.Fatalf("GenerateAPKG() error = %v", err) } - // Verify file exists - if _, err := os.Stat(outputPath); os.IsNotExist(err) { - t.Fatal("APKG file was not created") + // Find the generated file + files, err := filepath.Glob(filepath.Join(tempDir, "*.apkg")) + if err != nil { + t.Fatalf("Error finding apkg file: %v", err) + } + if len(files) != 1 { + t.Fatalf("Expected 1 apkg file, found %d", len(files)) } + actualOutputPath := files[0] // Verify it's a valid zip file - reader, err := zip.OpenReader(outputPath) + reader, err := zip.OpenReader(actualOutputPath) if err != nil { t.Fatalf("Failed to open APKG as zip: %v", err) } -- cgit v1.2.3