feat: add --backup-converted flag to keep .orig backups

This commit is contained in:
2026-06-29 11:56:09 +02:00
parent 6e58502598
commit f915299fa4
4 changed files with 20 additions and 4 deletions
+11
View File
@@ -44,6 +44,7 @@ type MirrorConfig struct {
ConvertLinks bool // Convert links for local viewing
DownloadAssets bool // Download CSS, JS, images
PruneEmpty bool // Remove empty directories after download
BackupConverted bool // Keep .orig backup before link conversion
RestrictFiles bool // Only download files from original host
Timeout time.Duration
RateLimiter *transport.TokenBucket
@@ -642,6 +643,16 @@ func (m *Mirror) convertLinksInFile(filePath string) {
converted := m.rewriter.RewriteLinks(doc, filePath)
if converted > 0 {
// Backup original file before link conversion.
if m.config.BackupConverted {
backupPath := filePath + ".orig"
if err := os.WriteFile(backupPath, data, 0644); err != nil {
if m.config.Verbose {
fmt.Fprintf(os.Stderr, "[error] failed to backup %s: %v\n", filePath, err)
}
}
}
// Write modified HTML
var buf bytes.Buffer
if err := html.Render(&buf, doc); err != nil {
+1
View File
@@ -403,6 +403,7 @@ func (c *Client) downloadMirror(ctx context.Context, req *core.DownloadRequest)
ConvertLinks: c.config.Recursive.ConvertLinks,
DownloadAssets: c.config.Recursive.MirrorAssets,
PruneEmpty: true,
BackupConverted: c.config.Recursive.BackupConverted,
RestrictFiles: true,
Timeout: c.config.Transport.Timeout,
RespectRobots: c.config.Recursive.RespectRobots,
+5 -4
View File
@@ -84,10 +84,11 @@ type RecursiveConfig struct {
DryRun bool
// Mirror mode
Mirror bool
MirrorAssets bool
ConvertLinks bool
RespectRobots bool
Mirror bool
MirrorAssets bool
ConvertLinks bool
BackupConverted bool
RespectRobots bool
}
// OutputConfig groups output, progress, and display settings.