#!/usr/bin/env bash

YUM_COMMAND=$(which yum)
PACKAGE_CLEANUP_COMMAND=$(which package-cleanup)
LOGFILE_NAME='/var/log/yum.log'

function logmessage {
  printf '%s\n' " $(date +%c): ${1}" >> "${LOGFILE_NAME}"
  printf '%s\n' >> "${LOGFILE_NAME}"
}

logmessage "Cleaning up old kernel installations leaving only the active kernel"
${PACKAGE_CLEANUP_COMMAND} --oldkernels --count=1 -y

<% unless node['yum_cron']['exact_time'] == 'true' %>
logmessage "Sleeping for a random duration less than 4 hours"
sleep $(expr ${RANDOM} % 14400)
<% end -%>

<% unless node['yum_cron']['pre_update_commands'].empty? %>
logmessage "Running custom pre-update commands..."
<% Array(node['yum_cron']['pre_update_commands']).each do |command| %>
<%= command %>
<% end %>
<% end -%>

logmessage "Cleaning and updating yum cache"
${YUM_COMMAND} clean all && rm -rf /var/cache/yum && ${YUM_COMMAND} makecache fast

logmessage "Running yum updates"
${YUM_COMMAND} -y update<%= @excluded_packages %>

<% unless node['yum_cron']['post_update_commands'].empty? %>
logmessage "Running custom post-update commands..."
<% Array(node['yum_cron']['post_update_commands']).each do |command| %>
<%= command %>
<% end %>
<% end -%>

logmessage "Completed updates. Rebooting..."
reboot
