diff options
author | merakor <cem@ckyln.com> | 2020-10-31 12:44:09 +0000 |
---|---|---|
committer | merakor <cem@ckyln.com> | 2020-10-31 12:44:09 +0000 |
commit | c5843a6907de84fad553cb3e4d3f080f55e78945 (patch) | |
tree | 90f57448ca755f07e56c6d3fa115654932fabeec | |
parent | 3591d3541eb9d79dd23de43995be0e8c05d83213 (diff) | |
download | cpt-c5843a6907de84fad553cb3e4d3f080f55e78945.tar.gz |
cpt-fork: allow specifying full path
FossilOrigin-Name: 30aa742e72329308997e804260ea644a315df66dd4a63690a2dd48060637d6a6
-rwxr-xr-x | contrib/cpt-fork | 22 |
1 files 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. |