You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
oh-my-fish/plugins/bak/bak.load

50 lines
1.1 KiB
Fish

function __bak_help
echo -e \
"Usage:
$argv[1] SOURCE..."
end
function __bak
set program $argv[2]
if [ (count $argv) -gt 2 ]
for file in $argv[3..-1]
function bak_name
# trim / for directories
set file (echo $argv[1] | sed 's/\/$//')
echo "$file.(date +"%Y%m%d_%H%M%S").bak"
end
eval $program $file (bak_name $file)
end
else
__bak_help $argv[1]
end
end
function __unbak
set program $argv[2]
if [ (count $argv) -gt 2 ]
for file in $argv[3..-1]
set re_bak '(.*)\.[0-9]{8,8}_[0-9]{6,6}\.bak'
set file $argv[1]
set normalized (echo "$file" | sed -r "s/$re_bak/\1/g")
function is_bak
echo "$file" | perl -ne "print if /$re_bak/" > /dev/null
end
if test ! -e $file
echo "File \"$file\" not exists! Cannot unbak \"$file\"."
else if not is_bak $file
echo "File \"$file\" don't meet bak files convention! Cannot unbak \"$file\"."
else if test -e $normalized
echo "File \"$normalized\" exists! Cannot unbak \"$file\"."
else
eval $program $file $normalized
end
end
else
__bak_help $argv[1]
end
end