#!/usr/bin/env bash __rvm_fix_group_permissions() { if \umask -S | __rvm_grep 'g=rw' >/dev/null then chmod -R g+rwX "$@" fi } # params: archive_file __rvm_package_list() { rvm_debug __rvm_package_list:$#: "$@" case "$1" in *.zip) unzip -Z -1 "$1" ;; *.tar.bz2) __rvm_tar tjf "$1" ;; *.tar.gz|*.tgz) __rvm_tar tzf "$1" ;; *) return 199 ;; esac } __map_tar_excludes() { \typeset __exclude_element for __exclude_element do __exclude_elements+=( --exclude "${__exclude_element}" ) done } __rvm_package_extract_run() { \typeset __extract_run_src __extract_run_target __exclude_elements __extract_run_src="$1" __extract_run_target="$2" shift 2 __exclude_elements=() if [[ " ${rvm_tar_options:-} " != *" --no-same-owner "* ]] && __rvm_tar --help 2>&1 | __rvm_grep -- --no-same-owner >/dev/null then rvm_tar_options="${rvm_tar_options:-}${rvm_tar_options:+ }--no-same-owner" fi [[ -d "$__extract_run_target" ]] || mkdir -p "$__extract_run_target" case "$__extract_run_src" in *.zip) #__map_unzip_excludes unzip -q -o "$__extract_run_src" -d "$__extract_run_target" ;; *.tar.bz2) __map_tar_excludes "$@" if [[ -n "$ZSH_VERSION" ]] then __rvm_tar "${__exclude_elements[@]}" -xjf "$__extract_run_src" -C "$__extract_run_target" ${=rvm_tar_options:-} else __rvm_tar "${__exclude_elements[@]}" -xjf "$__extract_run_src" -C "$__extract_run_target" ${rvm_tar_options:-} fi ;; *.tar.gz|*.tgz) __map_tar_excludes "$@" if [[ -n "$ZSH_VERSION" ]] then __rvm_tar "${__exclude_elements[@]}" -xzf "$__extract_run_src" -C "$__extract_run_target" ${=rvm_tar_options:-} else __rvm_tar "${__exclude_elements[@]}" -xzf "$__extract_run_src" -C "$__extract_run_target" ${rvm_tar_options:-} fi ;; *) return 199 ;; esac && __rvm_fix_group_permissions "$__extract_run_target"/* || return $? } # params: archive_file path [excludes...] __rvm_package_extract() { rvm_debug __rvm_package_extract:$#: "$@" \typeset __extract_src __extract_target __tempdir __path __file __return __extract_src="$1" __extract_target="$2" shift 2 __return=0 __tempdir="$( TMPDIR="${rvm_tmp_path}" mktemp -d -t rvm-tmp.XXXXXXXXX )" __rvm_package_extract_run "$__extract_src" "$__tempdir" "$@" || __return=$? if (( __return == 0 )) then for __path in "$__tempdir"/* do __file="${__path##*/}" if [[ -n "${__file}" && -e "$__extract_target/${__file}" ]] then \command \rm -rf "$__extract_target/${__file}" || __return=$? fi \command \mv -f "${__path}" "$__extract_target/" || __return=$? done fi if [[ -n "$__tempdir" ]] then \command \rm -rf "$__tempdir" fi return $__return } # params: archive_file [path [path2]] __rvm_package_create() { rvm_debug __rvm_package_create:$#: "$@" case "$1" in *.tar.bz2) if [[ -z "${3:-}" ]] then __rvm_tar cjf "$1" "$2" else __rvm_tar cjf "$1" -C "$2" "$3" fi ;; *.tar.gz|*.tgz) if [[ -z "${3:-}" ]] then __rvm_tar czf "$1" "$2" else __rvm_tar czf "$1" -C "$2" "$3" fi ;; *) return 199 ;; esac }