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