blob: 21e1618c8fc269257b43016ec7b9657a0053fe93 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#!/bin/sh -ef
# Fork a package to the current directory
## SYNOPSIS:
## .Nm
## .Op Ar pkg...
## DESCRIPTION:
## .Nm
## copies the given packages to the current directory.
## HANDLING FORKED PACKAGES:
## After forking a package, a user can either add the parent directory of the
## package to their
## .Ev CPT_PATH
## or run
## .Bd -literal -compact -offset indent
## cpt-build && cpt-install
## .Ed
## inside the package directory to build and install the forked package.
## see: cpt-link.1
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##*/}" ] &&
die "$pkg already exists on the current directory." \
"You can set CPT_FORCE=1 to ignore this."
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 and etcsums in such a case.
rm -f "$pkg/manifest" "$pkg/etcsums"
printf 'forked package to %s\n' "$PWD/$pkg"
done
|