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