diff --git a/.github/workflows/issue_closer.yml b/.github/workflows/issue_closer.yml new file mode 100644 index 0000000000..4ad34baa72 --- /dev/null +++ b/.github/workflows/issue_closer.yml @@ -0,0 +1,103 @@ +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: 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."; + + let item1 = "Version of Telegram Desktop"; + let item2 = "Used theme"; + let body = context.payload.issue.body; + + console.log("Body of issue:\n" + body); + let index1 = body.indexOf(item1) + item1.length; + let index2 = body.indexOf(item2); + index2 = (index2 == -1) ? Number.MAX_SAFE_INTEGER : index2; + + 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, 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); + + if (issueNum <= latestNum && issueNum < 5) { + console.log("Seems the version of this issue is fine!"); + 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' + }); +