diff options
| author | Paul Buetow <paul@buetow.org> | 2025-08-02 15:54:18 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-08-02 15:54:18 +0300 |
| commit | f8574d5ecf31021b1aee7fcb0c8b45c190bffead (patch) | |
| tree | 77ee9a55771d496f1338017f4402f2c91f5f59e5 /internal/anki | |
| parent | 0968c9e0df98580d628f06f7afe1764fd857fb17 (diff) | |
add timestamps to .apkg exports and num of cardsv0.7.5
Diffstat (limited to 'internal/anki')
| -rw-r--r-- | internal/anki/apkg_generator.go | 12 | ||||
| -rw-r--r-- | internal/anki/apkg_generator_test.go | 13 |
2 files changed, 19 insertions, 6 deletions
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) } |
