Skip to content

feat: add comprehensive backup functionality for vault operations#5

Merged
Lucklyric merged 1 commit intomainfrom
feat/backup-improvements
Jul 21, 2025
Merged

feat: add comprehensive backup functionality for vault operations#5
Lucklyric merged 1 commit intomainfrom
feat/backup-improvements

Conversation

@Lucklyric
Copy link
Copy Markdown
Owner

Summary of Changes:

  • Added backup prompts when saving/modifying vault files (default: Yes)
  • Added backup prompt for GPG encryption (default: Yes)
  • ASCII armor prompt now defaults to Yes
  • Improved backup file naming to preserve extensions
  • Added overwrite protection for existing files

Detailed Changes:

  1. Vault Backup System (service.rs):

    • Added create_backup() method that creates timestamped backups
    • Integrated backup prompt in save_vault() with Y default
    • Backup format: vault.toml.backup.{timestamp}
  2. GPG Improvements (gpg.rs):

    • Updated encrypt_vault() to handle .toml.gpg/.toml.asc extensions
    • Added overwrite prompts for existing GPG files
    • Improved backup_vault() to create .gpg.backup format for GPG files
    • Fixed extension handling in decrypt_vault()
  3. User Prompts (utils.rs):

    • Added prompt_yes_no() utility for consistent Y/n prompting
    • Used throughout for backup and overwrite confirmations
  4. CLI Updates (cli.rs):

    • Updated gpg_encrypt to use prompt_yes_no with Y default
    • Removed redundant backup code (now handled by GPG module)
  5. Interactive Mode (interactive.rs):

    • Changed ASCII armor prompt to Y default
    • Changed backup prompt to Y default
    • Used prompt_yes_no for consistency

File Naming Conventions:

  • Regular backups: vault.toml.backup.20250721_152607
  • GPG backups: vault.toml.gpg.backup.20250721_152607
  • GPG encrypted: vault.toml.gpg (binary) or vault.toml.asc (ASCII)

All changes maintain backward compatibility while improving user safety through better backup defaults and overwrite protection.

Summary of Changes:
- Added backup prompts when saving/modifying vault files (default: Yes)
- Added backup prompt for GPG encryption (default: Yes)
- ASCII armor prompt now defaults to Yes
- Improved backup file naming to preserve extensions
- Added overwrite protection for existing files

Detailed Changes:

1. Vault Backup System (service.rs):
   - Added create_backup() method that creates timestamped backups
   - Integrated backup prompt in save_vault() with Y default
   - Backup format: vault.toml.backup.{timestamp}

2. GPG Improvements (gpg.rs):
   - Updated encrypt_vault() to handle .toml.gpg/.toml.asc extensions
   - Added overwrite prompts for existing GPG files
   - Improved backup_vault() to create .gpg.backup format for GPG files
   - Fixed extension handling in decrypt_vault()

3. User Prompts (utils.rs):
   - Added prompt_yes_no() utility for consistent Y/n prompting
   - Used throughout for backup and overwrite confirmations

4. CLI Updates (cli.rs):
   - Updated gpg_encrypt to use prompt_yes_no with Y default
   - Removed redundant backup code (now handled by GPG module)

5. Interactive Mode (interactive.rs):
   - Changed ASCII armor prompt to Y default
   - Changed backup prompt to Y default
   - Used prompt_yes_no for consistency

File Naming Conventions:
- Regular backups: vault.toml.backup.20250721_152607
- GPG backups: vault.toml.gpg.backup.20250721_152607
- GPG encrypted: vault.toml.gpg (binary) or vault.toml.asc (ASCII)

All changes maintain backward compatibility while improving user safety
through better backup defaults and overwrite protection.
@Lucklyric Lucklyric force-pushed the feat/backup-improvements branch from 0e53a4b to f68efee Compare July 21, 2025 22:18
@Lucklyric Lucklyric merged commit 8656a56 into main Jul 21, 2025
1 check passed
@Lucklyric Lucklyric deleted the feat/backup-improvements branch July 21, 2025 22:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant