# creates a backup of the given file in a temporary directory and prints the path export def bak [ file: path # the file to copy into a backup ] { if not ($file | path exists ) { error make { msg: "The file to backup does not exist.", label: { text: "Missing its existence!", span: (metadata $file).span } } } let full_path = $file | path expand let tmpdir = mktemp --directory --tmpdir backup_XXX let backup = $tmpdir | path join ( $file | path basename ) let backup_original_path = $tmpdir | path join 'original.path' $full_path | save $backup_original_path cp --preserve [ mode timestamps ] $file $backup print $backup } # restores a backup previously made with `bak` command export def kab [ backup: path # a backup file to restore ] { if not ($backup | path exists ) { error make { msg: "The backup file does not exist.", label: { text: "Missing its existence!", span: (metadata $backup).span } } } let backup_file = $backup | path expand if ($backup_file !~ 'backup_' ) { error make { msg: "The file does not seem to be a backup file from `bak`.", label: { text: "Are u even bak'ed up?", span: (metadata $backup).span } } } let backup_dir = $backup | path dirname let original_path_file = $backup_dir | path join 'original.path' let original_path = open --raw $original_path_file try { mv --progress --interactive --verbose $backup_file $original_path } catch { return # skip deletion } rm --trash --recursive $backup_dir }