summaryrefslogtreecommitdiff
path: root/internal/anki
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-08-02 15:54:18 +0300
committerPaul Buetow <paul@buetow.org>2025-08-02 15:54:18 +0300
commitf8574d5ecf31021b1aee7fcb0c8b45c190bffead (patch)
tree77ee9a55771d496f1338017f4402f2c91f5f59e5 /internal/anki
parent0968c9e0df98580d628f06f7afe1764fd857fb17 (diff)
add timestamps to .apkg exports and num of cardsv0.7.5
Diffstat (limited to 'internal/anki')
-rw-r--r--internal/anki/apkg_generator.go12
-rw-r--r--internal/anki/apkg_generator_test.go13
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)
}