aboutsummaryrefslogtreecommitdiff
path: root/src/cpt-checksum
blob: 488ab874ebb4b1a2bfd953577b6cafaec6ff3e6e (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
#!/bin/sh -ef
# Generate checksums

parser_definition() {
    setup REST help:usage -- "usage: ${0##*/} [-s] [pkg...]"
    msg         -- '' 'Options:'
    flag sha -s --    "Generate checksums using the depracated sha256 algorithm"
    global_options
}

if [ -f ./cpt-lib ]; then . ./cpt-lib; else . cpt-lib; fi

[ "$1" ] || { set -- "${PWD##*/}"; CPT_PATH=${PWD%/*}:$CPT_PATH ;}
create_cache

for pkg; do pkg_lint    "$pkg" c; done
for pkg; do pkg_sources "$pkg" c; done
for pkg; do
    # Do not generate checksums if the 'sources' file is empty or it doesn't
    # exist.
    repo_dir=$(pkg_find "$pkg")
    [ -s "$repo_dir/sources" ] || {
        log "$pkg" "No 'sources' file, skipping checksums"
        continue
    }

    # $sha is defined by the parser.
    # shellcheck disable=2154
    pkg_checksums "$pkg" "${sha:+sh256}" | {

        if [ -w "$repo_dir" ]; then
            tee "$repo_dir/checksums"
        else
            log "$pkg" "Need permissions to generate checksums"
            user=$(_stat "$repo_dir") as_root tee "$repo_dir/checksums"
        fi
    }

    log "$pkg" "Generated checksums"
done