diff --git a/portfolio.sh b/portfolio.sh
index 3f01862..0963b96 100755
--- a/portfolio.sh
+++ b/portfolio.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# current dir
-dir="$(dirname $(realpath $0))"
+dir="$(dirname "$(realpath "$0")")"
# get files
wallet="${dir}/wallet.json"
@@ -22,7 +22,10 @@ portfolio=$(jq -s '[ .[0] + .[1] | group_by(.token)[] | add ]' \
<(echo "$(jq '.tokens' $wallet)") <(echo "$prices"))
# calculate value
-calc=$(jq '[.[] | .["value"] = .balance * .price | .["margin"] = .value - .investment | .["movement"] = .margin / .investment]' \
+calc=$(jq '[.[]
+ | .["value"] = .balance * .price
+ | .["margin"] = .value - .investment
+ | .["movement"] = .margin / .investment]' \
<(echo "$portfolio"))
# create rows
@@ -32,13 +35,30 @@ for t in "${tokens[@]}"; do
tok=$(echo $t | jq '.token' | tr -d '"');
bal=$(echo $t | jq '.balance|tonumber');
prc=$(echo $t | jq '.price|tonumber');
- inv=$(echo $t | jq '.investment|tonumber');
- val=$(echo $t | jq '.value|tonumber');
- mar=$(echo $t | jq '.margin|tonumber');
- mov=$(echo $t | jq '.movement|tonumber');
- row=$(echo "${row}
${tok} | ${bal} | "$(printf "$%.2f\n" $prc)" | "$(printf "$%.2f\n" $inv)" | "$(printf "$%.2f\n" $val)" | "$(printf "$%.2f\n" $mar)" | "$(printf "%.3f\n" $mov)" |
");
- csv=$(echo "${csv}"$(echo -n $(date +",['"%F"','"%T"','"%:::z"'"))",'${tok}','${bal}','${prc}','${inv}','${val}','${mar}','${mov}']");
+ if [[ -n "$prc" ]]; then
+ inv=$(echo $t | jq '.investment|tonumber');
+ val=$(echo $t | jq '.value|tonumber');
+ mar=$(echo $t | jq '.margin|tonumber');
+ mov=$(echo $t | jq '.movement|tonumber');
+ else
+ read -r inv val mar mov <<<$(echo 0 0 0 0);
+ fi
+
+
+ row=$(
+ echo "${row}${tok} | ${bal} | " \
+ $(printf "$%.2f\n" $prc)" | " \
+ $(printf "$%.2f\n" $inv)" | " \
+ $(printf "$%.2f\n" $val)" | " \
+ $(printf "$%.2f\n" $mar)" | " \
+ $(printf "%.3f\n" $mov)" |
" \
+ );
+ csv=$(
+ echo "${csv}"\
+ $(echo -n $(date +"['"%F"','"%T"','"%:::z"'")) \
+ ",'${tok}','${bal}','${prc}','${inv}','${val}','${mar}','${mov}']" \
+ );
# Sum up
tot_inv=$(echo "${tot_inv:-0}+$inv" | bc);
@@ -48,21 +68,31 @@ for t in "${tokens[@]}"; do
done
# format array
-csv=$(echo $csv | sed 's|^,||g')
+csv=$(echo $csv | sed 's|\] \[|\],\[|g')
# calculate movement
tot_mov=$(echo "scale=3 ; $tot_mar / $tot_inv" | bc)
# fill template
-page=$(cat $template | sed "s|%row%|$row|g;s|%inv%|"$(printf "$%.2f\n" $tot_inv)"|g;s|%val%|"$(printf "$%.2f\n" $tot_val)"|g;s|%mar%|"$(printf "$%.2f\n" $tot_mar)"|g;s|%mov%|"$(printf "%.4f\n" $tot_mov)"|g;s|%dts%|$dts|g;s|%csv_data%|$csv|g;s|%dts_fln%|"$(echo -n $(date '+%F_%T%:::z'))"|g")
+page=$(cat $template | \
+ sed "s|%row%|$row|g" | \
+ sed "s|%inv%|"$(printf "$%.2f\n" $tot_inv)"|g" | \
+ sed "s|%val%|"$(printf "$%.2f\n" $tot_val)"|g" | \
+ sed "s|%mar%|"$(printf "$%.2f\n" $tot_mar)"|g" | \
+ sed "s|%mov%|"$(printf "%.4f\n" $tot_mov)"|g" | \
+ sed "s|%dts%|$dts|g" | \
+ sed "s|%csv_data%|$csv|g" | \
+ sed "s|%dts_fln%|"$(echo -n $(date '+%F_%T%:::z'))"|g")
# encode link
itty=$(echo -n $page | lzma -9 | base64 -w0 | xargs -0 printf "https://itty.bitty.site/#Portfolio/%s\n")
-# send signal
+# get ntfy
ntfy=$(jq -r '.ntfy | "\(.server)/\(.topic)"' $wallet)
+# send report
curl \
-H "title: Portfolio Update" \
- -H "tags: coin" -H "click: ${itty}" \
+ -H "tags: coin" \
+ -H "click: ${itty}" \
-d "Click Here" $ntfy