# TODO to Issue Action This action will convert your `# TODO` comments to GitHub issues when a new commit is pushed. The new issue will contain a link to the line in the file code containing the TODO, together with a code snippet. It will also close an issue when a `# TODO` is removed in a pushed commit. A comment will be posted with the ref of the commit that it was closed by. The `# TODO` comment is commonly used in Python, but this can be customised to whatever you want. ## Usage Create a workflow file in your .github/workflows directory as follows: ### workflow.yaml name: "Workflow" on: ["push"] jobs: build: runs-on: "ubuntu-latest" steps: - uses: "actions/checkout@master" - name: "TODO to Issue" uses: "alstr/todo-to-issue-action@master" with: REPO: ${{ github.repository }} BEFORE: ${{ github.event.before }} SHA: ${{ github.sha }} TOKEN: ${{ secrets.GITHUB_TOKEN }} LABEL: "# TODO" COMMENT_MARKER: "#" id: "todo" ### Inputs | Input | Description | |----------|-------------| | `REPO` | The path to the repository where the action will be used, e.g. 'alstr/my-repo' (automatically set) | | `BEFORE` | The SHA of the last pushed commit (automatically set) | | `SHA` | The SHA of the latest commit (automatically set) | | `TOKEN` | The GitHub access token to allow us to retrieve, create and update issues (automatically set) | | `LABEL` | The label that will be used to identify TODO comments (by default this is `# TODO` for Python) | | `COMMENT_MARKER` | The marker used to signify a line comment in your code (by default this is `#` for Python) | ## Examples ### Adding TODOs def hello_world(): # TODO Come up with a more imaginative greeting print('Hello world!') This will create an issue called "Come up with a more imaginative greeting". **The action expects a space to follow the `TODO` label.** Should the title be longer than 50 characters, it will be truncated for the issue title. The full title will be included in the issue body and a `todo` label will be attached to the issue. ### Multiline TODOs def hello_world(): # TODO Come up with a more imaginative greeting # Everyone uses hello world and it's boring. print('Hello world!') You can create a multiline todo by continuing below the initial TODO declaration with a comment. The extra line(s) will be posted in the body of the issue. The `COMMENT_MARKER` input must be set to the correct syntax (e.g. `#` for Python). ### Removing TODOs def hello_world(): print('Hello world!') Removing the `# TODO` comment will close the issue on push. ### Updating TODOs def hello_world(): # TODO Come up with a more imaginative greeting, like "Greetings world!" print('Hello world!') Should you change the `# TODO` text, this will currently create a new issue, so bear that in mind. This may be updated in future. ## Thanks Thanks to Jacob Tomlinson for his handy overview of GitHub Actions: https://www.jacobtomlinson.co.uk/posts/2019/creating-github-actions-in-python/