#!/bin/bash # # .---. . . # | | | # |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. # | | (.-' (.-' ( | ( )| | | | )( )| | (.-' # ' ' --' --' -' - -' ' ' -' -' -' ' - --' # # Freedom in the Cloud # # Vim editor # # License # ======= # # Copyright (C) 2016 Bob Mottram # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . VARIANTS='full-vim' IN_DEFAULT_INSTALL=0 VIM_TEMP_DIR='.vimtemp' VIM_MUTT_EDITOR='vim \"+set nonumber\" \"+set insertmode\" \"+set spell\" +/^$/ +9' vim_variables=(MY_USERNAME VIM_MUTT_EDITOR) function change_password_vim { echo -n '' } function reconfigure_vim { echo -n '' } function upgrade_vim { echo -n '' } function backup_local_vim { for d in /home/*/ ; do USERNAME=$(echo "$d" | awk -F '/' '{print $3}') if [[ $(is_valid_user "$USERNAME") == "1" ]]; then echo $"Backing up Vim config for $USERNAME" # create a temporary directory if [ ! -d /home/$USERNAME/$VIM_TEMP_DIR ]; then mkdir /home/$USERNAME/$VIM_TEMP_DIR fi # copy config files into the directory if [ -f /home/$USERNAME/.vimrc ]; then cp /home/$USERNAME/.vimrc /home/$USERNAME/$VIM_TEMP_DIR chown -R $USERNAME:$USERNAME /home/$USERNAME/$VIM_TEMP_DIR fi if [ -f /home/$USERNAME/.viminfo ]; then cp /home/$USERNAME/.viminfo /home/$USERNAME/$VIM_TEMP_DIR chown -R $USERNAME:$USERNAME /home/$USERNAME/$VIM_TEMP_DIR fi # backup the directory function_check backup_directory_to_usb backup_directory_to_usb /home/$USERNAME/$VIM_TEMP_DIR vim/$USERNAME # remove temporary directory if [ -d /home/$USERNAME/$VIM_TEMP_DIR ]; then rm -rf /home/$USERNAME/$VIM_TEMP_DIR fi fi done } function restore_local_vim { temp_restore_dir=/root/tempvim if [ -d $USB_MOUNT/backup/vim ]; then for d in $USB_MOUNT/backup/vim/*/ ; do USERNAME=$(echo "$d" | awk -F '/' '{print $6}') if [[ $(is_valid_user "$USERNAME") == "1" ]]; then if [ ! -d /home/$USERNAME ]; then ${PROJECT_NAME}-adduser $USERNAME fi echo $"Restoring Vim config for $USERNAME" function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir vim/$USERNAME cp -r $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR /home/$USERNAME/ if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions set_user_permissions function_check backup_unmount_drive backup_unmount_drive exit 664 fi cp /home/$USERNAME/$VIM_TEMP_DIR/* /home/$USERNAME if [ -f /home/$USERNAME/.viminfo ]; then chown $USERNAME:$USERNAME /home/$USERNAME/.viminfo fi if [ -f /home/$USERNAME/.vimrc ]; then chown $USERNAME:$USERNAME /home/$USERNAME/.vimrc fi rm -rf /home/$USERNAME/$VIM_TEMP_DIR rm -rf $temp_restore_dir fi done fi } function backup_remote_vim { for d in /home/*/ ; do USERNAME=$(echo "$d" | awk -F '/' '{print $3}') if [[ $(is_valid_user "$USERNAME") == "1" ]]; then echo $"Backing up Vim config for $USERNAME" # create a temporary directory if [ ! -d /home/$USERNAME/$VIM_TEMP_DIR ]; then mkdir /home/$USERNAME/$VIM_TEMP_DIR fi # copy config files into the directory if [ -f /home/$USERNAME/.vimrc ]; then cp /home/$USERNAME/.vimrc /home/$USERNAME/$VIM_TEMP_DIR chown -R $USERNAME:$USERNAME /home/$USERNAME/$VIM_TEMP_DIR fi if [ -f /home/$USERNAME/.viminfo ]; then cp /home/$USERNAME/.viminfo /home/$USERNAME/$VIM_TEMP_DIR chown -R $USERNAME:$USERNAME /home/$USERNAME/$VIM_TEMP_DIR fi # backup the directory function_check backup_directory_to_friend backup_directory_to_friend /home/$USERNAME/$VIM_TEMP_DIR vim/$USERNAME # remove temporary directory if [ -d /home/$USERNAME/$VIM_TEMP_DIR ]; then rm -rf /home/$USERNAME/$VIM_TEMP_DIR fi fi done } function restore_remote_vim { temp_restore_dir=/root/tempvim if [ -d $USB_MOUNT/backup/vim ]; then for d in $USB_MOUNT/backup/vim/*/ ; do USERNAME=$(echo "$d" | awk -F '/' '{print $6}') if [[ $(is_valid_user "$USERNAME") == "1" ]]; then if [ ! -d /home/$USERNAME ]; then ${PROJECT_NAME}-adduser $USERNAME fi echo $"Restoring Vim config for $USERNAME" function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir vim/$USERNAME cp -r $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR /home/$USERNAME/ if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions set_user_permissions function_check backup_unmount_drive backup_unmount_drive exit 664 fi cp /home/$USERNAME/$VIM_TEMP_DIR/* /home/$USERNAME if [ -f /home/$USERNAME/.viminfo ]; then chown $USERNAME:$USERNAME /home/$USERNAME/.viminfo fi if [ -f /home/$USERNAME/.vimrc ]; then chown $USERNAME:$USERNAME /home/$USERNAME/.vimrc fi rm -rf /home/$USERNAME/$VIM_TEMP_DIR rm -rf $temp_restore_dir fi done fi } function remove_vim { apt-get -yq remove --purge vim update-alternatives --set editor /usr/bin/nano sed -i '/install_vim/d' $COMPLETION_FILE # remove Vim as the mutt email editor if [ -f /etc/Muttrc ]; then if grep -q "set editor=" /etc/Muttrc; then sed -i '/set editor=/d' /etc/Muttrc fi for d in /home/*/ ; do USERNAME=$(echo "$d" | awk -F '/' '{print $3}') if [[ $(is_valid_user "$USERNAME") == "1" ]]; then if [ -f /home/$USERNAME/.muttrc ]; then if grep -q "set editor=" /home/$USERNAME/.muttrc; then sed -i '/set editor=/d' /home/$USERNAME/.muttrc fi fi fi done fi } function install_vim { apt-get -yq install vim update-alternatives --set editor /usr/bin/vim # add a mutt entry to use Vim to compose emails if [ -f /etc/Muttrc ]; then if ! grep -q "set editor=" /etc/Muttrc; then echo "set editor=\"$VIM_MUTT_EDITOR\"" >> /etc/Muttrc else sed -i "s|set editor=.*|set editor=\"$VIM_MUTT_EDITOR\"|g" /etc/Muttrc fi for d in /home/*/ ; do USERNAME=$(echo "$d" | awk -F '/' '{print $3}') if [[ $(is_valid_user "$USERNAME") == "1" ]]; then if [ -f /home/$USERNAME/.muttrc ]; then if ! grep -q "set editor=" /home/$USERNAME/.muttrc; then echo "set editor=\"$VIM_MUTT_EDITOR\"" >> /home/$USERNAME/.muttrc else sed -i "s|set editor=.*|set editor=\"$VIM_MUTT_EDITOR\"|g" /home/$USERNAME/.muttrc fi fi fi done fi APP_INSTALLED=1 } function install_interactive_vim { install_vim } # NOTE: deliberately no exit 0