2022-02-05 13:26:03 +08:00
#!/usr/bin/env bash
set -eo pipefail
if [ -z $GHTOKEN ] ; then
2022-02-05 15:36:36 +08:00
>& 2 echo -e "\033[1;31mMissing Github Token(GHTOKEN)! Please get a BotToken from 'Github Settings->Developer settings->Personal access tokens' and set it in Repo Secrect\033[0m"
2022-02-05 13:26:03 +08:00
exit 1
fi
if [ -z $BOTTOKEN ] ; then
2022-02-05 15:36:36 +08:00
>& 2 echo -e "\033[1;31mMissing Bot Token(BOTTOKEN)! Please get a BotToken from @Botfather on Telegram and set it in Repo Secrect\033[0m"
2022-02-05 13:26:03 +08:00
exit 2
fi
if [ -z $CHATIDS ] ; then
2022-02-05 15:36:36 +08:00
>& 2 echo -e "\033[1;31mMissing ChatIds(CHATIDS)! Please get ChatId from @GroupIDbot on Telegram Chats(Muti chatids split with comma ',') and set it in Repo Environment Values\033[0m"
2022-02-05 13:26:03 +08:00
exit 2
fi
function login_gh( ) {
printf "#%.0s" { 1..60}
echo
echo -e "## \033[1;33mLogin to github to use github-cli...\033[0m"
printf "#%.0s" { 1..60}
echo
echo $GHTOKEN > WeChatSetup/temp/GHTOKEN
gh auth login --with-token < WeChatSetup/temp/GHTOKEN
if [ " $? " -ne 0 ] ; then
>& 2 echo -e "\033[1;31mLogin Failed, please check your network or token!\033[0m"
clean_data 1
fi
rm -rfv WeChatSetup/temp/GHTOKEN
}
### https://kodango.com/sed-and-awk-notes-part-5
## start=${1:-""} means as follows in general
## if ($1) then
## start=$1
## else
## start=""
## end
function join_lines( ) {
local delim = ${ 1 :- , }
sed 'H;$!d;${x;s/^\n//;s/\n/\' $delim '/g}'
}
function clean_data( ) {
printf "#%.0s" { 1..60}
echo
echo -e "## \033[1;33mClean runtime and exit...\033[0m"
printf "#%.0s" { 1..60}
echo
rm -rfv WeChatSetup/*
exit $1
}
function main( ) {
temp_path = "WeChatSetup/temp"
mkdir -p ${ temp_path }
2022-02-05 14:54:21 +08:00
login_gh
2022-02-05 13:26:03 +08:00
gh release view --json body --jq ".body" > ${ temp_path } /release.info
release_info = ` awk '!/^$|Sha256/ { $1="*"$1"*";sub("UpdateTime", "CheckTime"); if ( match($2, /https?:\/\/([\w\.\/:])*/) ) $2="[Url]("$2")"; print $0 }' ${ temp_path } /release.info | join_lines '%0A' | sed 's/ /%20/g' `
dest_version = ` awk '/DestVersion/ { print $2 }' ${ temp_path } /release.info`
release_info = " $release_info %0A%0A*NotifyFrom:*%20[Github](https://github.com/tom-snow/wechat-windows-versions/releases/tag/v $dest_version ) "
2022-02-05 15:10:41 +08:00
echo $CHATIDS | sed 's/,/\n/g' > ${ temp_path } /chat_ids
# while IFS="" read -r chatid || [ -n "$chatid" ]
while IFS = "" read -r chatid
2022-02-05 13:26:03 +08:00
do
api_link = " https://api.telegram.org/bot $BOTTOKEN /sendMessage?chat_id= $chatid &text=*New%20WeChat%20Windows%20Version!!*%0A%0A $release_info &parse_mode=Markdown&disable_web_page_preview=true "
curl -s -o /dev/null $api_link
2022-02-05 15:10:41 +08:00
done < ${ temp_path } /chat_ids
2022-02-05 13:26:03 +08:00
gh auth logout --hostname github.com | echo "y"
clean_data 0
}
main