diff options
author | Changjin Lee <changjin9792@gmail.com> | 2024-02-12 04:28:41 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-12 04:28:41 +0900 |
commit | e4d1528645631a791cbd21c05748be95604753b0 (patch) | |
tree | a204dcd3cc1cdd5493ac573dc16e4b9677459a25 | |
parent | 0b7d23e69f999861f0dd273b4a72cb3aff690745 (diff) | |
parent | 26e135d5a4ae1dead6dde98b32e925e452563c34 (diff) |
Merge pull request #50 from noisrucer/refactor-v2
Refactor v2
69 files changed, 3568 insertions, 5704 deletions
diff --git a/.cz.toml b/.cz.toml new file mode 100644 index 0000000..09dbad0 --- /dev/null +++ b/.cz.toml @@ -0,0 +1,46 @@ +# ref: https://github.com/commitizen-tools/commitizen/blob/master/docs/customization.md + +[tool.commitizen] +name = "cz_customize" + +[tool.commitizen.customize] +message_template = "{{change_type}}: {{message}}" +example = "๐ docs: create README.md" +schema = "<type>: <body>" +# schema_pattern = "(feature|bug fix):(\\s.*)" +# schema_pattern = "^(?P<change_type>):\\s(?P<message>.*)?" +bump_pattern = "^(break|new|fix|hotfix)" +bump_map = {"break" = "MAJOR", "new" = "MINOR", "fix" = "PATCH", "hotfix" = "PATCH"} +change_type_order = ["BREAKING CHANGE", "Feat", "Fix", "Refactor", "Perf"] +# commit_parser = "^(?P<change_type>feature|bug fix):\\s(?P<message>.*)?" +# changelog_pattern = "^(โจ feat|๐ง fix)?(!)?" +# change_type_map = {"โจ feat" = "Feat", "๐ง fix" = "Fix"} + +[[tool.commitizen.customize.questions]] +type = "list" +name = "change_type" +choices = [ + {value = "โจ feat", name = "โจ feat: Work on feature-related tasks."}, + {value = "๐ง fix", name = "๐ง fix: Fix a bug."}, + {value = "๐ docs", name = "๐ docs: Add or update documentation."}, + {value = "โป๏ธ refact", name = "โป๏ธ refact: Refactor code."}, + {value = "๐จ style", name = "๐จ style: Improve structure / format of the code or apply linter."}, + {value = "โ
test", name = "โ
test: Add, update, or pass tests."}, + {value = "๐งน chore", name = "๐งน chore: Do other grunt works."}, + {value = "โ๏ธ setting", name = "โ๏ธ setting: Add or update setting related tasks such as modifying dependencies, writing util scripts, etc."}, + {value = "๐ท๏ธ bump", name = "๐ท๏ธ bump: Add a release / version tag."}, + {value = "๐ init", name = "๐ init: Create a new project."}, +] +message = "Select the type of change you are committing" + +[[tool.commitizen.customize.questions]] +type = "input" +name = "message" +message = "Write a commit message:" + +[[tool.commitizen.customize.questions]] +# type = "confirm" +# message = "Do you want to confirm this commit?" +type = "press_any_key_to_continue" +name = "confirm_commit" +message = "Press any key to confirm this commit, or ctrl+c key to cancel this commit."
\ No newline at end of file @@ -7,6 +7,7 @@ **/node_modules/ /.pnp .pnp.js +**debug_** **/__pycache__ **/.env diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..0a59033 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.9.10 diff --git a/girok/README.md b/girok/README.md deleted file mode 100644 index fd54bc6..0000000 --- a/girok/README.md +++ /dev/null @@ -1,623 +0,0 @@ -<h1 align="center">โ๏ธ Girok - The most powerful CLI task manager</h1> - -<h3 align="center"> Who said you cannot have a beautiful UI on terminal?</h4> - -<p align="center"><img src="girok/resources/girok-demo.gif"></img></center> - -**Girok**, which means "to record" in Korean, is a **powerful terminal-based task manager** which provides a multitude of scheduling operations that can be done in less than 10 seconds. It also supports **beautiful and responsive calendar GUI** in which you can move around with VIM key bindings. - -Girok is running on AWS server so you can **login from any device in the world**! - -Girok works fluently with `MacOS` and `Linux` users. It also works with `Windows` but some features and UIs might break. - -p.s) Since I launched the project a couple days ago, you might feel a little bit of lag for `showtask` operation, especially when you have many data. I'm working on optimizing the speed to enhance your experience! - -# ๐ค Version `0.1.11` is released now! - -To see the current version, enter `girok --version`. - -### Upgrade with `pip install girok --upgrade` - -# ๐ก Future Updates (coming soon) - -1. ๐ป ๐ฑ **Web** and **app** which synchronizing all data with CLI. -2. ๐จ Task operations in the calendar view -3. โฐ **Girok Slack Bot** notification feature for tasks - set an alarm in 5 - seconds! -4. ๐ช **Team workspace** where users and create group and invite other people for collaboration - -# ๐ Table of Contents - -- [๐ Installation](#-Installation) -- [๐ฅ Get Started !](#-get-started) - - [๐ 1. help command](#helpcommand) - - [๐ 2. Register](#register) - - [๐ 3. Login / Logout](#loginandlogout) - - [๐ 4. Category commands](#categorycommands) - - [4.1. `showcat`](#showcatcommand) - - [4.2. `addcat`](#addcatcommand) - - [4.3. `mvcat`](#mvcatcommand) - - [4.4. `rmcat`](#rmcatcommand) - - [4.5. `rncat`](#rncatcommand) - - [๐ 5. Task Commands](#taskcommands) - - [5.1. `addtask`](#addtaskcommand) - - [5.2. `showtask`](#showtaskcommand) - - [5.3. `done`](#donecommand) - - [5.4. `chdate`](#chdatecommand) - - [5.5. `chpri`](#chpricommand) - - [5.6. `chtag`](#chtagcommand) - - [5.8. `chname`](#chnamecommand) - - [5.9. `showtag`](#showtagcommand) - - [๐
6. Calendar Commands](#calendarcommands) -- [๐ Report Bugs](#-report-bugs) -- [๐ญ Uninstall](#-uninstall) -- [๐ Contributions](#-contributions) - -# ๐ Installation - -Girok supports all operating systems including Linux, MacOS, Windows. - -However, it works well on Unix-based shells such as `bash`, `zsh`, `fish`, `wsl`, etc. - -Some shells like `powershell` might break some UIs. - -1. Make sure you have Python `>3.9` version installed. -2. Enter the following in your terminal - -```bash -pip install girok -``` - -Now you have installed `girok` on your machine. To make sure that it works, enter the following. - -```bash -girok --help -``` - -Now, let's dive into Girok! - -# ๐ฅ Get Started - -## ๐ 1. Help command <a name="helpcommand"></a> - -In order to see **all the commands** of **Girok**, enter `girok --help` in your terminal. - -![](images/girok-help.png) - -In order to see the details of each command, enter the following in your terminal. - -``` -girok <command> --help -``` - -For example, if you enter - -``` -girok addtask --help -``` - -then you'll see the following help message - -![](images/girok-command-help.png) - -## ๐ 2. Register <a name="register"></a> - -<p align="center"><img src="girok/resources/girok-register-demo.gif"></img></center> - -To register a new account enter the following in your terminal. - -```bash -girok register -``` - -Enter the email address and password and check your mail inbox to get the **verification code**. - -Congratulations! Now let's go ahead and login to our account. - -## ๐ 3. Login and Logout <a name="loginandlogout"></a> - -In order to login with your registered account, enter the following command. - -```bash -girok login -``` - -![](images/girok-login.png) - -Now you're ready to use all the features. - -## ๐ 4. Category Commands <a name="categorycommands"></a> - -You can pre-define **categories** such as `School`, `Life` and `Career` with automatically assigned category color. - -Girok supports **infinite recursive subcategories**. All the subcategories will be assigned with the color of its topmost parent category. - -Later on, you can link tasks to these categories. - -### 4.1 `showcat` command <a name="showcatcommand"></a> - -In order to see all the categories you have created, enter the following command. - -By default, `No Category` category is set (later for tasks which have no category). - -```bash -girok showcat -``` - -![](images/girok-addcat3.png) - -### 4.2 `addcat` command <a name="addcatcommand"></a> - -`addtask` command takes a single argument `category full path`. - -In order to add a new category, enter the following command. - -```bash -girok addcat <target path> -``` - -The `<target path>` is the **full path including the new category name**. For example, if you want to add a **topmost category** named `Career`, then enter - -```bash -girok addcat Career -``` - -Then, you'll see the category tree with the newly created category being highlighted. - -![](images/girok-addcat1.png) - -In order to nest a sub-category under a previously defined category, pass the **FULL PATH** starting from the topmost category delimited by `/`, ending with the new category name. - -For example, if you want to create a new category named `Resume` under the previously created `Career` category, enter the following command. - -```bash -girok addcat Career/Resume -``` - -Then, you'll see `Resume` is created under `Career`. - -![](images/girok-addcat2.png) - -In this way, you can create as many categories and sub-categories as you want! - -### 4.3 `mvcat` command <a name="mvcatcommand"></a> - -Now you might want to move a category under another category. - -In order to move a `category A` (recursively all its sub-categories) under `category B`, enter the following command. - -```bash -girok mvcat <full path of A> <full path of B> -``` - -For example, if you want to move the whole `Career` category under `Dev/Network` (for some weird reason), enter the following command. - -```bash -girok mvcat Career Dev/Network -``` - -![](images/girok-addcat4.png) - -If you want to move a category to the `root category`, then pass `/` as the second argument. Let's move `Dev/Network/Career` back to the topmost category. - -```bash -girok mvcat Dev/Network/Career / -``` - -![](images/girok-addcat5.png) - -### 4.4 `rmcat` command <a name="rmcatcommand"></a> - -Of course, you want to delete a category. In that case, enter the following command. - -```bash -girok rmcat <full path of category> -``` - -Let's add a dummy category named `Dummy` under `Dev` then remove it. - -As you already know, enter - -```bash -girok addcat Career/Dummy -``` - -![](images/girok-addcat6.png) - -Now, let's delete it with the following command. - -**[WARNING]** If you delete a category, **all its sub-categories and tasks will be DELETED**. I'll consider adding an option for users to preserve all the orphan tasks in the future. Please let me know in the issue if you need this feature! - -```bash -girok rmcat Career/Dummy -``` - -Then, you'll be asked to confirm the deletion. Enter `y`. - -![](images/girok-rmcat1.png) - -### 4.5 `rncat` command <a name="rncatcommand"></a> - -To rename an existing category, - -```bash -girok rncat <category path> <new name> -``` - -Great job! Now let's move on to the task commands. - -## ๐ 5. Task commands <a name="taskcommands"></a> - -**Girok** provides powerful task scheduling operations. You can perform different operations that would've taken a long time in other schedulers like Notion and Google Calendar in less than 10 seconds (If you get used to the commands). - -### 5.1 `addtask` command <a name="addtaskcommand"></a> - -```bash -girok addtask <task name> [One of deadline date options] [-c | --category <category path>] [-p | --priority <priority>] [-t | --time <deadline time>] [-T | --tag <tag name>] -``` - -It looks quite complicated but don't worry! Let's go through some rules. - -#### 5.1.1 `addtask` rules - -1. `<task name>` (Argument / **Required**) - If the task name has no space you can omit double quotes `""`. If it does, enclose the task name by double quotes `""` -2. `<One of date options>` (Option / **required**) - You must specify a **deadline "date"** of a task. There're many ways to add a deadline. Note that **ONLY ONE DATE OPTION** is allowed. - - `-d <yyyy/mm/dd | mm/dd>` - - Specify an exact date delimited by `/`. You can enter the full date in the form of `yyyy/mm/dd`. Or, you can omit the year like `mm/dd` then the deadline year will be set to the current year. - - You don't have to enter the exact form filled with `0`s. If the month is May, then just enter `5/23` or `05/23`. - - `-t1 ~ -t7 | --thismon ~ --thissun` - - Sometimes, you're not aware of the exact date. If the date is some weekday of this week, you can just pass `-t{1-7}` referrting to this monday to this sunday (monday indexed as `1`). - - For example, if the deadline is this friday, enter `girok addtask "dummy" -t5` - - `-n1 ~ -n7 | --nextmon ~ --nextsun` - - Similar to the above but referring to **next week**. - - `-a <# days>` - - Sometimes, you process the deadline in your mind like "it's due 5 days later". - - In this case, pass the number of days a task is due after. - - For example, if the deadline is 5 days later, enter `girok addtask "dummy" -a 5` - - `--tdy` - - Set the deadline to today. - - `--tmr` - - Set the deadline to tomorrow. -3. `-t | --time <hh:mm>` (Option, **Optional**) - You can also set the specific deadline time. - - You must provide the full time format in **24 hour scale** such as `07:23` or `21:59`. -4. `-c | --category <category full path>` (Option / **Optional**) - Your tasks might belong to a specific category you have previously defined. - - Provide the **full category path**. - - For example, if your task belongs to `Career/Resume`, then enter `girok addtask "dummy task 1" --tmr -c Career/Resume`. - - If you specify a category, then the task color will be automatically linked to that category's color. - - If no category is provided, the task will belong to `No Category` category. -5. `-p | --priority <priority (1~5)>` (Option, **Optional**) - You can set the priority of a task so that you can filter out by priority when you query your tasks. - - For example, to set the priority of a task as `5`, enter `girok addtask "dummy task 1" -c Career/Resume -p 5`. -6. `-T | --tag <tag name>` (Option, **Optional**) - You can set the **tag**(or type) of a task such as `assignment` and `meeting`. With tags, you can more efficiently query your tasks with different types. - - Unlike category, tag doesn't allow nested tags and you don't have to pre-define them. - - For example, if you want to set the tag of a task as `assignment`, enter `girok addtask "assignment 4" -c HKU/COMP3234 -d 4/24 --tag assignment` - -In summary, keep the following rules in mind. - -1. Always provide **task name** and **one of date options**. -2. Although not required, I think it's better to provide **category** to manage your tasks more effectively. -3. Other options are up to you! - -For example, the following command is a typical command that I use on everyday basis. - -```bash -girok addtask "Implement tag filtering feature" -c Dev/Girok -a 3 -p 5 -``` - -It looks quite complicated, but you'll get used to it quickly after playing out little bit. - -#### 5.1.2 `addtask` demonstration - -Now let's play around with `addtask` command. - -Recall our category list is - -![](images/girok-addtask1.png) - -In the demonstration, I will add several tasks and show how it works. - -Let's add a task named `go over resume again` whose category is `Career/Resume` and I will do it by `next thursday`. This is a quite important task, so I will assign the `priority` of `5`. - -```bash -girok addtask "go over resume again" -c Career/Resume -n4 -p 5 -``` - -![](images/girok-addtask2.png) - -When adding it, you will see the same category tree with tasks attached to the belonged category. (Priority is now shown by default. You can see the priority with `girok showtask` command we'll talk about very soon). - -Now I'll add another task named `Midterm exam` with the category `HKU/COMP3234` and the deadline is `4/18 09:30`. Hmm.. I think I have plenty of time so I will not provide the priority. However, I will assign the tag `exam`. - -```bash -girok addtask "Midterm exam" -c HKU/COMP3234 -d 4/18 -t 09:30 --tag exam -``` - -![](images/girok-addtask3.png) - -In the tree view, priority and tag are not shown to avoid complexity. Don't worry! You can view all the information when we go into `girok showtask` command. - -Lastly, I'll add a task named `Hangout with Jason` and the appointment date is `tomorrow`. This time, I will not provide any option. - -```bash -girok addtask "Hangout with Jason" --tmr -``` - -![](images/girok-addtask4.png) - -Notice that the newly added task is highlighted with green color. - -### 5.2 `showtask` command. <a name="showtaskcommand"></a> - -```bash -girok showtask [--tree] Deadline date options] [-c | --category <category path>] [-p | --priority <priority>] [-T | --tag <tag name>] -``` - -Girok provides powerful commands to effectively query your schedule with many different options. You can filter tasks by category, priority, deadline, and tag. - -#### 5.2.1 View options - -You can type `girok showtask` command with no parameter. The default view of the command is **list view**. - -Note that I've added some more tasks to make the visualization rich. - -```bash -girok showtask -``` - -![](images/girok-showtask1.png) - -By default, all tasks will be shown in a nice table format. - -If you want to view your tasks in a categorized manner, then provide `--tree` flag. - -```bash -girok showtask --tree -``` - -![](images/girok-showtask2.png) - -#### 5.2.2 Filter by category - -To query tasks under a specific category, use the following command, - -```bash -girok showtask -c <category path> -``` - -For example, to query tasks only for the `HKU` category. Enter the following command. - -```bash -girok showtask -c HKU -``` - -or - -```bash -girok showtask -c HKU --tree # tree view -``` - -![](images/girok-showtask5.png) - -#### 5.2.3 Filter by date options - -You can query your tasks filtering by many different date options. Notice that all the options for `showtask` command are **OPTIONAL**. - -1. `-e | --exact <yyyy/mm/dd | mm/dd>` - - To view tasks due to a specific day, provide the exact date after the flag -2. `-d | --day <# days>` - - To view tasks due **within `n` days**, provide the number of days `n` after the flag -3. `-w | --week <# days>` - - To view tasks due **within `n` weeks**, provide the number of weeks `n` after the flag -4. `-m | --month <# days>` - - To view tasks due **within `n` months**, provide the number of months `n` after the flag -5. `--tdy` - - To view tasks due today. -6. `--tmr` - - To view tasks due within tomorrow (today && tomorrow) -7. `--tw`, `--nw` - - To view tasks due within this week and next week, respectively -8. `--tm`, `--nm` - - To view tasks due within this month and next month, respectively -9. `-t1 ~ -t7 | --thismon ~ --thissun` - - To view tasks due **exactly** the weekday of this week - - Monday is indexed as `1` -10. `-n1 ~ -n7 | --nextmon ~ --nextsun` - -- To view tasks due **exactly** the weekday of next week -- Monday is indexed as `1` - -11. `-u | --urgent` - -- To view urgent tasks that are within `3 days` by default - -#### 5.2.4 Filter by priority - -```bash -girok showtask -p <priority (1~5)> -``` - -To view tasks with a specific priority, provide `-p` option followed by the priority number between `1` and `5`. - -For example, to view tasks with priority 5, enter the following command - -```bash -girok showtask -p 5 -``` - -![](images/girok-sho |