diff --git a/libexec/basher-_clone b/libexec/basher-_clone index 7dc5e74..1c637ef 100755 --- a/libexec/basher-_clone +++ b/libexec/basher-_clone @@ -2,11 +2,11 @@ # # Summary: Clones a package from a site, but doesn't install it # -# Usage: basher _clone [] +# Usage: basher _clone [] [folder] set -e -if [ "$#" -ne 3 -a "$#" -ne 4 ]; then +if [ "$#" -lt 3 -a "$#" -gt 5 ]; then basher-help _clone exit 1 fi @@ -15,6 +15,7 @@ use_ssh="$1" site="$2" package="$3" ref="$4" +folder="$5" if [ -z "$use_ssh" ]; then basher-help _clone @@ -49,7 +50,11 @@ if [ -z "$name" ]; then exit 1 fi -if [ -e "$BASHER_PACKAGES_PATH/$package" ]; then +if [ -z "$folder" ]; then + folder="$package" +fi + +if [ -e "$BASHER_PACKAGES_PATH/$folder" ]; then echo "Package '$package' is already present" exit 0 fi @@ -66,4 +71,4 @@ else URI="https://${site}/$package.git" fi -git clone ${DEPTH_OPTION} ${BRANCH_OPTION} --recursive "$URI" "${BASHER_PACKAGES_PATH}/$package" +git clone ${DEPTH_OPTION} ${BRANCH_OPTION} --recursive "$URI" "${BASHER_PACKAGES_PATH}/$folder" diff --git a/libexec/basher-install b/libexec/basher-install index f9ede46..e41e4da 100755 --- a/libexec/basher-install +++ b/libexec/basher-install @@ -2,7 +2,7 @@ # # Summary: Installs a package from github (or a custom site) # -# Usage: basher install [--ssh] [site]/[@ref] +# Usage: basher install [--ssh] [site]/[@ref] [folder] set -e @@ -15,7 +15,7 @@ case $1 in ;; esac -if [ "$#" -ne 1 ]; then +if [ "$#" -lt 1 -o "$#" -gt 2 ]; then basher-help install exit 1 fi @@ -24,10 +24,22 @@ if [[ "$1" = */*/* ]]; then IFS=/ read -r site user name <<< "$1" package="${user}/${name}" else - package="$1" + IFS=/ read -r user name <<< "$1" + package="${user}/${name}" site="github.com" fi +# defaults to package's name, but allows custom folder name +folder="$package" +if [ -n "$2" ]; then + if [[ "$2" != *([^/])/*([^/]) ]]; then + basher-help install + echo "Optional argunment [folder] must be in the format <...>/<...>" + exit 1 + fi + folder="$2" +fi + if [ -z "$package" ]; then basher-help install exit 1 @@ -51,12 +63,8 @@ else ref="" fi -if [ -z "$ref" ]; then - basher-_clone "$use_ssh" "$site" "$package" -else - basher-_clone "$use_ssh" "$site" "$package" "$ref" -fi -basher-_deps "$package" -basher-_link-bins "$package" -basher-_link-man "$package" -basher-_link-completions "$package" +basher-_clone "$use_ssh" "$site" "$package" "$ref" "$folder" +basher-_deps "$folder" +basher-_link-bins "$folder" +basher-_link-man "$folder" +basher-_link-completions "$folder" diff --git a/libexec/basher-list b/libexec/basher-list index f0f1d46..91131ae 100755 --- a/libexec/basher-list +++ b/libexec/basher-list @@ -1,10 +1,17 @@ #!/usr/bin/env bash # # Summary: List installed packages -# Usage: basher list +# Usage: basher list [-v] set -e +case $1 in + -v) + verbose="true" + shift + ;; +esac + if [ "$#" -gt 0 ]; then basher-help list exit 1 @@ -17,5 +24,9 @@ do username="$(dirname "$package_path")" username="${username##*/}" package="${package_path##*/}" - echo "$username/$package" + if [ -z "$verbose" ]; then + echo "$username/$package" + else + printf "%-30s %-30s\n" "$username/$package" "($(git --git-dir=${BASHER_PACKAGES_PATH}/$username/$package/.git config --get remote.origin.url))" + fi done