aboutsummaryrefslogtreecommitdiff
path: root/contrib/cpt-fork
diff options
context:
space:
mode:
authormerakor <cem@ckyln.com>2020-10-31 12:44:09 +0000
committermerakor <cem@ckyln.com>2020-10-31 12:44:09 +0000
commitc5843a6907de84fad553cb3e4d3f080f55e78945 (patch)
tree90f57448ca755f07e56c6d3fa115654932fabeec /contrib/cpt-fork
parent3591d3541eb9d79dd23de43995be0e8c05d83213 (diff)
downloadcpt-c5843a6907de84fad553cb3e4d3f080f55e78945.tar.gz
cpt-fork: allow specifying full path
FossilOrigin-Name: 30aa742e72329308997e804260ea644a315df66dd4a63690a2dd48060637d6a6
Diffstat (limited to 'contrib/cpt-fork')
-rwxr-xr-xcontrib/cpt-fork22
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.