confOS/.config/fish/functions/ssh-import.fish

46 lines
1.6 KiB
Fish
Raw Normal View History

2023-10-08 20:25:32 +02:00
function ssh-import
# Declare our arguments
argparse h/help f/force -- $argv
or return
# Get function name
set current_name $(status current-function)
2023-10-08 20:25:32 +02:00
# Check if no arguments were provided, or if the first argument is '--help'
if test -z $argv[1] || set -ql _flag_help
echo -e "Usage: $current_name <archive.zip>"
echo -e " $current_name [-h|--help] \t\t- Show this help message"
echo -e " $current_name <archive.zip> \t\t- Update the current .ssh folder with the archive content"
echo -e " $current_name [-f|--force] <archive.zip> - Erase **all** the current .ssh folder and replace it with the archive content"
2023-10-08 20:25:32 +02:00
return 0
end
set file "$argv[1]"
if test (count $argv) -ge 2
# Check if usage is respected
echo "$current_name: too much arguments." 1>&2
2023-10-08 20:25:32 +02:00
return 1
else if not test -e "$file"
# Check if file exists
echo "$current_name: file doesn't exists." 1>&2
2023-10-08 20:25:32 +02:00
return 1
else if not test $(string sub --start=-3 "$file") = zip
# Check if file have .zip extension
echo "$current_name: file isn't a zip archive." 1>&2
2023-10-08 20:25:32 +02:00
return 1
end
set ssh_directory "$HOME/.ssh"
# Delete the .ssh directory
if set -ql _flag_force
find $ssh_directory -type f -not -name known_hosts -not -name environment -delete
end
2023-10-08 20:25:32 +02:00
# Update and overwrite the .ssh directory with the archive content
# Using modification date, and new files are added
# Files removed aren't tracked
unzip -uo "$file" -d $ssh_directory
2023-10-08 20:25:32 +02:00
end