aboutsummaryrefslogtreecommitdiff
path: root/contrib/cpt-fork
blob: 6d50064cd2a715937c3d5adb6b146b8786dbe969 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh -ef
# 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

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

    cp -r "$(cpt-search --single "$pkg")" .

    # Sometimes forked packages are from the database and not from a repository.
    # We should remove the manifest in such a case.
    rm -f "$pkg/manifest" "$pkg/etcsums"

    printf 'forked package to %s\n' "$PWD/$pkg"
done