|
4 | 4 |
|
5 | 5 | set -e |
6 | 6 |
|
7 | | -websites=' |
| 7 | +websites=( |
8 | 8 | website.filecoin.io |
9 | 9 | website.protocol.ai |
10 | 10 | research.protocol.ai |
@@ -33,33 +33,38 @@ dev.peerpad.net |
33 | 33 | flipchart.peerpad.net |
34 | 34 | project-repos.ipfs.io |
35 | 35 | dnslink.io |
36 | | -' |
| 36 | +) |
37 | 37 |
|
38 | | -pinset_file=$(mktemp "$(basename $0).XXXXXXXXXX" --tmpdir) |
39 | | -# open a file descriptor for writing |
40 | | -exec 3>"$pinset_file" |
| 38 | +pinset_file="$(mktemp "$(basename "$0").XXXXXXXXXX" --tmpdir)" |
| 39 | +ipfs-cluster-ctl "$@" pin ls >"$pinset_file" |
41 | 40 | # remove temp file after this script ends |
42 | | -trap "rm -f $pinset_file" 0 2 3 15 |
| 41 | +trap 'rm -f "$pinset_file"' EXIT |
43 | 42 |
|
44 | | -ipfs-cluster-ctl $@ pin ls >&3 |
| 43 | +for s in "${websites[@]}"; do |
| 44 | + declare -A oldcids |
| 45 | + while read -r oldcid; do |
| 46 | + oldcids["$oldcid"]=1 |
| 47 | + done < <(grep "| $s |" "$pinset_file" | cut -d ' ' -f 1) |
| 48 | + newcid="$(ipfs resolve -r "/ipns/$s")" || { |
| 49 | + echo "failed resolving $s" |
| 50 | + continue |
| 51 | + } |
| 52 | + newcid="${newcid#/ipfs/}" # remove /ipfs/ prefix |
45 | 53 |
|
46 | | -for s in $websites; do |
47 | | - oldcids=$(grep "| $s |" $pinset_file | cut -d ' ' -f 1) |
48 | | - newcid=$(ipfs resolve -r "/ipns/$s") |
49 | | - # remove /ipfs prefix |
50 | | - newcid=$(basename $newcid) |
51 | | - pinned=no |
52 | | - for oldcid in $oldcids; do |
53 | | - if [[ "$oldcid" == "$newcid" || "$pinned" == "yes" ]]; then |
54 | | - echo "already pinned in latest version: $s" |
55 | | - else |
56 | | - echo "pinning: $s" |
57 | | - ipfs-cluster-ctl $@ pin add --no-status --name "$s" "$newcid" |
58 | | - pinned=yes |
59 | | - fi |
60 | | - if [[ -n "$oldcid" && ("$newcid" != "$oldcid") ]]; then |
61 | | - echo "unpinning old version: $oldcid" |
62 | | - ipfs-cluster-ctl $@ pin rm --no-status "$oldcid" |
| 54 | + if [[ -z "${oldcids["$newcid"]}" ]]; then |
| 55 | + echo "pinning: $s" |
| 56 | + ipfs-cluster-ctl "$@" pin add --no-status --name "$s" "$newcid" |
| 57 | + else |
| 58 | + echo "already pinned in latest version: $s" |
| 59 | + fi |
| 60 | + |
| 61 | + for oldcid in "${!oldcids[@]}"; do |
| 62 | + if [[ "$oldcid" == "$newcid" ]]; then |
| 63 | + continue |
63 | 64 | fi |
| 65 | + echo "unpinning old version of $s: $oldcid" |
| 66 | + ipfs-cluster-ctl "$@" pin rm --no-status "$oldcid" |
64 | 67 | done |
| 68 | + |
| 69 | + unset -v oldcids |
65 | 70 | done |
0 commit comments