137522c9c0ccf48e63e0ab6c2b35b50948d15a003Gaurav Shah#!/bin/bash 2605500b88cd99097d482ddcefee4ba04898781aeGaurav Shah# 3605500b88cd99097d482ddcefee4ba04898781aeGaurav Shah# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 437522c9c0ccf48e63e0ab6c2b35b50948d15a003Gaurav Shah# Use of this source code is governed by a BSD-style license that can be 537522c9c0ccf48e63e0ab6c2b35b50948d15a003Gaurav Shah# found in the LICENSE file. 637522c9c0ccf48e63e0ab6c2b35b50948d15a003Gaurav Shah 7605500b88cd99097d482ddcefee4ba04898781aeGaurav Shah. "$(dirname "$0")/common_minimal.sh" 8e13e480b7f7bec28f3ac00f61da57fbe87b3a166Gaurav Shah 9ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Array of actions that are executed during the clean up process. 10ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Ledeclare -a cleanup_actions 11ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 12ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Adds an action to be executed during the clean up process. 13ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Actions are executed in the reverse order of when they were added. 14ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# ARGS: ACTION 15ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Leadd_cleanup_action() { 16ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le cleanup_actions[${#cleanup_actions[*]}]=$1 17ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 18ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 19ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Performs the latest clean up action and removes it from the list. 20ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Leperform_latest_cleanup_action() { 21ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le local num_actions=${#cleanup_actions[*]} 22ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le if [ ${num_actions} -gt 0 ]; then 23ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le eval "${cleanup_actions[$num_actions-1]}" > /dev/null 2>&1 24ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le unset cleanup_actions[$num_actions-1] 25ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le fi 26ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 27ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 28ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Performs clean up by executing actions in the cleanup_actions array in 29ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# reversed order. 30ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Lecleanup() { 31ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le set +e 32ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 33ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le while [ ${#cleanup_actions[*]} -gt 0 ]; do 34ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le perform_latest_cleanup_action 35ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le done 36ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 37ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le set -e 38ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 39ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 40ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# ANSI color codes used when displaying messages. 41ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Taken from src/scripts/common.sh. 42ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu LeV_RED="\e[31m" 43ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu LeV_YELLOW="\e[33m" 44ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu LeV_BOLD_GREEN="\e[1;32m" 45ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu LeV_BOLD_RED="\e[1;31m" 46ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu LeV_BOLD_YELLOW="\e[1;33m" 47ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu LeV_VIDOFF="\e[0m" 48ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 49ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Prints an informational message. 50ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Taken from src/scripts/common.sh. 51ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Arg: MESSAGE 52ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Leinfo() { 53ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le echo -e >&2 "${V_BOLD_GREEN}INFO : $1${V_VIDOFF}" 54ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 55ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 56ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Prints a warning message. 57ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Taken from src/scripts/common.sh. 58ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Arg: MESSAGE 59ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Lewarn() { 60ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le echo -e >&2 "${V_BOLD_YELLOW}WARNING: $1${V_VIDOFF}" 61ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 62ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 63ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Prints the specified error and exit the script with an error code. 64ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Taken from src/scripts/common.sh. 65ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Args: MESSAGE 66ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Leerror() { 67ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le echo -e >&2 "${V_BOLD_RED}ERROR : $1${V_VIDOFF}" 68ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 69ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 70ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Prints an error message and exit with an error code. 71ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Taken from src/scripts/common.sh. 72ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le# Args: MESSAGE 73ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Ledie() { 74ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le error "$1" 75ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le exit 1 76ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le} 77ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 78605500b88cd99097d482ddcefee4ba04898781aeGaurav Shah# This will override the trap set in common_minmal.sh 79ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Letrap "cleanup" INT TERM EXIT 80ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Le 81ddc06e4be12392d1f9d6b0d6d7c9c16446cb5566Thieu Leadd_cleanup_action "cleanup_temps_and_mounts" 82