todo_as_issue 1.2.1 copy "todo_as_issue: ^1.2.1" to clipboard
todo_as_issue: ^1.2.1 copied to clipboard

A command-line interface for converting a TODO list into a list of issues on your GitHub / GitLab repository.

📝 TODOasIssue #

Summary #

  1. Description

  2. Installation

  3. Setting up TodoAsIssue

    3.1. Required fields for GitHub

    3.2. Required fields for GitLab

  4. Usage

  5. Project architecture

  6. Supported platforms

  7. Design patterns used

  8. UML diagram

  9. License

Description #

From a list of TODOs to a list of issues on your GitHub or GitLab repository.

[~]: "This is my first TODO";
[]: "This is my second TODO";

GitHub and Gitlab projects can have issues created by developers / users to report errors, bugs and etcetera. The idea of building TODOasIssue is to automate the creation of issues locally by writing everything that you need in a simple text file and publishing it to your GitHub / GitLab project without even opening your browser to do that.

Installation #

First of all, you need to have Dart installed on your computer. See Dart documentation. After that, run the following command:

dart pub global activate todo_as_issue

Now you have TodoAsIssue installed.

Setting up TodoAsIssue #

On your project root folder, create a file called todo.json and paste the content below:

{
    "owner": "YOUR_GITHUB_USERNAME",
    "repo_name_github": "YOUR_GITHUB_REPOSITORY_NAME",
    "repo_id_gitlab": "YOUR_GITLAB_PROJECT_ID",
    "platform": "YOUR_OPEN_SOURCE_PLATFORM",
    "github_token": "YOUR_PRIVATE_TOKEN_FROM_GITHUB",
    "gitlab_token": "YOUR_PRIVATE_TOKEN_FROM_GITLAB"
}

In platform field, you can use github or gitlab.

After that, you can create a file called todo.txt in the project root folder to insert all your TODOs. For more informations and examples about how to create a TODO file, go here.

Required fields for GitHub #

  • owner: Your username
  • repo_name_github: Your repository
  • platform: It should be set to github
  • github_token: Your private access token. See GitHub Docs

Leave the remaining ones empty (empty string).

Required fields for GitHub #

  • repo_id_gitlab: Your repository id
  • platform: It should be set to gitlab
  • gitlab_token: Your private access token. See GitLab Docs

Leave the remaining ones empty (empty string).

WARNING: Insert this file todo.json on your .gitignore in order to keep your informations safe, especially your private token.

Usage #

After setting up TodoAsIssue, go to your project's root directory and run the following command:

todo_as_issue

That command will look for todo.json and todo.txt on project's root directory.

Project architecture #

Supported platforms #

  • Linux: Working properly on Manjaro Arch Linux.
  • Windows: It might work, but it was not tested.
  • macOS: It might work, but it was not tested.

UML Diagram #

My UML diagram is very big, therefore I'll just link to the file instead of trying to put it here. Check it here.

Design patterns used #

  • Iterator

    Iterator pattern was used on the parser implementation. I used it for iterating over a list of tokens. Additionally, even though Dart provides a built-in iterator for List, Dart doesn't offer me a method called hasNext() to check if there is a next element to iterate, that's why I implemented this pattern, just for building this method by myself. You can check it out here.

  • Singleton

    Singleton pattern was used on the implementation of open source platforms, such as GitHub and GitLab. I decided to use it because I didn't want to have more than one instance of each platform on my program, it should be unique, makes no sense to have more than one of these. You can check it out here and here.

  • Strategy

    Strategy pattern was used on the implementation of open source platforms as well. I decided to do this because we can have more than one kind of open source platforms, such as GitHub and GitLab. Therefore we can change the "strategy" to another open source platform. You can check it out here.

  • Facade

    Facade pattern was used on the implementation of TodoAsIssue class. This class is used for calling all the important methods, just acting like an front-facing interface masking more complex underlying code. It happens because TodoAsIssue doesn't know anything about the inner implementations of lexer and parser, for example, that's why it is called "Facade". You can check it out here.

Possible bugs and how to avoid it #

  1. The program can crash if it has a new line at the end of todo.txt. Make sure you don't have a new line at the end.

  2. The program can crash if it has extra whitespaces at the end of each TODO in todo.txt. Make you sure you don't have these extra whitespaces.

I'm working to solve these issues.

License #

This project is licensed under the MIT license. See LICENSE.

2
likes
0
pub points
0%
popularity

Publisher

unverified uploader

A command-line interface for converting a TODO list into a list of issues on your GitHub / GitLab repository.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

args, http

More

Packages that depend on todo_as_issue