Skip to content

Commit 91d8eb8

Browse files
authored
Merge pull request #9 from etam/master
improve logic
2 parents 997ffe2 + d970845 commit 91d8eb8

File tree

1 file changed

+29
-24
lines changed

1 file changed

+29
-24
lines changed

ipfs-websites/pin-websites.sh

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
set -e
66

7-
websites='
7+
websites=(
88
website.filecoin.io
99
website.protocol.ai
1010
research.protocol.ai
@@ -33,33 +33,38 @@ dev.peerpad.net
3333
flipchart.peerpad.net
3434
project-repos.ipfs.io
3535
dnslink.io
36-
'
36+
)
3737

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"
4140
# remove temp file after this script ends
42-
trap "rm -f $pinset_file" 0 2 3 15
41+
trap 'rm -f "$pinset_file"' EXIT
4342

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
4553

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
6364
fi
65+
echo "unpinning old version of $s: $oldcid"
66+
ipfs-cluster-ctl "$@" pin rm --no-status "$oldcid"
6467
done
68+
69+
unset -v oldcids
6570
done

0 commit comments

Comments
 (0)