Browse Source

diff /etc/skel/.bashrc

main
pvincent 2 weeks ago
parent
commit
beb56109dd
  1. 24
      lib/initiate.bash

24
lib/initiate.bash

@ -27,30 +27,44 @@ function install_required_packages {
function fix_users_bashrc {
if [[ -f /etc/skel/.bashrc ]] && ! cmp -s /etc/skel/.bashrc "$MIAOU_BASH_DIR"/etc/skel/.bashrc; then
local skel_count_lines=$(wc -l /etc/skel/.bashrc)
echo 'fixing users .bashrc...'
local skel_count_lines
skel_count_lines=$(wc -l /etc/skel/.bashrc | cut -d' ' -f1)
local appended_regex="^${skel_count_lines}a"
# for pre-existant users
build_associative_user_homes
for user in "${!USER_HOMES[@]}"; do
local user_bashrc="${USER_HOMES[$user]}/.bashrc"
echo "read: $user_bashrc"
[[ ! -f "$user_bashrc" ]] && continue
cmp -s "$user_bashrc" /etc/skel/.bashrc && continue
cmp -s /etc/skel/.bashrc "$user_bashrc" && continue
local first_change
first_change=$(diff /etc/skel/.bashrc "$user_bashrc" | head -n1)
if first_change=$(diff /etc/skel/.bashrc "$user_bashrc" | head -n1); then
:
else
if [[ $first_change =~ $appended_regex ]]; then
if new_lines=$(diff /etc/skel/.bashrc "$user_bashrc" | grep '^> ' | sed 's/^> //'); then
:
else
# echo -e "$new_lines"
sudo -u "$user" -- cp "$MIAOU_BASH_DIR"/etc/skel/.bashrc "$user_bashrc"
diff /etc/skel/.bashrc "$user_bashrc" | grep '^> ' | sed 's/^> //' | tee -a "$user_bashrc"
echo -e "$new_lines" | sudo -u $user -- tee -a "$user_bashrc"
echo "INFO: .bashrc for user <$user> merged succesfully"
fi
else
local backup="$user_bashrc".ORIGINAL
sudo -u "$user" -- mv "$user_bashrc" "$backup"
sudo -u "$user" -- cp "$MIAOU_BASH_DIR"/etc/skel/.bashrc "$user_bashrc"
>&2 echo "WARN: .bashrc for user <$user> has forked from skeleton, please resolve conflict manually from backup: $backup"
fi
fi
done
sudo mv /etc/skel/.bashrc /etc/skel/.bashrc.ORIGINAL
echo 'fixing users .bashrc...DONE'
fi
sudo ln -sf "$MIAOU_BASH_DIR"/etc/skel/.bashrc /etc/skel/.bashrc
}

Loading…
Cancel
Save