X-Git-Url: http://git.sven.stormbind.net/?p=sven%2Fjava-package.git;a=blobdiff_plain;f=lib%2Fcommon.sh;fp=lib%2Fcommon.sh;h=60c28522fe669a957361fa0ca2fae948732de99a;hp=0000000000000000000000000000000000000000;hb=ca8b5d176518ea838461b92229d2fbebb3731de8;hpb=5bc639af80c6222872b24d8950ac8ee53655870a diff --git a/lib/common.sh b/lib/common.sh new file mode 100644 index 0000000..60c2852 --- /dev/null +++ b/lib/common.sh @@ -0,0 +1,194 @@ +# read_yn +function read_yn() { + local prompt="$1" + while true; do + read -e -n 1 -p "$prompt" reply + case "$reply" in + "" | "y" | "Y") + return 0 + ;; + "N" | "n") + return 1 + ;; + esac + done +} + + +# diskusage : prints size in MB +function diskusage() { + local path="$1" + read size dummy < <( du -sm "$path" ) + echo "$size" +} + + +# diskfree +function diskfree() { + local size="$1" + echo -n "Checking free diskspace:" + (( free = `stat -f -c '%a / 2048 * ( %s / 512 )' $tmp ` )) + + if [ "$free" -ge "$size" ]; then + echo " done." + else + cat >&2 << EOF + + +WARNING: Possibly not enough free disk space in "$tmp". + +You need at least $size MB, but only $free MB seems free. Note: You +can specify an alternate directory by setting the environment variable + +Press Ctrl+C to interrupt, or return to try to continue anyway. + +TMPDIR. + +EOF + read + fi +} + + +# extract_bin +function extract_bin() { + local file="$1" + local expected_min_size="$2" + local dest="$3" + cat << EOF + +In the next step, the binary file will be extracted. Probably a +license agreement will be displayed. Please read this agreement +carefully. If you do not agree to the displayed license terms, the +package will not be built. + +EOF + read -e -p "Press [Return] to continue: " dummy + echo + local extract_dir="$tmp/extract" + mkdir "$extract_dir" + cd "$extract_dir" + echo + + local extract_cmd + case "$archive_path" in + *.tar) + extract_cmd="tar xf";; + *.tar.bz2) + extract_cmd="tar --bzip2 -xf";; + *.tgz|*.tar.gz) + extract_cmd="tar xfz";; + *.zip) + extract_cmd="unzip -q";; + *) + extract_cmd=sh + esac + + if ! $extract_cmd "$archive_path"; then + cat << EOF + +WARNING: The package installation script exited with an error +value. Usually, this means, that the installation failed for some +reason. But in some cases there is no problem and you can continue +creating the Debian package. + +Please check if there are any error messages. Press [Return] to +continue or Ctrl-C to abort. + +EOF + read + fi + echo + echo -n "Testing extracted archive..." + local size="$( diskusage "$extract_dir" )" + if [ "$size" -lt "$expected_min_size" ]; then + cat << EOF + +Invalid size ($size MB) of extracted archive. Probably you have not +enough free disc space in the temporary directory. Note: You can +specify an alternate directory by setting the environment variable +TMPDIR. + +EOF + error_exit + else + cd "$extract_dir" + files=(*) + if [ "${#files[*]}" -ne 1 ]; then + cat << EOF + +Expected one file, but found the following ${#files[*]} files: + ${files[*]} + +EOF + error_exit + fi + mv "$files" "$dest" + echo -e " okay.\n" + fi +} + + +function read_maintainer_info() { + if [ -z "$maintainer_name" ]; then + if [ -n "$DEBFULLNAME" ]; then + maintainer_name="$DEBFULLNAME" + elif [ -n "$DEBNAME" ]; then + maintainer_name="$DEBNAME" + else + default_name="$(getent passwd $(id -run) | cut -d: -f5| cut -d, -f1)" + + cat << EOF + +Please enter your full name. This value will be used in the maintainer +field of the created package. + +EOF + + # gecos can be null + while [ -z "$maintainer_name" ]; do + read -e -p "Full name [$default_name]:" maintainer_name + if [ -z "$maintainer_name" ] && [ -n "$default_name" ]; then + maintainer_name="$default_name" + fi + done + fi + fi + + if [ -z "$maintainer_email" ]; then + local default_email= + if [ -n "$DEBEMAIL" ]; then + maintainer_email="$DEBEMAIL" + else + if [ -r "/etc/mailname" ]; then + default_email="$( id -run )@$( cat /etc/mailname )" + else + default_email="$( id -run )@$( hostname --fqdn )" + fi + cat << EOF + +Please enter a valid email address or press return to accept the +default value. This address will be used in the maintainer field of +the created package. + +EOF + read -e -p "Email [$default_email]: " maintainer_email + if [ -z "$maintainer_email" ]; then + maintainer_email="$default_email" + fi + fi + fi +} + +# provide the architecture for evaluation by plugins +function get_architecture() { + echo + + export DEB_BUILD_ARCH=$(dpkg-architecture -qDEB_BUILD_ARCH) + + export DEB_BUILD_GNU_TYPE=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + echo "Detected Debian build architecture: ${DEB_BUILD_ARCH:-N/A}" + + echo "Detected Debian GNU type: ${DEB_BUILD_GNU_TYPE:-N/A}" +}