name: Issue closer. on: issues: types: opened jobs: comment: runs-on: ubuntu-latest steps: - name: Get the latest version. run: | tag=$(git ls-remote --tags git://github.com/$GITHUB_REPOSITORY | cut -f 2 | tail -n1) echo $tag echo ::set-env name=LATEST_TAG::$tag - name: Get the latest macOS version. shell: python run: | import subprocess; from xml.dom import minidom; url = "https://osx.telegram.org/updates/versions.xml"; subprocess.check_call("wget %s" % url, shell=True); xmldoc = minidom.parse('versions.xml'); itemlist = xmldoc.getElementsByTagName('enclosure'); ver = itemlist[0].attributes['sparkle:shortVersionString'].value; print(ver); subprocess.check_call("echo ::set-env name=%s::%s" % ("LATEST_MACOS", ver), shell=True); - name: Check a version from an issue. uses: actions/github-script@0.4.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | let errorStr = "Version not found."; function maxIndexOf(str, i) { let index = str.indexOf(i); return (index == -1) ? Number.MAX_SAFE_INTEGER : index; } let item1 = "Version of Telegram Desktop"; let item2 = "Installation source"; let item3 = "Used theme"; let item4 = "
"; let body = context.payload.issue.body; console.log("Body of issue:\n" + body); let index1 = body.indexOf(item1); let index2 = Math.min( Math.min( maxIndexOf(body, item2), maxIndexOf(body, item3)), maxIndexOf(body, item4)); console.log("Index 1: " + index1); console.log("Index 2: " + index2); if (index1 == -1) { console.log(errorStr); return; } function parseVersion(str) { let pattern = /[0-9]\.[0-9][0-9.]{0,}/g; return str.match(pattern); } function firstNum(version) { return version[0].split(".")[0]; } let issueVer = parseVersion(body.substring(index1 + item1.length, index2)); if (issueVer == undefined) { console.log(errorStr); return; } console.log("Version from issue: " + issueVer[0]); let latestVer = parseVersion(process.env.LATEST_TAG); if (latestVer == undefined) { console.log(errorStr); return; } console.log("Version from tags: " + latestVer[0]); let issueNum = firstNum(issueVer); let latestNum = firstNum(latestVer); let macos_ver = process.env.LATEST_MACOS; console.log("Telegram for MacOS version from website: " + macos_ver); if (issueNum <= latestNum && issueNum < macos_ver) { console.log("Seems the version of this issue is fine!"); return; } if (issueNum > macos_ver) { let message = `Seems like it's neither the Telegram Desktop\ nor the Telegram for macOS version. `; console.log(message); return; } let message = ` Sorry, but according to the version you specify in this issue, \ you are using the [Telegram for macOS](https://macos.telegram.org), \ not the [Telegram Desktop](https://desktop.telegram.org). You can report your issue to [the group](https://t.me/macswift) \ or to [the repository of Telegram for macOS](https://github.com/overtake/TelegramSwift). **If I made a mistake and closed your issue wrongly, please reopen it. Thanks!** `; let params = { owner: context.issue.owner, repo: context.issue.repo, issue_number: context.issue.number }; github.issues.createComment({ ...params, body: message }); github.issues.addLabels({ ...params, labels: ['TG macOS Swift'] }); github.issues.update({ ...params, state: 'closed' });