#! /bin/bash -e shopt -s nullglob ### global variables # version of this package version="0.9" working_dir="$( pwd )" program_name="$( basename "$0" )" program_dir="$( cd "$( dirname "$( type -p "$0" )" )" ; pwd )" lib_dir="/usr/share/mpkg-j2se" [ "$J2SE_PACKAGE_LIBDIR" ] && lib_dir="$J2SE_PACKAGE_LIBDIR" maintainer_name="$J2SE_PACKAGE_FULL_NAME" maintainer_email="$J2SE_PACKAGE_EMAIL" genchanges="" ### Parse options function print_usage() { cat << EOF Usage: $program_name [OPTION]... FILE j2se-package builds Debian packages from Java(TM) 2 binary distributions. --full-name NAME full name used in the maintainer field of the package --email EMAIL email address used in the maintainer field of the package --changes create a .changes file --help display this help and exit --version output version information and exit EOF } function unrecognized_option() { cat >&2 << EOF $program_name: unrecognized option \`$1' Try \`$program_name --help' for more information. EOF exit 1 } function missing_argument() { cat >&2 << EOF $program_name: missing argument for option \`$1' Try \`$program_name --help' for more information. EOF exit 1 } # options while [[ $# -gt 0 && "x$1" == x--* ]]; do if [[ "x$1" == x--version ]]; then echo "j2se-package $version" exit 0 elif [[ "x$1" == x--help ]]; then print_usage exit 0 elif [[ "x$1" == x--full-name ]]; then [ $# -le 1 ] && missing_argument "$1" shift maintainer_name="$1" elif [[ "x$1" == x--email ]]; then [ $# -le 1 ] && missing_argument "$1" shift maintainer_email="$1" elif [[ "x$1" == x--changes ]]; then genchanges="true" else unrecognized_option "$1" fi shift done # last argument if [[ $# -ne 1 ]]; then cat >&2 << EOF $program_name: missing pathname Try \`$program_name --help' for more information. EOF exit 1 fi archive="$1" if [[ ! -e "$archive" ]]; then echo "Error: The file \"$archive\" does not exist." exit 1 elif [[ ! -r "$archive" ]]; then echo "Error: The file \"$archive\" is not readable." exit 1 fi archive_name="$( basename "$archive" )" archive_dir="$( cd "$( dirname "$archive" )" ; pwd )" archive_path="$archive_dir/$archive_name" # must be run as root if ! dh_testroot; then exit 1 fi ### Error handling success= failed= tmp= # function is called when script terminates function on_exit() { lastcmd="$_" if [[ -z "$success" && -z "$failed" ]]; then cat >&2 << EOF Aborted ($lastcmd). EOF fi # remove temporary directory if [ -n "$tmp" -a -d "$tmp" ]; then echo -n "Removing temporary directory: " rm -rf "$tmp" echo "done" fi } trap on_exit EXIT # print error message and terminate function error_exit() { cat >&2 << EOF Aborted. EOF failed=true exit 1 } # The environment variable tmp points to a secure temporary directory. # There should be enough free disk space. echo -n "Creating temporary directory: " tmp="$( mktemp -d -t "$program_name.XXXXXXXXXX" )" echo "$tmp" debian_dir="$tmp/debian" install -d -m 755 "$debian_dir" install_dir="$tmp/install" install -d -m 755 "$install_dir" ### load and execute plugins echo -n "Loading plugins:" cd "$lib_dir" files=(*.sh) for file in "${files[@]}"; do echo -n " $file" source "$lib_dir/$file" done echo j2se_found= for var in ${!j2se_detect_*}; do eval "\$$var" if [[ "$j2se_found" == "true" ]]; then break; fi done echo if [[ -z "$j2se_found" ]]; then echo "No matching plugin was found." fi ### exit success=true exit 0