From c5843a6907de84fad553cb3e4d3f080f55e78945 Mon Sep 17 00:00:00 2001 From: merakor Date: Sat, 31 Oct 2020 12:44:09 +0000 Subject: cpt-fork: allow specifying full path FossilOrigin-Name: 30aa742e72329308997e804260ea644a315df66dd4a63690a2dd48060637d6a6 --- contrib/cpt-fork | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/contrib/cpt-fork b/contrib/cpt-fork index 6d50064..d0d8c1c 100755 --- a/contrib/cpt-fork +++ b/contrib/cpt-fork @@ -2,17 +2,23 @@ # Fork a package to the current directory case "$1" in ''|--help|-h) printf '\033[1;33m-> \033[m%s\n' "usage: ${0##*/} [pkg...]" ; exit 0 ; esac +die() { printf '\033[1;31m!> \033[m%s\n' "$@" >&2; exit 1;} for pkg; do - [ "$CPT_FORCE" != 1 ] && [ -d "$pkg" ] && { - printf '\033[1;31m!> \033[m%s\n' \ - "$pkg already exists on the current directory. You can set" \ - "CPT_FORCE=1 to ignore this." - exit 1 - } - cpt-search "$pkg" >/dev/null + [ "$CPT_FORCE" != 1 ] && [ -d "${pkg##*/}" ] && + die "$pkg already exists on the current directory." \ + "You can set CPT_FORCE=1 to ignore this." - cp -r "$(cpt-search --single "$pkg")" . + case "$pkg" in + */*) + [ -d "$pkg" ] || die "$pkg is not a directory" + cp -r "$pkg" . + pkg=${pkg##*/} + ;; + *) + cpt-search "$pkg" >/dev/null + cp -r "$(cpt-search --single "$pkg")" . + esac # Sometimes forked packages are from the database and not from a repository. # We should remove the manifest in such a case. -- cgit v1.2.3