├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── pull_request_template.md ├── .gitignore ├── .npmrc ├── .travis.yml ├── cli.js ├── code-of-conduct.md ├── contributing.md ├── docs ├── readme.BG.md ├── readme.ES.md ├── readme.FR.md ├── readme.GER.md ├── readme.JP.md ├── readme.KR.md ├── readme.PT-BR.md ├── readme.RU.md ├── readme.TR.md ├── readme.ZH.md └── readme.md ├── index.js ├── license.md ├── media ├── header-boards.png ├── highlights.png └── timeline.png ├── package.json ├── readme.md ├── snapcraft.yaml └── src ├── config.js ├── help.js ├── item.js ├── note.js ├── render.js ├── storage.js ├── task.js └── taskbook.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{json,yml}] 15 | indent_style = space 16 | indent_size = 2 17 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.js text eol=lf 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior. 12 | 13 | **Expected behavior** 14 | A clear and concise description of what you expected to happen. 15 | 16 | **Screenshots** 17 | If applicable, add screenshots to help explain your problem. 18 | 19 | **Technical Info (please complete the following information)** 20 | - OS: 21 | - Node.js Version: 22 | - Taskbook Version: 23 | 24 | **Additional context** 25 | Add any other context about the problem here. 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Additional context** 14 | Add any other context or screenshots about the feature request here. 15 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | node_modules 3 | yarn.lock 4 | 5 | # logs 6 | *.log 7 | 8 | # OS 9 | .DS_Store 10 | 11 | # IDE 12 | .vscode 13 | .idea 14 | *.swp 15 | *.swo 16 | 17 | # snap 18 | prime 19 | snapcraft 20 | parts 21 | stage 22 | snap 23 | *.snap 24 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 10 4 | - 8 5 | - 6 6 | before_install: 7 | - npm install --global npm@6.4.0 8 | - npm --version 9 | -------------------------------------------------------------------------------- /cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | const meow = require('meow'); 4 | const updateNotifier = require('update-notifier'); 5 | const help = require('./src/help'); 6 | const pkg = require('./package.json'); 7 | const taskbook = require('.'); 8 | 9 | const cli = meow(help, { 10 | flags: { 11 | help: { 12 | type: 'boolean', 13 | alias: 'h' 14 | }, 15 | version: { 16 | type: 'boolean', 17 | alias: 'v' 18 | }, 19 | archive: { 20 | type: 'boolean', 21 | alias: 'a' 22 | }, 23 | restore: { 24 | type: 'boolean', 25 | alias: 'r' 26 | }, 27 | task: { 28 | type: 'boolean', 29 | alias: 't' 30 | }, 31 | note: { 32 | type: 'boolean', 33 | alias: 'n' 34 | }, 35 | delete: { 36 | type: 'boolean', 37 | alias: 'd' 38 | }, 39 | check: { 40 | type: 'boolean', 41 | alias: 'c' 42 | }, 43 | begin: { 44 | type: 'boolean', 45 | alias: 'b' 46 | }, 47 | star: { 48 | type: 'boolean', 49 | alias: 's' 50 | }, 51 | copy: { 52 | type: 'boolean', 53 | alias: 'y' 54 | }, 55 | timeline: { 56 | type: 'boolean', 57 | alias: 'i' 58 | }, 59 | priority: { 60 | type: 'boolean', 61 | alias: 'p' 62 | }, 63 | find: { 64 | type: 'boolean', 65 | alias: 'f' 66 | }, 67 | list: { 68 | type: 'boolean', 69 | alias: 'l' 70 | }, 71 | edit: { 72 | type: 'boolean', 73 | alias: 'e' 74 | }, 75 | move: { 76 | type: 'boolean', 77 | alias: 'm' 78 | }, 79 | clear: { 80 | type: 'boolean' 81 | } 82 | } 83 | }); 84 | 85 | updateNotifier({pkg}).notify(); 86 | 87 | taskbook(cli.input, cli.flags); 88 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at klaussinani@gmail.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing to Taskbook 2 | 3 | Thank you for taking the time to contribute to Taskbook! 4 | 5 | Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. 6 | 7 | ## How to contribute 8 | 9 | ### Improve documentation 10 | 11 | Typo corrections, error fixes, better explanations, more examples etc. Open an issue regarding anything that you think it could be improved! You can use the [`docs` label](https://github.com/klaussinani/taskbook/labels/docs) to find out what others have suggested! 12 | 13 | ### Improve issues 14 | 15 | Sometimes reported issues lack information, are not reproducible, or are even plain invalid. Help us out to make them easier to resolve. Handling issues takes a lot of time that we could rather spend on fixing bugs and adding features. 16 | 17 | ### Give feedback on issues 18 | 19 | We're always looking for more opinions on discussions in the issue tracker. It's a good opportunity to influence the future direction of the project. 20 | 21 | The [`question` label](https://github.com/klaussinani/taskbook/labels/question) is a good place to find ongoing discussions. 22 | 23 | ### Write code 24 | 25 | You can use issue labels to discover issues you could help us out with! 26 | 27 | - [`feature request` issues](https://github.com/klaussinani/taskbook/labels/feature%20request) are features we are open to including 28 | - [`bug` issues](https://github.com/klaussinani/taskbook/labels/bug) are known bugs we would like to fix 29 | - [`future` issues](https://github.com/klaussinani/taskbook/labels/future) are those that we'd like to get to, but not anytime soon. Please check before working on these since we may not yet want to take on the burden of supporting those features 30 | - on the [`help wanted`](https://github.com/klaussinani/taskbook/labels/help%20wanted) label you can always find something exciting going on 31 | 32 | You may find an issue is assigned, or has the [`assigned` label](https://github.com/klaussinani/taskbook/labels/assigned). Please double-check before starting on this issue because somebody else is likely already working on it 33 | 34 | ### Say hi 35 | 36 | Come over and say hi anytime you feel like on [Gitter](https://gitter.im/klaussinani/taskbook). 37 | 38 | ### Translating Documentation 39 | 40 | #### Create a Translation 41 | 42 | - Check the [`index`](https://github.com/klaussinani/taskbook/tree/master/docs/readme.md) file to ensure that the document is not already translated in your target language. 43 | - Add the name of the language to the document as an extension, e.g: `readme.JP.md` 44 | - Place the translated document inside the [`docs`](https://github.com/klaussinani/taskbook/tree/master/docs) directory. 45 | - Add your github profile and the translated document to the [`index`](https://github.com/klaussinani/taskbook/tree/master/docs/readme.md) file. 46 | - Create a Pull Request including the language in the title, e.g: `Readme: Japanese Translation` 47 | 48 | #### Improve a Translation 49 | 50 | - Include your github profile next to the translation you improved at the [`index`](https://github.com/klaussinani/taskbook/tree/master/docs/readme.md) file. 51 | - Create a Pull Request that delivers the improvements and include the language in the title, e.g: `Readme: Improvements for the Japanese Translation` 52 | 53 | ### Submitting an issue 54 | 55 | - Search the issue tracker before opening an issue 56 | - Ensure you're using the latest version of Taskbook 57 | - Use a descriptive title 58 | - Include as much information as possible; 59 | - Steps to reproduce the issue 60 | - Error message 61 | - Taskbook version 62 | - Operating system **etc** 63 | 64 | ### Submitting a pull request 65 | 66 | - Non-trivial changes are often best discussed in an issue first, to prevent you from doing unnecessary work 67 | - Try making the pull request from a [topic branch](https://github.com/dchelimsky/rspec/wiki/Topic-Branches) if it is of crucial importance 68 | - Use a descriptive title for the pull request and commits 69 | - You might be asked to do changes to your pull request, you can do that by just [updating the existing one](https://github.com/RichardLitt/docs/blob/master/amending-a-commit-guide.md) 70 | 71 | > Inspired by project [AVA](https://github.com/avajs/ava/blob/master/contributing.md)'s contributing.md 72 | -------------------------------------------------------------------------------- /docs/readme.BG.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | Задачи, табла & бележки за командния ред 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Описание 20 | 21 | Чрез използване на прост и минимален синтаксис на употреба, който изисква линеен път на обучение, taskbook Ви позволява ефективно да управлявате вашите задачи и бележки сред множество табла, в терминалната среда. Цялата информация бива автоматично записана в хранилището, с цел да предотврати повреди, и никога не бива споделено с никого или други. Изтритите елементи биват автоматично архивирани и могат да бъдат инспектирани или възстановени във всеки един момент. 22 | 23 | Прочетете този документ на: 24 | [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md), [日本語](https://github.com/klaussinani/taskbook/blob/master/docs/readme.JP.md), [한국어](https://github.com/klaussinani/taskbook/blob/master/docs/readme.KR.md), [Spanish](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ES.md). 25 | 26 | Вие вече можете да подкрепите етапа на разработка чрез [GitHub Sponsors](https://github.com/sponsors/klaussinani). 27 | 28 | Посетете [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) за да узнаете повече как да преведете този документ на повече езици. 29 | 30 | Посетете [Gitter](https://gitter.im/klaussinani/taskbook) или [Twitter](https://twitter.com/klaussinani) за да споделите вашите идеи за този проект. 31 | 32 | ## Акценти 33 | 34 | - Организирай задания & бележки към табла 35 | - Изгледи Табла & времева линия 36 | - Механизми за Приоритет & любими 37 | - Търси & филтрирай елементи 38 | - Архивирай & възстанови изтрити елементи 39 | - Лек & бърз 40 | - Данните биват атомично записани за съхранение 41 | - Персонални местоположения за съхранение 42 | - Изглед Прогрес 43 | - Елементарен & минимален синтаксис за употреба 44 | - Обновяване на известията 45 | - Конфигуриране чрез `~/.taskbook.json` 46 | - Данните се съхраняват в JSON файл на адрес `~/.taskbook/storage` 47 | 48 | Вижте акценти в [taskbook board](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png). 49 | 50 | ## Съдържание 51 | 52 | - [Описание](#описание) 53 | - [Акценти](#акценти) 54 | - [Инсталиране](#инсталиране) 55 | - [Употреба](#употреба) 56 | - [Изгледи](#изгледи) 57 | - [Конфигурация](#конфигурация) 58 | - [Ръководство за полети](#ръководство-полети) 59 | - [Разработка](#разработка) 60 | - [Свързани](#свързани) 61 | - [Отбор](#отбор) 62 | - [Лиценз](#лиценз) 63 | 64 | ## Инсталиране 65 | 66 | ### Yarn 67 | 68 | ```bash 69 | yarn global add taskbook 70 | ``` 71 | 72 | ### NPM 73 | 74 | ```bash 75 | npm install --global taskbook 76 | ``` 77 | 78 | ### Snapcraft 79 | 80 | ```bash 81 | snap install taskbook 82 | snap alias taskbook tb # set alias 83 | ``` 84 | 85 | **Note:** Поради специфичната природа на снап пакетите, съхраняваните & конфигурационни данни ще бъдат записвани под [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) променлива вместо общата `$HOME` такава. 86 | 87 | ## Употреба 88 | 89 | ``` 90 | $ tb --help 91 | 92 | Usage 93 | $ tb [ ...] 94 | 95 | Опции 96 | none Покажи Изглед табло 97 | --archive, -a Покажи архивирани елементи 98 | --begin, -b Старт/пауза задача 99 | --check, -c Маркирай/Де-маркирай задачи 100 | --clear Изтрий всички маркирани елементи 101 | --copy, -y Копирай описание на елемент 102 | --delete, -d Изтрий елемент 103 | --edit, -e Редактирай описание на елемент 104 | --find, -f Търси елементи 105 | --help, -h Покажи помощно съобщение 106 | --list, -l Подреди елементи по атрибути 107 | --move, -m Премести елемент между табла 108 | --note, -n Създай бележка 109 | --priority, -p Обнови приоритет на задача 110 | --restore, -r Възстанови елементи от архива 111 | --star, -s Сложи звезда/махни звезда 112 | --task, -t Създай задача 113 | --timeline, -i Покажи Изглед Времева линия 114 | --version, -v Покажи инсталирана версия 115 | 116 | Примери 117 | $ tb 118 | $ tb --archive 119 | $ tb --begin 2 3 120 | $ tb --check 1 2 121 | $ tb --clear 122 | $ tb --copy 1 2 3 123 | $ tb --delete 4 124 | $ tb --edit @3 Merge PR #42 125 | $ tb --find documentation 126 | $ tb --list pending coding 127 | $ tb --move @1 cooking 128 | $ tb --note @coding Mergesort worse-case O(nlogn) 129 | $ tb --priority @3 2 130 | $ tb --restore 4 131 | $ tb --star 2 132 | $ tb --task @coding @reviews Review PR #42 133 | $ tb --task @coding Improve documentation 134 | $ tb --task Make some buttercream 135 | $ tb --timeline 136 | ``` 137 | 138 | ## Изгледи 139 | 140 | ### Изглед табло 141 | 142 | Извикването на taskbook без каквито и да е аргументи ще покаже всички съхранени елементи, групирани в техните респективни табла. 143 | 144 |
145 | Boards 146 |
147 | 148 | ### Изглед Времева линия 149 | 150 | За да покажете всички елементи във времеви изглед, базирано на тяхната дата на създаване, `--timeline`/`-i` трябва да бъде използван. 151 | 152 |
153 | Timeline View 154 |
155 | 156 | ## Конфигурация 157 | 158 | За да настройте taskbook навигирайте до `~/.taskbook.json` файлът и модифицирайте всеки от атрибутите според предпочитанията ви. За нулиране до стойности по подразбиране, просто изтрийте конфигурационния файл от домашната ви директория. 159 | 160 | Следната илюстрация показва нагледно всички налични опции и респективно техните стойности по подразбиране. 161 | 162 | ```json 163 | { 164 | "taskbookDirectory": "~", 165 | "displayCompleteTasks": true, 166 | "displayProgressOverview": true 167 | } 168 | ``` 169 | 170 | ### В Детайл 171 | 172 | ##### `taskbookDirectory` 173 | 174 | - Type: `String` 175 | - Default: `~` 176 | 177 | Файлов път - системен за инициализиране, напр.: `/home/username/the-cloud` или `~/the-cloud` 178 | 179 | Ако бъде оставено празно, домашната папка `~` ще бъде зададено и настроено на `~/.taskbook/`. 180 | 181 | ##### `displayCompleteTasks` 182 | 183 | - Type: `Boolean` 184 | - Default: `true` 185 | 186 | Покажи изпълнени задачи. 187 | 188 | ##### `displayProgressOverview` 189 | 190 | - Type: `Boolean` 191 | - Default: `true` 192 | 193 | Покажи прогреса под времевата линия и изглед табло. 194 | 195 | ## Изглед за полети 196 | 197 | Следното е малко въведение, съдържащо редица примери как да използвате програмата. 198 | Ако откриете грешка или мислите че определен пример не е достатъчно ясен можете за подадете сигнал за проблем на [issue](https://github.com/klaussinani/taskbook/issues/new/choose) или [pull request](https://github.com/klaussinani/taskbook/compare). 199 | 200 | ### Създай задача 201 | 202 | За създаване на нова задача, ползвай `--task`/`-t` опция с описание следващо веднага след. 203 | 204 | ``` 205 | $ tb -t Improve documentation 206 | ``` 207 | 208 | ### Създай бележка 209 | 210 | За нова бележкар ползвай `--note`/`-n` опция с тяло на бележката веднага след. 211 | 212 | ``` 213 | $ tb -n Mergesort worse-case O(nlogn) 214 | ``` 215 | 216 | ### Създай табло 217 | 218 | Таблата биват автоматично инициализирани при създаване на нова задачи или бележка. За 1 или повече табла, добавете техните имена разделени с префикс `@` символ, в описанието на бъдещата задача за създаване. Като резултат ново създадения елемент ще принадлежи към всички описани табла. По подразбиране ако липсва име на табло, ще получите стандартното; `My Board`. 219 | 220 | ``` 221 | $ tb -t @coding @docs Update contributing guidelines 222 | ``` 223 | 224 | ### Провери задача 225 | 226 | За маркиране на задача като завършена/незавършена, използвай `--check`/`-c` опция последвана от ид на желаната задача. Имайте предвид че опцията ще се обнови до антонима си — статус ‘завършено’, като маркиране на завършена задача ще се преобразува като изчакваща, а тя от своя страна като завършена. Дублиращи се ид се филтрират автоматично. 227 | 228 | ``` 229 | $ tb -c 1 3 230 | ``` 231 | 232 | ### Започни задача 233 | 234 | За отбелязване на задача като започната/на пауза, използвайте `--begin`/`-b` опция последвано от ид на желаните задачи. Функционалността на тази опция е същата като горе-споменатата `--check` option. 235 | 236 | ``` 237 | $ tb -b 2 3 238 | ``` 239 | 240 | ### Сложи звезда 241 | 242 | За отбелязване на един или повече елемента като любим, използвайте `--star`/`-s` опция последвано от ид на желаните задачи. Функционалността на тази опция е същата като горе-споменатата `--check` option. 243 | 244 | ``` 245 | $ tb -s 1 2 3 246 | ``` 247 | 248 | ### Копирай описание на елемент 249 | 250 | За копиране в клипборда използвай `--copy`/`-y` последвана от ид на желаните елемента. Опцията включва също и знакът за нов ред като разделител на всяка двойка описание, което води до изчистен и лесно за прочитане формат при поставяне. 251 | 252 | ``` 253 | $ tb -y 1 2 3 254 | ``` 255 | 256 | ### Покажи табла 257 | 258 | Влагането на taskbook без никакви аргументи ще покаже всички съхранени елементи, групирани в своите табла. 259 | 260 | ``` 261 | $ tb 262 | ``` 263 | 264 | ### Покажи времева линия 265 | 266 | За да видите всички елементи под формата на времеви отрязък, на база дата на създаване, `--timeline`/`-i` опция може да бъде използвана. 267 | 268 | ``` 269 | $ tb -i 270 | ``` 271 | 272 | ### Задай Приоритет 273 | 274 | За задаване на ниво приоритет, прибавете `p:x` в описанието на задачата, където x може да бъде цяло число със стойност `1`, `2` или `3`. Забележете че всички задачи се създават с приоритет нормално - `1`. 275 | 276 | - `1` - Нормален приоритет 277 | - `2` - Среден приоритет 278 | - `3` - Висок приоритет 279 | 280 | ``` 281 | $ tb -t @coding Fix issue `#42` p:3 282 | ``` 283 | 284 | За обновяване на нивото на приоритет на отделна задача след нейното създаване, използвайте `--priority`/`-p` опция заедно с ид на желаната задача, с префикс `@` символ и цяло число със стойност `1`, `2` or `3`. Имайте предвид че реда на поставяне ид на конкретната задача и нивото на приоритет не са от значение. 285 | 286 | ``` 287 | $ tb -p @1 2 288 | ``` 289 | 290 | ### Премести елемент 291 | 292 | За преместване на елемент към един или повече табла, използвайте `--move`/`-m` опция, последвана от ид на желания елемент както и името на борда – дестинация. По подразбиране `My board` може да бъде извикан с ключова дума `myboard`. Редът на ид и името на борда не са от значение. 293 | 294 | ``` 295 | $ tb -m @1 myboard reviews 296 | ``` 297 | 298 | ### Изтриване на елемент 299 | 300 | За изтриване на един или повече елемента, използвайте `--delete`/`-d` опция последвана от ид на желаните елементи. Имайте предвид че изтритите елементи биват архивирани автоматично и могат да бъдат инспектирани или възстановени във всеки един момент. Дублирани елементи се филтрират автоматично. 301 | 302 | ``` 303 | $ tb -d 1 2 304 | ``` 305 | 306 | ### Изтриване на маркирани елементи 307 | 308 | За изтриване/изчистване на завършени задачи наведнъж сред всички табла, използвайте опцията `--clear`. Забележете че всички изтрити задачи се архивират автоматично и могат да бъдат инспектирани или възстановени по-всяко време. За да се избегнат инциденти се използва флаг `--clear` в пълна форма и той няма аналог. 309 | 310 | ``` 311 | $ tb --clear 312 | ``` 313 | 314 | ### Покажи Архив 315 | 316 | За преглед на всички архивирани елементи, използвайте `--archive`/`-a` опция. Моля имайте предвид че всички архивирани елементи се показват в изглед Времева линия, на базата на датата на създаването им. 317 | 318 | ``` 319 | $ tb -a 320 | ``` 321 | 322 | ### Възстанови елементи 323 | 324 | За възстановяване на един или повече елемента, използвайте `--restore`/`-r` опция, последвана от ид на желаните елементи. Моля вземете предвид че всички архивирани елементи могат да бъдат видени при вмъкване на `--archive`/`-a` опция. Дублиращи се ид се филтрират автоматично. 325 | 326 | ``` 327 | $ tb -r 1 2 328 | ``` 329 | 330 | ### Елементи от списъка 331 | 332 | За да видите списъка с елементи, групирани по даден показател, използвайте опция `--list`/`-l` последвана от желаните атрибути. Имената на таблата, заедно с техните детайли се считат за валидни опции. Например за списък с всички елементи които принадлежат на списъка по-подразбиране `myboard` и техните прилежащи задачи, следното може да се използва; 333 | 334 | ``` 335 | $ tb -l myboard pending 336 | ``` 337 | 338 | Предстоящите представляват атрибути по-подразбиране, заедно с техните опции, както следва; 339 | 340 | - `myboard` - Елементи които принадлежат към `My board` 341 | - `task`, `tasks`, `todo` - Елементи, тип задачи. 342 | - `note`, `notes` - Елементи, тип бележки. 343 | - `pending`, `unchecked`, `incomplete` - Елементи, които са тип Изчакващи. 344 | - `progress`, `started`, `begun` - Елементи, представляващи задачи "В процес на". 345 | - `done`, `checked`, `complete` - Елементи, от типа Завършени задачи. 346 | - `star`, `starred` - Елементи с звезда „любими„. 347 | 348 | ### Търси елементи 349 | 350 | За търсене на един или повече елементи, използвайте `--find`/`-f` опция, последвана от вашият низ за търсене. 351 | 352 | ``` 353 | $ tb -f documentation 354 | ``` 355 | 356 | ## Разработка 357 | 358 | За детайли как да помогнете на този проект, моля прочетете [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md). 359 | 360 | - Изберете "Форк" за това хранилище и клонирайте към своята машина. 361 | - Навигирайте към локалното място на съхранение за проекта: `cd taskbook` 362 | - Инсталирайте необходимите зависимости: `npm install` или `yarn install` 363 | - Провери кода за грешки: `npm test` или `yarn test` 364 | 365 | ## Свързани 366 | 367 | - [signale](https://github.com/klaussinani/signale) - Силно конфигурируема помощна програма за регистриране 368 | - [qoa](https://github.com/klaussinani/qoa) - Минимални интерактивни подкани тип команден прозорец 369 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Дълбочинно синьо-океанска тема с терминал Хипер 370 | 371 | ## Отбор 372 | 373 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 374 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 375 | 376 | ## Лиценз 377 | 378 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 379 | -------------------------------------------------------------------------------- /docs/readme.ES.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | Tareas, tableros y notas para el mundo de líneas de comandos 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Descripción 20 | 21 | Al utilizar una sintaxis mínima y de uso simple —que requiere una curva de aprendizaje plana—, taskbook te permite administrar, de manera efectiva, tus tareas y notas en múltiples tableros desde tu terminal. Todos los datos se escriben en el almacenamiento, de forma atómica, para prevenir la corrupción de los mismos; y nunca son compartidos con nadie ni con nada. Los elementos eliminados se archivan automáticamente y se pueden inspeccionar o restaurar en cualquier momento. 22 | 23 | Lee este documento en: 24 | [English](https://github.com/klaussinani/taskbook/blob/master/docs/readme.md), [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md), [日本語](https://github.com/klaussinani/taskbook/blob/master/docs/readme.JP.md), [한국어](https://github.com/klaussinani/taskbook/blob/master/docs/readme.KR.md). 25 | 26 | Ahora puedes apoyar el proceso de desarrollo a través de [GitHub Sponsors](https://github.com/sponsors/klaussinani). 27 | 28 | Visita la [guía de contribuciones](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) para obtener más información sobre cómo traducir este documento a más idiomas. 29 | 30 | Ven a [Gitter](https://gitter.im/klaussinani/taskbook) o [Twitter](https://twitter.com/klaussinani) para compartir tus pensamientos sobre el proyecto. 31 | 32 | ## Funciones destacadas 33 | 34 | - Organiza tareas y notas en tableros 35 | - Vistas de tablero y línea de tiempo 36 | - Mecanismos de prioridad y favoritos 37 | - Busca y filtra elementos 38 | - Archiva y restaura elementos eliminados 39 | - Ligero y rápido 40 | - Datos escritos de forma atómica en el almacenamiento 41 | - Ubicación personalizada de almacenamiento 42 | - Resumen de progreso 43 | - Sintaxis de uso simple y mínimo 44 | - Notificación de actualizaciones 45 | - Configurable mediante `~/.taskbook.json` 46 | - Datos almacenados en un archivo JSON en `~/.taskbook/storage` 47 | 48 | Mira las funciones destacadas en un [tablero de taskbook](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png). 49 | 50 | ## Contenido 51 | 52 | - [Descripción](#descripción) 53 | - [Funciones destacadas](#funciones-destacadas) 54 | - [Contenido](#contenido) 55 | - [Instalación](#instalación) 56 | - [Yarn](#yarn) 57 | - [NPM](#npm) 58 | - [Snapcraft](#snapcraft) 59 | - [Uso](#uso) 60 | - [Vistas](#vistas) 61 | - [Vista de tablero](#vista-de-tablero) 62 | - [Vista de línea de tiempo](#vista-de-línea-de-tiempo) 63 | - [Configuración](#configuración) 64 | - [Configuración detallada](#configuración-detallada) 65 | - [`taskbookDirectory`](#taskbookdirectory) 66 | - [`displayCompleteTasks`](#displaycompletetasks) 67 | - [`displayProgressOverview`](#displayprogressoverview) 68 | - [Manual de vuelo](#manual-de-vuelo) 69 | - [Crear tarea](#crear-tarea) 70 | - [Crear nota](#crear-nota) 71 | - [Crear tablero](#crear-tablero) 72 | - [Marcar tarea](#marcar-tarea) 73 | - [Iniciar tarea](#iniciar-tarea) 74 | - [Marcar elemento como favorito](#marcar-elemento-como-favorito) 75 | - [Copiar descripción de un elemento](#copiar-descripción-de-un-elemento) 76 | - [Mostrar tableros](#mostrar-tableros) 77 | - [Mostrar línea de tiempo](#mostrar-línea-de-tiempo) 78 | - [Establecer prioridad](#establecer-prioridad) 79 | - [Mover elemento](#mover-elemento) 80 | - [Eliminar elemento](#eliminar-elemento) 81 | - [Eliminar tareas marcadas](#eliminar-tareas-marcadas) 82 | - [Ver elementos archivados](#ver-elementos-archivados) 83 | - [Restaurar elementos archivados](#restaurar-elementos-archivados) 84 | - [Listar elementos](#listar-elementos) 85 | - [Artículos de búsqueda](#artículos-de-búsqueda) 86 | - [Desarrollo](#desarrollo) 87 | - [Relacionado](#relacionado) 88 | - [Equipo](#equipo) 89 | - [Licencia](#licencia) 90 | 91 | ## Instalación 92 | 93 | ### Yarn 94 | 95 | ```bash 96 | yarn global add taskbook 97 | ``` 98 | 99 | ### NPM 100 | 101 | ```bash 102 | npm install --global taskbook 103 | ``` 104 | 105 | ### Snapcraft 106 | 107 | ```bash 108 | snap install taskbook 109 | snap alias taskbook tb # set alias 110 | ``` 111 | 112 | **Nota:** Debido a la naturaleza estrictamente confinada de _snap_, tanto los archivos de almacenamiento como los de configuración se guardarán en la variable de entorno [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env), en lugar de la genérica (`$HOME`). 113 | 114 | ## Uso 115 | 116 | ``` 117 | $ tb --help 118 | 119 | Usage 120 | $ tb [ ...] 121 | 122 | Options 123 | ninguna Mostrar vista de tablero 124 | --archive, -a Mostrar elementos archivados 125 | --begin, -b Iniciar/pausar tarea 126 | --check, -c Marcar/desmarcar tarea 127 | --clear Eliminar todos los elementos marcados 128 | --copy, -y Copiar descripción de una tarea 129 | --delete, -d Eliminar tarea 130 | --edit, -e Editar descripción de una tarea 131 | --find, -f Buscar tareas 132 | --help, -h Mostrar mensaje de ayuda 133 | --list, -l Listar tareas por atributos 134 | --move, -m Mover tarea entre tableros 135 | --note, -n Crear nota 136 | --priority, -p Actualizar la prioridad de una tarea 137 | --restore, -r Restaurar elementos archivados 138 | --star, -s Agregar/remover tarea a/de favoritos 139 | --task, -t Crear tarea 140 | --timeline, -i Mostrar vista de línea de tiempo 141 | --version, -v Mostrar versión instalada 142 | 143 | Examples 144 | $ tb 145 | $ tb --archive 146 | $ tb --begin 2 3 147 | $ tb --check 1 2 148 | $ tb --clear 149 | $ tb --copy 1 2 3 150 | $ tb --delete 4 151 | $ tb --edit @3 Merge PR #42 152 | $ tb --find documentation 153 | $ tb --list pending coding 154 | $ tb --move @1 cooking 155 | $ tb --note @coding Mergesort worse-case O(nlogn) 156 | $ tb --priority @3 2 157 | $ tb --restore 4 158 | $ tb --star 2 159 | $ tb --task @coding @reviews Review PR #42 160 | $ tb --task @coding Improve documentation 161 | $ tb --task Make some buttercream 162 | $ tb --timeline 163 | ``` 164 | 165 | ## Vistas 166 | 167 | ### Vista de tablero 168 | 169 | Invocar taskbook sin ninguna opción mostrará todos los elementos guardados agrupados en sus respectivos tableros. 170 | 171 |
172 | Boards 173 |
174 | 175 | ### Vista de línea de tiempo 176 | 177 | Para mostrar todos los elementos en una vista de línea de tiempo, según su fecha de creación, puedes usar la opción `--timeline`/`-i`. 178 | 179 |
180 | Timeline View 181 |
182 | 183 | ## Configuración 184 | 185 | Para configurar taskbook, localiza el archivo `~/.taskbook.json` y modifica cualquiera de las opciones acorde a tus preferencias. Para restablecer los valores predeterminados, simplemente elimina el archivo de configuración de tu directorio raíz. 186 | 187 | A continuación, se ilustran todas las opciones disponibles con sus correspondientes valores predeterminados. 188 | 189 | ```json 190 | { 191 | "taskbookDirectory": "~", 192 | "displayCompleteTasks": true, 193 | "displayProgressOverview": true 194 | } 195 | ``` 196 | 197 | ### Configuración detallada 198 | 199 | ##### `taskbookDirectory` 200 | 201 | - Tipo: `String` 202 | - Valor predeterminado: `~` 203 | 204 | Ruta del sistema de archivos donde se inicializará el almacenamiento, por ejemplo: `/home/username/the-cloud` o `~/the-cloud` 205 | 206 | Si no se define, se utilizará el directorio raíz `~` y taskbook se configurará en `~/.taskbook/`. 207 | 208 | ##### `displayCompleteTasks` 209 | 210 | - Tipo: `Boolean` 211 | - Valor predeterminado: `true` 212 | 213 | Muestra las tareas marcadas como completadas. 214 | 215 | ##### `displayProgressOverview` 216 | 217 | - Tipo: `Boolean` 218 | - Valor predeterminado: `true` 219 | 220 | Muestra una descripción general del progreso debajo de las vistas de línea de tiempo y de tablero. 221 | 222 | ## Manual de vuelo 223 | 224 | El siguiente es un tutorial sencillo, compuesto de varios ejemplos sobre cómo usar taskbook. 225 | En caso de que encuentres un error o consideres que un ejemplo no es lo suficientemente claro y debería mejorarse, no dudes en abrir un [_issue_](https://github.com/klaussinani/taskbook/issues/new/choose) o [_pull request_](https://github.com/klaussinani/taskbook/compare). 226 | 227 | ### Crear tarea 228 | 229 | Para crear una nueva tarea, usa la opción `--task`/`-t` seguida de la descripción de la tarea. 230 | 231 | ```bash 232 | $ tb -t Mejorar documentación 233 | ``` 234 | 235 | ### Crear nota 236 | 237 | Para crear una nueva nota, usa la opción `--note`/`-n` seguida del contenido de la nota. 238 | 239 | ```bash 240 | $ tb -n Mergesort worse-case O(nlogn) 241 | ``` 242 | 243 | ### Crear tablero 244 | 245 | Los tableros se inicializan automáticamente al crear una nueva tarea o nota. Para crear uno o más tableros, incluye su(s) nombre(s), precedido(s) por el símbolo `@`, en la descripción del elemento que está a punto de crearse. Como resultado, el elemento recién creado pertenecerá a todos los tableros referenciados. De forma predeterminada, los elementos que no incluyen el nombre de ningún tablero en su descripción, se agregan automáticamente al tablero de uso general: `My Board`. 246 | 247 | ```bash 248 | $ tb -t @coding @docs Actualizar las guías de contribución 249 | ``` 250 | 251 | ### Marcar tarea 252 | 253 | Para marcar una tarea como completa/incompleta, usa la opción `--check`/`-c` seguida de los identificadores de las tareas a modificar. Ten en cuenta que esta opción actualizará el estado `complete` de las tareas dadas a su valor opuesto, por lo que al usar esta opción con una tarea completa, esta se marcará como pendiente y una tarea pendiente se marcará como completa. Los IDs duplicados se filtran automáticamente. 254 | 255 | ```bash 256 | $ tb -c 1 3 257 | ``` 258 | 259 | ### Iniciar tarea 260 | 261 | Para marcar una tarea como iniciada/pausada, usa la opción `--begin`/`-b` seguida de los identificadores de las tareas a marcar. La funcionalidad de esta opción es la misma que la de la opción `--check` descrita anteriormente. 262 | 263 | ```bash 264 | $ tb -b 2 3 265 | ``` 266 | 267 | ### Marcar elemento como favorito 268 | 269 | Para marcar uno o más elementos como favoritos, usa la opción `--star`/`-s` seguida de los identificadores de los elementos a marcar. La funcionalidad de esta opción es la misma que la de la opción `--check` descrita anteriormente. 270 | 271 | ```bash 272 | $ tb -s 1 2 3 273 | ``` 274 | 275 | ### Copiar descripción de un elemento 276 | 277 | Para copiar al portapapeles de tu sistema la descripción de uno o más elementos, utiliza la opción `--copy`/`-y`, seguida de los identificadores de los elementos a copiar. Ten en cuenta que esta opción también incluirá el caracter de nueva línea como separador de cada par de descripciones copiadas adyacentes, lo que dará como resultado una lista clara y legible de oraciones al pegar. 278 | 279 | ```bash 280 | $ tb -y 1 2 3 281 | ``` 282 | 283 | ### Mostrar tableros 284 | 285 | Al invocar taskbook sin ninguna opción, se mostrarán todos los elementos guardados agrupados en sus respectivos tableros. 286 | 287 | ```bash 288 | $ tb 289 | ``` 290 | 291 | ### Mostrar línea de tiempo 292 | 293 | Para mostrar todos los elementos en una vista de línea de tiempo, según su fecha de creación, puedes usar la opción `--timeline`/`-i`. 294 | 295 | ```bash 296 | $ tb -i 297 | ``` 298 | 299 | ### Establecer prioridad 300 | 301 | Para establecer el nivel de prioridad de una tarea durante su creación, incluye la sintaxis `p:x` en la descripción de la tarea, donde `x` puede ser un número entero de valor `1`, `2` o `3`. Ten en cuenta que todas las tareas se crean de forma predeterminada con una prioridad normal, es decir, `1`. 302 | 303 | - `1` - Prioridad normal 304 | - `2` - Prioridad media 305 | - `3` - Prioridad alta 306 | 307 | ```bash 308 | $ tb -t @coding Fix issue `#42` p:3 309 | ``` 310 | 311 | Para actualizar la prioridad de una tarea específica después de su creación, usa la opción `--priority`/`-p` junto con el ID de la tarea a actualizar —precedido por el símbolo `@`—, seguida de un número entero de valor `1` , `2` o `3` (como nueva prioridad). Ten en cuenta que el orden en el que se colocan el ID de la tarea a editar y el nuevo nivel de prioridad no es significativo. 312 | 313 | ```bash 314 | $ tb -p @1 2 315 | ``` 316 | 317 | ### Mover elemento 318 | 319 | Para mover una elemento a uno o más tableros, usa la opción `--move`/`-m`, junto con el ID del elemento a mover —precedido por el símbolo `@`—, y el nombre de los tableros de destino. Se puede acceder al tablero predeterminado, `My board`, a través de la palabra clave `myboard`. El orden en el que se colocan el ID del elemento a mover y el(los) nombre(s) de l(os) tablero(s) no es significativo. 320 | 321 | ```bash 322 | $ tb -m @1 myboard reviews 323 | ``` 324 | 325 | ### Eliminar elemento 326 | 327 | Para eliminar uno o más elementos, usa la opción `--delete`/`-d`, seguida de los identificadores de los elementos a eliminar. Ten en cuenta que los elementos eliminados se archivan automáticamente y se pueden inspeccionar o restaurar en cualquier momento. Los IDs duplicados se filtran automáticamente. 328 | 329 | ```bash 330 | $ tb -d 1 2 331 | ``` 332 | 333 | ### Eliminar tareas marcadas 334 | 335 | Para eliminar/borrar todas las tareas completas —a la vez— de todos los tableros, usa la opción `--clear`. Ten en cuenta que todas las tareas eliminadas se archivan automáticamente y se pueden inspeccionar o restaurar en cualquier momento. Con el fin de prevenir cualquier posible uso accidental, no existe un alias más corto para la opción `--clear`. 336 | 337 | ```bash 338 | $ tb --clear 339 | ``` 340 | 341 | ### Ver elementos archivados 342 | 343 | Para ver todos los elementos archivados, usa la opción `--archive`/`-a`. Ten en cuenta que todos los elementos archivados se muestran en la vista de línea de tiempo, según su fecha de creación. 344 | 345 | ```bash 346 | $ tb -a 347 | ``` 348 | 349 | ### Restaurar elementos archivados 350 | 351 | Para restaurar uno o más elementos, usa la opción `--restore`/`-r` seguida de los identificadores de los elementos a restaurar. Ten en cuenta que los IDs de todos los elementos archivados se pueden ver al invocar la opción `--archive`/`-a`. Los IDs duplicados se filtran automáticamente. 352 | 353 | ```bash 354 | $ tb -r 1 2 355 | ``` 356 | 357 | ### Listar elementos 358 | 359 | Para listar un grupo de elementos donde cada uno cumple con un conjunto específico de atributos, usa la opción `--list`/`-l` seguida de los atributos requeridos. Los nombres de los tableros junto con los estados de los elementos a listar, se consideran atributos válidos. Por ejemplo, para listar todos los elementos que pertenecen al tablero predeterminado (`myboard`) y que son tareas pendientes, se podría usar lo siguiente: 360 | 361 | ```bash 362 | $ tb -l myboard pending 363 | ``` 364 | 365 | Los atributos admitidos por defecto, junto con sus respectivos alias, son los siguientes 366 | 367 | - `myboard` - Tareas que pertencen a `My board`. 368 | - `task`, `tasks`, `todo` - Elementos que son tareas. 369 | - `note`, `notes` - Elementos que son notas. 370 | - `pending`, `unchecked`, `incomplete` - Elementos que son tareas pendientes. 371 | - `progress`, `started`, `begun` - Elementos que son tareas en progreso. 372 | - `done`, `checked`, `complete` - Elementos que son tareas completadas. 373 | - `star`, `starred` - Elementos favoritos. 374 | 375 | ### Artículos de búsqueda 376 | 377 | Para buscar uno o más elementos, usa la opción `--find`/`-f`, seguida de tus términos de búsqueda. 378 | 379 | ```bash 380 | $ tb -f documentation 381 | ``` 382 | 383 | ## Desarrollo 384 | 385 | Para más información sobre cómo contribuir al proyecto, lee las [guías de contribución](https://github.com/klaussinani/taskbook/blob/master/contributing.md). 386 | 387 | - Haz un _fork_ del repositorio y clónalo en tu computadora 388 | - Navega a tu _fork_ local: `cd taskbook` 389 | - Instala las dependencias del proyecto: `npm install` o `yarn install` 390 | - Escanea (_lint_) el código en busca de errores: `npm test` o `yarn test` 391 | 392 | ## Relacionado 393 | 394 | - [signale](https://github.com/klaussinani/signale) - Utilidad de registro altamente configurable 395 | - [qoa](https://github.com/klaussinani/qoa) - Indicaciones de línea de comandos interactivas y minimalista 396 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Deep oceanic blue, tema para el terminal Hyper 397 | 398 | ## Equipo 399 | 400 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 401 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 402 | 403 | ## Licencia 404 | 405 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 406 | -------------------------------------------------------------------------------- /docs/readme.FR.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | 📓 Tâches, tableaux et notes utilisables dans un invité de commande. 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Présentation 20 | 21 | En utilisant une syntaxe simple et minimaliste, rendant son apprentissage plus efficace, taskbook vous permet de gérer efficacement vos tâches et vos notes via plusieurs tableaux dans le terminal. Toutes les données sont automatiquement écrites dans un fichier de stockage afin d'éviter toutes corruptions de celles-ci. Elles ne sont jamais partagées à qui que ce soit. Toutes les tâches et notes sont automatiquement archivées et peuvent être consultées ou restaurées à tout moment. 22 | 23 | Lire la documentation en : [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md). 24 | 25 | Vous pouvez visiter le [guide de contribution](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) pour en savoir plus sur la traduction de ce document dans d'autres langages. 26 | 27 | Venez sur [Gitter](https://gitter.im/klaussinani/taskbook) ou [Twitter](https://twitter.com/klaussinani) pour partager vos idées sur le projet. 28 | 29 | ## Points forts 30 | 31 | - Organiser des tâches & des notes sur des tableaux 32 | - Vues tableau & frise chronologique 33 | - Fonctionnalités de priorité & de favori 34 | - Recherche & filtre de tâches et de notes 35 | - Archivage & restauration des tâches et des notes supprimées 36 | - Léger & rapide 37 | - Données écrites automatiquement dans l'emplacement de stockage 38 | - Emplacement de stockage personnalisable 39 | - Vue d'ensemble sur les progrés 40 | - Syntaxe simple & minimaliste 41 | - Notifications de mise à jour 42 | - Configurable via `~/.taskbook.json` 43 | - Données stockées dans le fichier JSON `~/.taskbook/storage` 44 | 45 | Image des points forts dans [tableau taskbook](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png) en anglais. 46 | 47 | ## Sommaire 48 | 49 | - [Présentation](#présentation) 50 | - [Points forts](#points-forts) 51 | - [Installation](#installation) 52 | - [Utilisation](#utilisation) 53 | - [Vues](#vues) 54 | - [Configuration](#configuration) 55 | - [Manuel de vol](#manuel-de-vol) 56 | - [Développement](#développement) 57 | - [Applications associées](#applications-associées) 58 | - [Équipe](#équipe) 59 | - [License](#license) 60 | 61 | ## Installation 62 | 63 | ### NPM 64 | 65 | ```bash 66 | npm install --global taskbook 67 | ``` 68 | 69 | ### Snapcraft 70 | 71 | ```bash 72 | snap install taskbook 73 | snap alias taskbook tb # set alias 74 | ``` 75 | 76 | **Note:** À cause du confinement naturel de snap, les fichiers de stockage et de configuration seront sauvegardés sous la variable d'environnement [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) à la place du `$HOME` habituel. 77 | 78 | ## Utilisation 79 | 80 | ``` 81 | $ tb --help 82 | 83 | Usage 84 | $ tb [ ...] 85 | 86 | Options 87 | none Affiche la vue tableau 88 | --task, -t Créé une tâche 89 | --note, -n Créé une note 90 | --timeline, -i Affiche la vue frise chronologique 91 | --delete, -d Supprime une tâche ou une note 92 | --check, -c Coche/décoche une tâche 93 | --star, -s Ajoute aux favoris/Supprime des favoris une tâche ou une note 94 | --copy, -y Copie la description d'une tâche ou d'une note 95 | --list, -l Liste les tâches et les notes par attributs 96 | --find, -f Cherche une tâche ou une note 97 | --edit, -e Modifie la description d'une tâche ou d'une note 98 | --move, -m Déplace une tâche ou une note entre des tableaux 99 | --priority, -p Met à jour la priorité d'une tâche 100 | --archive, -a Affiche les tâches et les notes qui sont archivées 101 | --restore, -r Restaure les tâches et notes qui sont dans l'archive 102 | --clear Supprime toutes les tâches et notes cochées 103 | --help, -h Affiche le message d'aide 104 | --version, -v Affiche la version de taskbook 105 | 106 | Examples 107 | $ tb 108 | $ tb --task Preparer de la creme glacee 109 | $ tb --task @coding Ameliorer la documentation 110 | $ tb --task @coding @reviews Revue PR #42 111 | $ tb --note @coding Trie avec fusion est dans le pire cas de complexite O(nlogn) 112 | $ tb --check 1 2 113 | $ tb --delete 4 114 | $ tb --star 2 115 | $ tb --copy 1 2 3 116 | $ tb --priority @3 2 117 | $ tb --timeline 118 | $ tb --edit @3 Fusionner PR #42 119 | $ tb --move @1 cuisinner 120 | $ tb --find documentation 121 | $ tb --list pending coding 122 | $ tb --archive 123 | $ tb --restore 4 124 | $ tb --clear 125 | ``` 126 | 127 | ## Vues 128 | 129 | ### Vue Tableau 130 | 131 | Appeler taskbook sans option affichera toutes les tâches et notes sauvegardées dans leurs tableaux respectifs. 132 | 133 |
134 | Boards 135 |
136 | 137 | ### Vue Frise Chronologique 138 | 139 | Afin d'afficher toutes les tâches et notes dans la vue Frise Chronologique, en se basant sur leurs date de création, utilisez l'option `--timeline`/`-i`. 140 | 141 |
142 | Timeline View 143 |
144 | 145 | ## Configuration 146 | 147 | Pour configurer taskbook, il faut se rendre dans le fichier `~/.taskbook.json` et modifier les options afin de s'adapater au mieux à vos préférences. Pour restaurer la configuration par défaut, il suffit de supprimer le fichier de configuration de votre répertoire personnel (home). 148 | 149 | Le JSON suivant illustre l'ensemble des options existantes avec leurs valeurs par défaut respectives. 150 | 151 | ```json 152 | { 153 | "taskbookDirectory": "~", 154 | "displayCompleteTasks": true, 155 | "displayProgressOverview": true 156 | } 157 | ``` 158 | 159 | ### En détail 160 | 161 | ##### `taskbookDirectory` 162 | 163 | - Type: `String` 164 | - Par défaut: `~` 165 | 166 | Le chemin dans l'arborescence des fichiers où le stockage sera initialisé sera `/home/username/the-cloud` ou `~/the-cloud` 167 | 168 | S'il n'est pas défini, le répertoire personnel (home) `~` sera utilisé et taskbook sera installé sous `~/.taskbook/`. 169 | 170 | ##### `displayCompleteTasks` 171 | 172 | - Type: `Boolean` 173 | - Par défaut: `true` 174 | 175 | Affiche les tâches qui sont marquées comme completées. 176 | 177 | ##### `displayProgressOverview` 178 | 179 | - Type: `Boolean` 180 | - Par défaut: `true` 181 | 182 | Affiche la vue d'ensemble sur la progression en dessous des vues de frise chronologiques et de tableaux. 183 | 184 | ## Manuel de vol 185 | 186 | Ce qui va suivre est un guide d'exemple permettant de mieux comprendre comment utiliser taskbook. 187 | Dans le cas où vous auriez remarqué une erreur ou que vous pensez que les exemples ne sont pas assez clair, qu'ils devraient être améliorés, alors n'hésitez pas à ouvrir une [issue](https://github.com/klaussinani/taskbook/issues/new/choose) ou une [pull request](https://github.com/klaussinani/taskbook/compare). 188 | 189 | ### Créer une tâche 190 | 191 | Pour créer une nouvelle tâche, utilisez l'option `--task`/`-t` suivi de la description de la tâche. 192 | 193 | ``` 194 | $ tb -t Ameliorer la documentation 195 | ``` 196 | 197 | ### Créer une note 198 | 199 | Pour créer une nouvelle note, utilisez l'option `--note`/`-n` suivi du contenu de la note. 200 | 201 | ``` 202 | $ tb -n Tri par fusion pire cas O(nlogn) 203 | ``` 204 | 205 | ### Créer un tableau 206 | 207 | Les tableaux sont automatiquement initialisés lorsque l'on créé une nouvelle tâche ou une nouvelle note. Pour créer un ou plusieurs tableaux, ajoutez leurs noms préfixé du symbole `@`, dans la description de la tâche ou de la note qui va être créée. Par conséquent, la nouvelle tâche ou la nouvelle note appartiendra à l'ensemble des tableaux mentionnés. Par défaut, les tâches ou les notes qui ne possèdent pas de tableau dans leurs descriptions sont automatiquements ajoutés au tableau général `My Board`. 208 | 209 | ``` 210 | $ tb -t @coding @docs Mettre à jour le guide de contribution 211 | ``` 212 | 213 | ### Valider une tâche 214 | 215 | Pour passer une tâche à complété ou non complété, utilisez l'option `--check`/`-c` suivi par les identifiants des tâches sélectionnées. Il est à noter que l'option va inverser le statut actuel de complétion de la tâche, ainsi une tâche incomplète sera passé à complète et une tâche complète à incomplète. S'il existe des duplicatas d'identifiants, ils seront automatiquement filtrés. 216 | 217 | ``` 218 | $ tb -c 1 3 219 | ``` 220 | 221 | ### Ajouter une tâche ou une note aux favoris 222 | 223 | Pour ajouter une ou plusieurs tâches/notes aux favoris, utilisez l'option `--star`/`-s` suivi des identifiants des tâches/notes sélectionnées. Les fonctionnalités de cette option sont les mêmes que celles décrites au dessus pour l'option `--check`. 224 | 225 | ``` 226 | $ tb -s 1 2 3 227 | ``` 228 | 229 | ### Copier la description d'une tâche ou d'une note 230 | 231 | Afin de copier dans le presse-papier de votre système d'une ou plusieurs tâches et/ou notes, utilisez l'option `--copy`/`-y` suivi des identifiants des tâches/notes. Il est important de noter que l'option inclut aussi les caractères de retour à la ligne comme séparateurs pour chaque paire de description adjacente, créant ainsi une pile de phrases claire et lisible au moment de coller. 232 | 233 | ``` 234 | $ tb -y 1 2 3 235 | ``` 236 | 237 | ### Afficher les tableaux 238 | 239 | Appeler la commande taskbook sans option affichera toutes les tâches et notes sauvegardés dans leurs tableaux respectifs. 240 | 241 | ``` 242 | $ tb 243 | ``` 244 | 245 | ### Afficher la Frise Chronologique 246 | 247 | Pour afficher toutes les tâches et notes de la vue frise chronologique, en se basant sur leurs dates de création, il faut utiliser l'option `--timeline`/`-i`. 248 | 249 | ``` 250 | $ tb -i 251 | ``` 252 | 253 | ### Choisir un niveau de priorité 254 | 255 | Afin de donner un niveau de priorité à une tâche lors de son initialisation, ajoutez la syntaxe suivante dans la description de la tâche `p:x`, avec `x` pouvant prendre comme valeurs `1`,`2` ou `3`. Les tâches créées par défaut prennent la priorité `1`. 256 | 257 | - `1` - Priorité normale 258 | - `2` - Priorité moyenne 259 | - `3` - Priorité élevée 260 | 261 | ``` 262 | $ tb -t @coding Fix issue `#42` p:3 263 | ``` 264 | 265 | Pour mettre à jour le niveau de priorété d'un tâche après sa création, utilisez l'option `--priority`/`-p` suivi de l'identifiant de la tâche choisie, préfixé du symbole `@` et un chiffre parmis `1`, `2` ou `3`. Notez que l'ordre entre l'identifiant ou le niveau de priorité n'a pas d'importance. 266 | 267 | ``` 268 | $ tb -p @1 2 269 | ``` 270 | 271 | ### Déplacer une tâche ou une note 272 | 273 | Pour déplacer une tâche ou une note sur un ou plusieurs tableaux, utilisez l'option `--move`/`-m` suivi de l'identifiant de la tâche ou de la note sélectionnée, préfixé du symbole `@` et du nom du/des tableau/x de destination. Le tableau par défaut `My board` peut être accédé via le mot clef `myboard`. L'ordre entre l'identifiant de la cible et les noms des tableaux n'a pas d'importance. 274 | 275 | ``` 276 | $ tb -m @1 myboard reviews 277 | ``` 278 | 279 | ### Supprimer une ou plusieurs tâches ou notes 280 | 281 | Pour supprimer une ou plusieurs tâches ou notes, utilisez l'option `--delete`/`-d` suivi des identifiants des éléments ciblés. Les éléments supprimés sont automatiquement archivés et peuvent être inspéctés ou restaurés à n'importe quel moment. Les duplicatas d'identifiants sont automatiquement filtrés. 282 | 283 | ``` 284 | $ tb -d 1 2 285 | ``` 286 | 287 | ### Supprimer toutes les tâches validées 288 | 289 | Afin de supprimer toutes les tâches que vous avez validées au moins une fois sur l'ensemble des tableaux, utilisez l'option `--clear`. Toutes les tâches supprimées sont automatiquement archivées et peuvent être consultées ou restaurées à n'importe quel moment. Afin d'éviter tout accident de suppression, l'option `--clear` n'existe pas dans une forme plus courte. 290 | 291 | ``` 292 | $ tb --clear 293 | ``` 294 | 295 | ### Afficher l'archive 296 | 297 | Pour afficher toutes les tâches et notes archivées, utilisez l'option `--archive`/`-a`. Toutes les éléments sont affichés en vue frise chronologique en se basant sur leur date de création. 298 | 299 | ``` 300 | $ tb -a 301 | ``` 302 | 303 | ### Restaurer une tâche ou une note 304 | 305 | Pour restaurer une ou plusieurs tâches/notes, utilisez l'option `--restore`/`-r` suivi des identifiants des tâches ou notes selectionnées. Les identifiants des éléments archivés peuvent être affichés en appelant l'option `--archive`/`-a`. Les duplicatas d'identifiants sont automatiquement filtrés. 306 | 307 | ``` 308 | $ tb -r 1 2 309 | ``` 310 | 311 | ### Liste de tâches ou de notes 312 | 313 | Pour lister un groupe d'éléments qui correspondent chacun à un certain nombre d'attributs, utilisez l'option `--list`/`-l` suivi des attributs souhaités. Les noms des tableaux et les caractéristiques d'une tâche ou d'une note sont des attributs valides. Par exemple, pour lister tous les éléments qui correspondent au tableau par défaut `myboard` et qui sont des tâches qui ne sont pas encore validées, le code suivant peut être utilisé. 314 | 315 | ``` 316 | $ tb -l myboard pending 317 | ``` 318 | 319 | La liste des attributs supportés par défaut, avec leurs alias respectifs, est la suivante : 320 | 321 | - `myboard` - Tâches et notes appartenant à `My board` 322 | - `task`, `tasks`, `todo` - Éléments qui sont des tâches. 323 | - `note`, `notes` - Éléments qui sont des notes. 324 | - `pending`, `unchecked`, `incomplete` - Éléments qui sont des tâches non validées. 325 | - `done`, `checked`, `complete` - Éléments qui sont des tâches validées. 326 | - `star`, `starred` - Éléments qui sont des favoris. 327 | 328 | ### Recherche de tâches ou notes 329 | 330 | Pour chercher un éléments parmis plusieurs, utilisez l'option `--find`/`-f`, suivi par vos mots clés de recherche. 331 | 332 | ``` 333 | $ tb -f documentation 334 | ``` 335 | 336 | ## Développement 337 | 338 | Pour avoir plus d'informations sur la méthode à respecter pour contribuer au projet, merci de lire le [guide de contribution](https://github.com/klaussinani/taskbook/blob/master/contributing.md). 339 | 340 | - Fork le répertoire et clone le sur ta machine. 341 | - Déplacez vous dans votre fork local: `cd taskbook` 342 | - Installez les dépendances du projet: `npm install` ou `yarn install` 343 | - Vérifiez que le code ne contient pas d'erreurs : `npm test` ou `yarn test` 344 | 345 | ## Applications associées 346 | 347 | - [chalk](https://github.com/chalk/chalk) - Coloration des chaînes de caractères dans le terminal 348 | - [signale](https://github.com/klaussinani/signale) - Affichage console hackable 349 | 350 | ## Equipe 351 | 352 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 353 | 354 | ## License 355 | 356 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 357 | -------------------------------------------------------------------------------- /docs/readme.GER.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | 📓 Aufgaben, Boards & Notizen für Kommandozeilen-Enthusiasten 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Beschreibung 20 | 21 | Durch die Verwendung einer einfachen, leicht zu verwendenden Syntax, die sich schnell erlernen lässt, ermöglicht es Taskbook Aufgaben und Notizen effizient über mehrere "Boards" hinweg zu verwalten - und das alles aus der Kommandozeile. Alle Daten werden automatisch im Speicher gesichert um Korrumpierung zu vermeiden, allerdings werden sie nie mit irgendjemandem/etwas geteilt. 22 | 23 | 24 | Dieses Dokument in [简体中文](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.ZH.md) lesen. 25 | Dieses Dokument in [Deutsch - German](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.GER.md) lesen. 26 | Dieses Dokument in [Français - French](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md) lesen. 27 | Dieses Dokument in [Русский - Russian](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md) lesen. 28 | 29 | Lies die [contributing guidelines](https://github.com/klauscfhq/taskbook/blob/master/contributing.md#translating-documentation) um zu lernen, wie du dieses Dokument in mehr Sprachen übersetzen kannst. 30 | 31 | Du kannst die Entwicklung dieses Projekts unterstützen und an [Open Collective](https://opencollective.com/klaussinani) spenden. 32 | 33 | Besuch doch [Gitter](https://gitter.im/klauscfhq/taskbook) oder [Twitter](https://twitter.com/klauscfhq) um deine Anmerkungen zu diesem Projekt zu teilen. 34 | 35 | ## Höhepunkte 36 | 37 | - Aufgaben und Notizen in "Boards" organisieren 38 | - Board & Zeitverlauf Ansichten 39 | - Mechanismen für Prioritäten & Favoriten 40 | - Elemente suchen & filtern 41 | - Archivieren & gelöschte Elemente wiederherstellen 42 | - speicherfreundlich & schnell 43 | - Daten werden automatisch gesichert 44 | - Speicherort ist einstellbar 45 | - Übersicht des Fortschrittes 46 | - einfache & leicht zu erlernende Syntax 47 | - Benachrichtigungen bei Updates 48 | - Konfiguration über `~/.taskbook.json` 49 | - Daten werden in JSON-File gesichert `~/.taskbook/storage` 50 | 51 | Die Höhepunkte in einem [taskbook board](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png) ansehen. 52 | 53 | ## Inhalt 54 | 55 | - [Beschreibung](#beschreibung) 56 | - [Höhepunkte](#höhepunkte) 57 | - [Installation](#installation) 58 | - [Verwendung](#verwendung) 59 | - [Ansichten](#ansichten) 60 | - [Konfiguration](#konfiguration) 61 | - [Anleitung](#anleitung) 62 | - [Development](#development) 63 | - [Related](#related) 64 | - [Team](#team) 65 | - [Lizenz](#license) 66 | 67 | ### Yarn 68 | 69 | ```bash 70 | yarn global add taskbook 71 | ``` 72 | 73 | ### NPM 74 | 75 | ```bash 76 | npm install --global taskbook 77 | ``` 78 | 79 | ### Snapcraft 80 | 81 | ```bash 82 | snap install taskbook 83 | snap alias taskbook tb # set alias 84 | ``` 85 | 86 | **Anmerkung:** Die Speicher- & Konfigurations-Dateien werden unter der Umgebungsvariable [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) statt der `$HOME` Variable gespeichert. 87 | 88 | ## Verwendung 89 | 90 | ``` 91 | $ tb --help 92 | 93 | Usage 94 | $ tb [ ...] 95 | 96 | Options 97 | none Anzeigen der board Ansicht 98 | --archive, -a archivierte Elemente anzeigen 99 | --begin, -b einen Task starten/pausieren 100 | --check, -c einen Task anhaken/abhaken 101 | --clear alle markierten Elemente löschen 102 | --copy, -y Beschreibung kopieren 103 | --delete, -d Element löschen 104 | --edit, -e Beschreibung des Elements anpassen 105 | --find, -f nach Elementen suchen 106 | --note, -n Notiz erstellen 107 | --help, -h Hilfe-Nachricht anzeigen 108 | --list, -l Elemente nach Attributen auflisten 109 | --move, -m Element zwischen Boards verschieben 110 | --note, -n Notiz erstellen 111 | --priority, -p die Priorität neu setzen 112 | --restore, -r archivierte Elemente wiederherstellen 113 | --star, -s ein Sternchen bei einem Element setzen/entfernen 114 | --task, -t Task erstellen 115 | --timeline, -i Zeitübersicht anzeigen 116 | --version, -v Version anzeigen 117 | 118 | Beispiele 119 | $ tb 120 | $ tb --archive 121 | $ tb --begin 2 3 122 | $ tb --check 1 2 123 | $ tb --clear 124 | $ tb --copy 1 2 3 125 | $ tb --delete 4 126 | $ tb --edit @3 Merge PR #42 127 | $ tb --find documentation 128 | $ tb --list pending coding 129 | $ tb --move @1 cooking 130 | $ tb --note @coding Mergesort worse-case O(nlogn) 131 | $ tb --priority @3 2 132 | $ tb --restore 4 133 | $ tb --star 2 134 | $ tb --task @coding @reviews Review PR #42 135 | $ tb --task @coding Improve documentation 136 | $ tb --task Make some buttercream 137 | $ tb --timeline 138 | ``` 139 | 140 | ## Ansichten 141 | 142 | ### Board Ansicht 143 | 144 | Wenn man taskbook ohne Optionen aufruft, dann werden alle gespeicherten Elemente gruppiert in den zugeordneten Boards angezeigt. 145 | 146 |
147 | Boards 148 |
149 | 150 | ### Zeitleisten Ansicht 151 | 152 | Um alle Elemente in einer Zeitleisten Ansicht, die auf dem Erstelldatum basiert, anzuzeigen kann die `--timeline`/`-i` Option verwendet werden. 153 | 154 |
155 | Timeline View 156 |
157 | 158 | ## Konfiguration 159 | 160 | Taskbook kann über das `~/.taskbook.json` File konfiguriert werden, indem man die Optionen anhand der eigenen Vorlieben anpasst. Um die Standardwerte wieder herzustellen, kann die Konfiguration einfach aus dem Home-Ordner gelöscht werden. 161 | 162 | Nachfolgend werden die verfügbaren Optionen mit ihren default-Werten illustriert: 163 | 164 | ```json 165 | { 166 | "taskbookDirectory": "", 167 | "displayCompleteTasks": true, 168 | "displayProgressOverview": true 169 | } 170 | ``` 171 | 172 | ### Im Detail 173 | 174 | ##### `taskbookDirectory` 175 | 176 | - Type: `String` 177 | - Default: `~` 178 | 179 | Voller Pfad im Filesystem, wo die Daten gespeichert werden, z.B; `/home/username/the-cloud` 180 | 181 | Wenn nicht definiert wird das Home-Directory `~` verwendet und taskbook wird unter `~/.taskbook/` aufgesetzt. 182 | 183 | ##### `displayCompleteTasks` 184 | 185 | - Type: `Boolean` 186 | - Default: `true` 187 | 188 | Aufgaben anzeigen, die schon vervollständigt sind. 189 | 190 | ##### `displayProgressOverview` 191 | 192 | - Type: `Boolean` 193 | - Default: `true` 194 | 195 | Übersicht über den Fortschritt unter den Timeline und Board Ansichten anzeigen. 196 | 197 | 198 | ## Anleitung 199 | 200 | Es folgt eine oberflächliche Schritt-für-Schritt Beschreibung für taskbook inklusive einiger Beispiele. 201 | Wenn ein Fehler gefunden wird oder ein Beispiel nicht klar genug ist, kann jederzeit ein 202 | [issue](https://github.com/klauscfhq/taskbook/issues/new/choose) oder [pull request](https://github.com/klauscfhq/taskbook/compare) gemacht werden. 203 | 204 | ### Task anlegen 205 | 206 | Zum Anlegen eines neuen Tasks verwendet man die `--task`/`-t` Option mit der Beschreibung gleich dahinter. 207 | 208 | ``` 209 | $ tb -t Dokumentation verbessern 210 | ``` 211 | 212 | ### Notiz anlegen 213 | 214 | Zum Anlegen einer Notiz verwendet man die `--note`/`-n` Option mit der Notiz gleich dahinter 215 | 216 | ``` 217 | $ tb -n Mergesort worse-case O(nlogn) 218 | ``` 219 | 220 | ### Board anlegen 221 | 222 | Boards werden automatisch angelegt, wenn ein neuer Task oder eine neue Notiz angelegt werden. Um eines oder mehrere Boards anzulegen, muss deren Name mit Prefix `@` in der Beschreibung des Items inkludiert werden. Resultierend wird das angelegte Item in allen angegebenen Boards inkludiert. Standardmäßig werden alle Items,die keinen Boardnamen in der Beschreibung enthalten, zum Board `My Board` hinzugefügt. 223 | 224 | ``` 225 | $ tb -t @coding @docs Update contributing guidelines 226 | ``` 227 | 228 | ### Task abhaken 229 | 230 | Um einen Task als "abgehakt/offen" zu markeiren, verwendet man die `--check`/`-c` Option gefolgt von den IDs der Ziel-Tasks. Man beachte, dass die Option die Tasks zu ihrem Gegenteil updatet. Doppelte IDs werden herausgefiltert. 231 | 232 | ``` 233 | $ tb -c 1 3 234 | ``` 235 | ### Mit einem Task beginnen 236 | 237 | Um einen Task als begonnen/pausiert zu markeiren, wird die Option `--begin`/`-b` gefolgt von den IDs der Tasks verwendet. Die Funktionalität ist die selbe wie die der oben beschriebenen "check" option. 238 | 239 | ``` 240 | $ tb -b 2 3 241 | ``` 242 | 243 | ### einem Element ein Sternchen geben 244 | 245 | Um ein Element als Favorit zu markieren, wird die `--star`/`-s` Option gefolgt von den IDs verwendet. Die Funktionalität gleicht der `--check` Option. 246 | 247 | ``` 248 | $ tb -s 1 2 3 249 | ``` 250 | 251 | ### Beschreibung eines Elements kopieren 252 | 253 | Um die Beschreibung eines oder mehrerer Element in die Zwischenablage zu kopieren, wird die Option `--copy`/`-y` gefolgt von den IDs der Elemente verwendet. Die kopierten Beschreibungen werden durch den Newline-Charakter getrennt. 254 | 255 | ``` 256 | $ tb -y 1 2 3 257 | ``` 258 | 259 | ### Boards anzeigen 260 | 261 | Taskbook ohne Optionen aufzurufen zeigt alle gespeicherten Elemente gruppiert in die zugehörigen Boards an. 262 | 263 | ``` 264 | $ tb 265 | ``` 266 | 267 | ### Timeline anzeigen 268 | 269 | Um alle Elemente in einer Zeitleisten-Ansicht basierend auf deren Erstelldatum anzuzeigen kann die 270 | `--timeline`/`-i` Option verwendet werden. 271 | 272 | ``` 273 | $ tb -i 274 | ``` 275 | 276 | ### Priorität festlegen 277 | 278 | Um die Priorität für einen Task beim Initialisieren anzugeben, kann die `p:x` Syntax in der Task-Beschreibung verwendet werden. x kann eine Ganzzahl mit Wert `1`, `2` oder `3` sein. Alle Tasks werden standardmäßig mit Priorität `1`, normal, erzeugt. 279 | 280 | - `1` - Normale Priorität 281 | - `2` - Mittlere Priorität 282 | - `3` - Hohe Priorität 283 | 284 | ``` 285 | $ tb -t @coding Fix issue `#42` p:3 286 | ``` 287 | 288 | Um die Priorität eines Tasks nach dem Anlegen zu aktualisieren, wird die `--priority`/`-p` Option gemeinsam mit der ID des Tasks mit Prefix `@` vewrendet.Es kann eine Ganzzahl mit dem Wert `1`, `2` oder `3` vergeben werden. Die Reihenfolge von Task-ID und Priorität ist nicht von Bedeutung. 289 | 290 | ``` 291 | $ tb -p @1 2 292 | ``` 293 | 294 | ### Elemente verschieben 295 | 296 | Um ein Elemente in eines oder mehrere Boards zu verschieben verwendet man die `--move`/`-m` Option, gefolgt von der Ziel-Element-ID, mit einer Prefix `@` Symbol, und dem Namen der Zielboards. Default ist `My board` und kann über das `myboard` Schlüsselwort aufgerufen werden. Die Reihenfolge der Ziel-IDs und Boardsnamen ist nicht relevant. 297 | 298 | ``` 299 | $ tb -m @1 myboard reviews 300 | ``` 301 | ### Angehakte Tasks löschen 302 | 303 | Um alle bereits erledigten Tasks in allen Boards auf einen Schlag zu löschen kann die `--clear` Option verwendet werden. Alle gelöschten Tasks werden automatisch archiviert, können also zu einem späteren Zeitpunkt angsehen oder wiederhergestellt werden. Um ein versehentliches Löschen zu verhinder, hat die `--clear` Option keinen kürzeren Alias. 304 | 305 | ``` 306 | $ tb --clear 307 | ``` 308 | 309 | ### Elemente löschen 310 | 311 | Um eines oder mehrere Elemente zu löschen verwendet man die `--delete`/`-d` Option gefolgt von den ids der Items. Gelöschte Elemente werden automatisch archiviert und können jederzeit angesehen oder wiederhergestellt werden. Duplikate werden automatisch gefiltert. 312 | 313 | ``` 314 | $ tb -d 1 2 315 | ``` 316 | 317 | ### Archiv anzeigen 318 | 319 | Um alle archivierten Elemente anzuzeigen kann die `--archive`/`-a` Option verwendet werden. Alle archivierten Elemente werden in einer Zeitleisten-Ansicht angezeigt, die auf deren Erstelldatum basiert. 320 | 321 | ``` 322 | $ tb -a 323 | ``` 324 | 325 | ### Elemente wiederherstellen 326 | 327 | Um ein oder mehrere Elemente wiederherzustellen wird die `--restore`/`-r` Option gefolgt von den IDs der Elemente verwendet. Die IDs aller archivierten Items können mit der Option `--archive`/`-a` angesehen werden. Duplikate werden automatisch herausgefiltert. 328 | 329 | ``` 330 | $ tb -r 1 2 331 | ``` 332 | 333 | ### Elemente auflisten 334 | 335 | Um eine Gruppe von Elemente aufzulisten, wo jedes Element eine bestimmte Anzahl von Attributen hat, kann die Option `--list`/`-l` gefolgt von den gewünschten Attributen verwendet werden. Board Namen und Element-Merkmalen können valide Attribute sein. Um Beispielsweise alle Elemente, die ins `myboard` gehören und noch offen sind aufzulisten kann folgender Befehl verwendet werden: 336 | 337 | 338 | ``` 339 | $ tb -l myboard pending 340 | ``` 341 | 342 | Standardmäßig werden die folgenden Attribute zum auflisten unterstützt: 343 | 344 | - `myboard` - Elemente die ins `My board` gehören 345 | - `task`, `tasks`, `todo` - Elemente, die Tasks sind 346 | - `note`, `notes` - Elemente, die Notizen sind 347 | - `pending`, `unchecked`, `incomplete` - Elemente, die offene Tasks sind 348 | - `done`, `checked`, `complete` - Elemente, die abgehakte Tasks sind 349 | - `star`, `starred` - Favorisierte Elemente 350 | 351 | ### Elemente suchen 352 | 353 | Um eines oder mehrere Elemente zu suchen, kann man die `--find`/`-f` Option gefolgt von den Suchparametern verwenden 354 | 355 | ``` 356 | $ tb -f documentation 357 | ``` 358 | 359 | ## Development 360 | 361 | Mehr Informationen im Bezug auf Beiträge zum Projekt finden sich in den [contributing guidelines](https://github.com/klauscfhq/taskbook/blob/master/contributing.md). 362 | 363 | - Das Repository forken und auf deine Maschine klonen 364 | - Zum lokalen Fork navigieren: `cd taskbook` 365 | - Die dependencies installieren: `npm install` oder `yarn install` 366 | - Den Code für Fehler linten: `npm test` or `yarn test` 367 | 368 | ## Related 369 | 370 | - [signale](https://github.com/klaussinani/signale) - Highly configurable logging utility 371 | - [qoa](https://github.com/klaussinani/qoa) - Minimal interactive command-line prompts 372 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Deep oceanic blue Hyper terminal theme 373 | 374 | ## Team 375 | 376 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 377 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 378 | 379 | 380 | ## License 381 | 382 | [MIT](https://github.com/klauscfhq/taskbook/blob/master/license.md) 383 | -------------------------------------------------------------------------------- /docs/readme.JP.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | コマンドライン愛用者のための、タスク / ボード / ノート ツール 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## 概要 20 | 21 | Taskbookはシンプルで最小限の使い方で、簡単・効率的にターミナル内でタスクやノートを複数のボードで管理することができます。全てのデータは削除されず、自動で保存され、どこでも共有可能です。削除したアイテムは自動的にアーカイブされ、検索・リストアすることが可能です。 22 | 23 | [GitHub Sponsors](https://github.com/sponsors/klaussinani)から開発へのサポートも可能です。 24 | 25 | 翻訳について知りたい場合は[コントリビュートガイダンス](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation)をご確認ください。 26 | 27 | [Gitter](https://gitter.im/klaussinani/taskbook) や [Twitter](https://twitter.com/klaussinani) で当プロジェクトをシェアしてください。 28 | 29 | ## 特徴 30 | 31 | - タスク・ノートを作成 32 | - ビュー(ボード・タイムライン) 33 | - 優先度設定・お気に入り機能 34 | - 検索・フィルタ機能 35 | - アーカイブ・リストア機能 36 | - 軽量・早い 37 | - 自動保存 38 | - ストレージのカスタマイズ 39 | - 進捗の確認 40 | - 簡単でミニマルな文法 41 | - 更新通知 42 | - `~/.taskbook.json`によるこんフィギュレーション 43 | - `~/.taskbook/storage`のJsonでデータの保存 44 | 45 | 特徴は[taskbook ボード](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png)で確認することができます。 46 | 47 | ## 内容 48 | 49 | - [概要](#概要) 50 | - [特徴](#特徴) 51 | - [インストール](#インストール) 52 | - [使い方](#使い方) 53 | - [ビュー](#ビュー) 54 | - [設定](#設定) 55 | - [操作方法](#操作方法) 56 | - [開発](#開発) 57 | - [関連プロジェクト](#関連プロジェクト) 58 | - [開発チーム](#開発チーム) 59 | - [ライセンス](#ライセンス) 60 | 61 | ## インストール 62 | 63 | ### Yarn 64 | 65 | ```bash 66 | yarn global add taskbook 67 | ``` 68 | 69 | ### NPM 70 | 71 | ```bash 72 | npm install --global taskbook 73 | ``` 74 | 75 | ### Snapcraft 76 | 77 | ```bash 78 | snap install taskbook 79 | snap alias taskbook tb # set alias 80 | ``` 81 | 82 | **補足**: snapの厳格で限定的な性質より、ストレージと設定ファイルは`$HOME`配下ではなく環境変数[`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env)配下に保存されます。 83 | 84 | ## 使い方 85 | 86 | ``` 87 | $ tb --help 88 | 89 | Usage 90 | $ tb [ ...] 91 | 92 | Options 93 | none ボードを表示 94 | --archive, -a アーカイブしたタスクを表示 95 | --begin, -b タスクのスタート/中断 96 | --check, -c タスクのチェック/チェック解除 97 | --clear チェックしたアイテムの削除 98 | --copy, -y アイテムのコピー 99 | --delete, -d アイテムの削除 100 | --edit, -e アイテムの編集 101 | --find, -f アイテムの検索 102 | --help, -h ヘルプメッセージの表示 103 | --list, -l 属性ごとにアイテムのリスト化 104 | --move, -m ボードでのアイテムの移動 105 | --note, -n ノートの作成 106 | --priority, -p タスクの優先度を変更 107 | --restore, -r アーカイブからアイテムを復元 108 | --star, -s アイテムのスター/スター解除 109 | --task, -t タスクの作成 110 | --timeline, -i タイムラインの表示 111 | --version, -v バージョンの表示 112 | 113 | Examples 114 | $ tb 115 | $ tb --archive 116 | $ tb --begin 2 3 117 | $ tb --check 1 2 118 | $ tb --clear 119 | $ tb --copy 1 2 3 120 | $ tb --delete 4 121 | $ tb --edit @3 Merge PR #42 122 | $ tb --find documentation 123 | $ tb --list pending coding 124 | $ tb --move @1 cooking 125 | $ tb --note @coding Mergesort worse-case O(nlogn) 126 | $ tb --priority @3 2 127 | $ tb --restore 4 128 | $ tb --star 2 129 | $ tb --task @coding @reviews Review PR #42 130 | $ tb --task @coding Improve documentation 131 | $ tb --task Make some buttercream 132 | $ tb --timeline 133 | ``` 134 | 135 | ## ビュー 136 | 137 | ### ボード 138 | 139 | オプションなしでtaskbookを起動すると、保存している全てのアイテムをそれぞれのボードに表示します。 140 | 141 |
142 | Boards 143 |
144 | 145 | ### タイムライン 146 | 147 | 全てのアイテムをタイムラインに表示するためには、`--timeline`/`-i` オプションを利用することで作成日順に表示されます。 148 | 149 |
150 | Timeline View 151 |
152 | 153 | ## 設定 154 | 155 | `~/.taskbook.json` ファイルを作成し、自身のオプションを設定できます。デフォルト値をリセットしたい場合は、設定ファイルを消すだけです。 156 | 157 | 以下は利用可能なオプションと、それぞれのデフォルト値となります。 158 | 159 | ```json 160 | { 161 | "taskbookDirectory": "~", 162 | "displayCompleteTasks": true, 163 | "displayProgressOverview": true 164 | } 165 | ``` 166 | 167 | ### 各変数の詳細 168 | 169 | ##### `taskbookDirectory` 170 | 171 | - 型: `String` 172 | - 初期値: `~` 173 | 174 | ストレージを初期化するファイルパス。`/home/username/the-cloud` や `~/the-cloud` などを指定します。 175 | 176 | ホームディレクトリを示す `~` を指定すると、 `~/.taskbook/` 配下に作成されます。 177 | 178 | ##### `displayCompleteTasks` 179 | 180 | - 型: `Boolean` 181 | - 初期値: `true` 182 | 183 | 完了したタスクを表示するかどうか指定できます。 184 | 185 | ##### `displayProgressOverview` 186 | 187 | - 型: `Boolean` 188 | - 初期値: `true` 189 | 190 | タイムラインとボートの下に進捗状況を表示するか指定できます。 191 | 192 | ## 操作方法 193 | 194 | 以下は最小限の利用例になります。 195 | エラーやサンプルが不十分で改善が必要な場合は、[イシュー](https://github.com/klaussinani/taskbook/issues/new/choose) や [プルリクエスト](https://github.com/klaussinani/taskbook/compare) を作成してください。 196 | 197 | ### タスクの作成 198 | 199 | 新たなタスクを作成するためには、 `--task`/`-t` のオプションにタスクの詳細を記載してください。 200 | 201 | ``` 202 | $ tb -t Improve documentation 203 | ``` 204 | 205 | ### ノートの作成 206 | 207 | 新たなのノートを作成するためには、 `--note`/`-n` オプションにノートの本文を記載してください。 208 | 209 | ``` 210 | $ tb -n Mergesort worse-case O(nlogn) 211 | ``` 212 | 213 | ### ボードの作成 214 | 215 | ボードはタスクやノートを作成したときに自動的に初期化されます。ボートを作成するためには、 `@` をプレフィックスにつけて名前を指定すれば作成できます。ボードの作成と同時に作成したタスクは作成したボードに含まれます。デフォルトではボードの指定がない場合は、 自動的に `My Board` へ追加されます。 216 | 217 | ``` 218 | $ tb -t @coding @docs Update contributing guidelines 219 | ``` 220 | 221 | ### タスクのチェック 222 | 223 | タスクを完了/未完了にするためには、 `--check`/`-c` オプションに対象タスクIDを付与してくだい。このオプションでは指定されたタスクの `complete` ステータスを反対に更新するので、完了していたタスクは遅延したタスクに、遅延していたタスクは完了に切り替わります。重複したIDは自動的に除外されます。 224 | 225 | ``` 226 | $ tb -c 1 3 227 | ``` 228 | 229 | ### タスクの開始 230 | 231 | タスクを開始/中断するには、 `--begin`/`-b` オプションにタスクIDを指定してください。使い方は `--check` オプションと同様になります。 232 | 233 | ``` 234 | $ tb -b 2 3 235 | ``` 236 | 237 | ### アイテムのスター 238 | 239 | お気に入りとしてマークするには、 `--star`/`-s` オプションにタスクIDを指定してください。使い方は `--check` オプションと変わりません。 240 | 241 | ``` 242 | $ tb -s 1 2 3 243 | ``` 244 | 245 | ### アイテム詳細のコピー 246 | 247 | システムのクリップボードにアイテムをコピーするには、 `--copy`/`-y` オプションにタスクIDを指定してください。コピーされたアイテムの各タスクは改行で区切られているため、貼り付け後に読みやすい状態となっています。 248 | 249 | ``` 250 | $ tb -y 1 2 3 251 | ``` 252 | 253 | ### ボードの表示 254 | 255 | taskbookをオプションなしで起動すると、ボードごとにグループ化されたアイテムを表示します。 256 | 257 | ``` 258 | $ tb 259 | ``` 260 | 261 | ### タイムラインの表示 262 | 263 | タイムラインビューに全てのアイテムを表示させるには、 `--timeline`/`-i` オプションを利用できます。 264 | 265 | ``` 266 | $ tb -i 267 | ``` 268 | 269 | ### 優先度の設定 270 | 271 | 初回登録時にタスクの優先度を設定するには、 `p:x` をタスク詳細に付け加えると可能です。xは `1`, `2` or `3` の数字が入ります。デフォルトでは優先度が `1` となります。 272 | 273 | - `1` - Normal priority 274 | - `1` - 通常 275 | - `2` - Medium priority 276 | - `2` - 中優先 277 | - `3` - High priority 278 | - `3` - 高優先 279 | 280 | ``` 281 | $ tb -t @coding Fix issue `#42` p:3 282 | ``` 283 | 284 | タスクの作成後に優先度を変更するためには、 `--priority`/`-p` オプションを対象タスクIDに指定し、 `@` をプレフィックスとして、 `1` ・ `2` ・ `3` の数値を指定してください。対象IDや優先度が置かれた順番は重要ではありません。 285 | 286 | ``` 287 | $ tb -p @1 2 288 | ``` 289 | 290 | ### アイテムの移動 291 | 292 | タスクを1つ、もしくは複数のボードへ移動するためには、 `--move`/`-m` オプションの後に `@` マークをプレフィックスとして対象アイテムIDを指定して、ボード名を指する必要があります。デフォルトの `My board` は `myboard` キーワードで設定できます。対象IDとボード名の順番は重要ではありません。 293 | 294 | ``` 295 | $ tb -m @1 myboard reviews 296 | ``` 297 | 298 | ### アイテムの削除 299 | 300 | アイテムを削除するには、 `--delete`/`-d` オプションに対象アイテムIDを指定する必要があります。削除されたアイテムは自動的にアーカイブされ、いつでも検索やリストアは可能です。重複したIDは自動的に除外されます。 301 | 302 | ``` 303 | $ tb -d 1 2 304 | ``` 305 | 306 | ### チェックしたタスクの削除 307 | 308 | 全てのボードにある完了したタスクを削除/クリアするためには、 `--clear` オプションを利用してください。削除されたタスクは自動的にアーカイブされ、いつでも検索・リストア可能です。残念ですが、 `--clear` の簡略化したオプションはありません。 309 | 310 | ``` 311 | $ tb --clear 312 | ``` 313 | 314 | ### アーカイブの表示 315 | 316 | アーカイブした全てのアイテムを表示するためには、 `--archive`/`-a` オプションを利用してください。アーカイブした全てのアイテムはタイムラインビュー作成日順に表示されます。 317 | 318 | ``` 319 | $ tb -a 320 | ``` 321 | 322 | ### アイテムのリストア 323 | 324 | アイテムをリストアするためには、 `--restore`/`-r` オプションで対象アイテムIDを付けて利用してください。アーカイブした全てのタスクは `--archive`/`-a` オプションで見ることがきます。重複したIDは自動的に除外されます。 325 | 326 | ``` 327 | $ tb -r 1 2 328 | ``` 329 | 330 | ### アイテムのリスト化 331 | 332 | 特定の属性でアイテムをまとめてリスト化するためには、 `--list`/`-l` オプションの後に必要な属性を付けてください。有効な属性をもつアイテムでボードが表示されます。例えば、デフォルトの `myboard` にある遅延した全てのアイテムをリスト化するためには、以下のように入力できます。 333 | 334 | ``` 335 | $ tb -l myboard pending 336 | ``` 337 | 338 | デフォルトでサポートしているリスト化属性は、以下のように特定のエイリアスと一緒に使えます。 339 | 340 | - `myboard` - Items that belong to `My board` 341 | - `task`, `tasks`, `todo` - タスクのアイテム 342 | - `note`, `notes` - ノートのアイテム 343 | - `pending`, `unchecked`, `incomplete` - 遅れているタスクのアイテム 344 | - `progress`, `started`, `begun` - 進行中タスクのアイテム 345 | - `done`, `checked`, `complete` - 完了したタスクのアイテム 346 | - `star`, `starred` - スターされたアイテム 347 | 348 | ### アイテムの検索 349 | 350 | アイテムを検索するためには、 `--find`/`-f` オプションに検索ワードを指定してください。 351 | 352 | ``` 353 | $ tb -f documentation 354 | ``` 355 | 356 | ## 開発 357 | 358 | よりプロジェクトへ貢献したい場合は、[contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md)を読んでください。 359 | 360 | - リポジトリのフォーク、もしくはクローンをする 361 | - ローカルにリポジトリをインストールし、 `cd taskbook` で移動 362 | - `npm install` もしくは `yarn install` で依存モジュールをインストール 363 | - `npm test` もしくは `yarn test` でコードのLintチェックが可能 364 | 365 | ## 関連プロジェクト 366 | 367 | - [signale](https://github.com/klaussinani/signale) - 高度に設定可能なロギングツール 368 | - [qoa](https://github.com/klaussinani/qoa) - ミニマルでインタラクティブなコマンドラインプロンプト 369 | - [hyperocean](https://github.com/klaussinani/hyperocean) - オーシャンブルーなテーマ 370 | 371 | ## 開発チーム 372 | 373 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 374 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 375 | 376 | ## ライセンス 377 | 378 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 379 | -------------------------------------------------------------------------------- /docs/readme.KR.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | 커맨드 라인 환경에서의 테스크, board, 노트 관리 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## 소개 20 | 21 | taskbook은 효율적으로 터미널 내에서 여러 board들을 넘나들며 task와 노트를 관리할 수 있게 해줍니다. 간결한 사용법으로 플랫한 러닝커브를 자랑합니다. 모든 데이터는 변형을 막기위해서 개별적으로 저장되고, 누구와도 공유하지 않습니다. 삭제된 아이템들은 자동으로 아카이빙되고, 언제나 복구 혹은 열람할 수 있습니다. 22 | 23 | 이 문서를 다음 언어로 읽으실 수 있습니다: 24 | [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md), [日本語](https://github.com/klaussinani/taskbook/blob/master/docs/readme.JP.md), [한국어](https://github.com/klaussinani/taskbook/blob/master/docs/readme.KR.md)). 25 | 26 | [GitHub Sponsors](https://github.com/sponsors/klaussinani) 로 개발을 후원해주세요. 27 | 28 | [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) 를 보시고 다른 언어로 이 문서에 기여해주세요. 29 | 30 | [Gitter](https://gitter.im/klaussinani/taskbook) 나 [Twitter](https://twitter.com/klaussinani) 에 와서 이 프로젝트에 대한 생각을 공유해주세요. 31 | ## 핵심 기능 32 | 33 | - task와 노트를 board에 정리 34 | - board 뷰 & 타임라인 뷰 35 | - 우선순위 & 즐겨찾기 기능 36 | - 검색 & 필터링 기능 37 | - 삭제된 아이템 아카이빙 & 복구 기능 38 | - 가볍고 빨라요! 39 | - 데이터는 개별적(원자적, atomically) 저장 40 | - 저장 장소 커스터마이징 41 | - 전체 진행상황 뷰 42 | - 간결한 사용 문법 43 | - 업데이트 알림 44 | - `~/.taskbook.json` 을 사용해서 설정 가능 45 | - `~/.taskbook/storage` 에 json 형식으로 데이터 저장 46 | 47 | [taskbook board](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png) 에서 핵심 기능을 살펴보세요. 48 | 49 | 50 | ## Contents 51 | 52 | - [소개](#description) 53 | - [핵심 기능](#highlights) 54 | - [설치](#install) 55 | - [사용법](#usage) 56 | - [뷰](#views) 57 | - [설정](#configuration) 58 | - [간단 메뉴얼](#flight-manual) 59 | - [개발](#development) 60 | - [관련 작업](#related) 61 | - [팀소개](#team) 62 | - [라이센스](#license) 63 | 64 | ## 설치 65 | 66 | ### Yarn 67 | 68 | ```bash 69 | yarn global add taskbook 70 | ``` 71 | 72 | ### NPM 73 | 74 | ```bash 75 | npm install --global taskbook 76 | ``` 77 | 78 | ### Snapcraft 79 | 80 | ```bash 81 | snap install taskbook 82 | snap alias taskbook tb # alias 설정 83 | ``` 84 | 85 | **주의:** snap의 제한된 기능때문에, 데이터와 설정 파일은 모두 `$HOME` 대신 [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) 하위에 저장됩니다. 86 | 87 | ## 사용법 88 | 89 | ``` 90 | $ tb --help 91 | 92 | Usage 93 | $ tb [ ...] 94 | 95 | Options 96 | none Display board view 97 | --archive, -a Display archived items 98 | --begin, -b Start/pause task 99 | --check, -c Check/uncheck task 100 | --clear Delete all checked items 101 | --copy, -y Copy item description 102 | --delete, -d Delete item 103 | --edit, -e Edit item description 104 | --find, -f Search for items 105 | --help, -h Display help message 106 | --list, -l List items by attributes 107 | --move, -m Move item between boards 108 | --note, -n Create note 109 | --priority, -p Update priority of task 110 | --restore, -r Restore items from archive 111 | --star, -s Star/unstar item 112 | --task, -t Create task 113 | --timeline, -i Display timeline view 114 | --version, -v Display installed version 115 | 116 | Examples 117 | $ tb 118 | $ tb --archive 119 | $ tb --begin 2 3 120 | $ tb --check 1 2 121 | $ tb --clear 122 | $ tb --copy 1 2 3 123 | $ tb --delete 4 124 | $ tb --edit @3 Merge PR #42 125 | $ tb --find documentation 126 | $ tb --list pending coding 127 | $ tb --move @1 cooking 128 | $ tb --note @coding Mergesort worse-case O(nlogn) 129 | $ tb --priority @3 2 130 | $ tb --restore 4 131 | $ tb --star 2 132 | $ tb --task @coding @reviews Review PR #42 133 | $ tb --task @coding Improve documentation 134 | $ tb --task Make some buttercream 135 | $ tb --timeline 136 | ``` 137 | 138 | ## Views 139 | 140 | ### board 뷰 141 | 142 | 아무 옵션도 주지 않고 taskbook을 작동 시키면, 각 board로 그룹된 아이템들이 보여집니다. 143 | 144 |
145 | Boards 146 |
147 | 148 | ### 타임라인 뷰 149 | 150 | 타임라인 뷰로 모든 아이템들을 보려면 (생성시간 기준), `--timeline`/`-i` 옵션을 사용하면 됩니다. 151 | 152 |
153 | Timeline View 154 |
155 | 156 | ## 설정 157 | 158 | taskbook 을 설정하려면 `~/.taskbook.json` 파일로 접근하여 취향에 맞게 옵션을 변형해주세요. 디폴트 값으로 리셋하고자 한다면, 그냥 해당 config 파일을 홈디렉토리에서 삭제해주세요. 159 | 160 | 아래는 디폴트 값을 포함해서, 가능한 옵션들을 표시해놓은 것입니다. 161 | 162 | ```json 163 | { 164 | "taskbookDirectory": "~", 165 | "displayCompleteTasks": true, 166 | "displayProgressOverview": true 167 | } 168 | ``` 169 | 170 | ### 상세 171 | 172 | ##### `taskbookDirectory` 173 | 174 | - 타입: `String` 175 | - 디폴트: `~` 176 | 177 | 데이터 저장이 처음 시작되는 파일 경로입니다. 예: `/home/username/the-cloud` 혹은 `~/the-cloud` 178 | 179 | 이를 설정하기 않으면 `~`가 사용되고, taskbook은 `~/.taskbook/` 하위에 세팅됩니다. 180 | 181 | ##### `displayCompleteTasks` 182 | 183 | - 타입: `Boolean` 184 | - 디폴트: `true` 185 | 186 | complete으로 마킹한 task들을 보여줄지 여부를 결정합니다. 187 | 188 | ##### `displayProgressOverview` 189 | 190 | - 타입: `Boolean` 191 | - 디폴트: `true` 192 | 193 | 타임라인과 board뷰 아래에 프로그레스 뷰를 보여줄지 여부를 결정합니다. 194 | 195 | ## 간단 매뉴얼 196 | 197 | 198 | 다음은 taskbook 사용법 예제를 포함한 기초 매뉴얼입니다. 199 | 오류를 발견하시거나 예제가 명확하지 않아서 개선되어야한다고 생각하시면, 자유롭게 [이슈](https://github.com/klaussinani/taskbook/issues/new/choose)나 [풀리퀘스트](https://github.com/klaussinani/taskbook/compare)를 부탁드립니다. 200 | 201 | ### task 만들기 202 | 203 | 새로운 task를 만들려면, `--task`/`-t` 옵션을 사용하고 그 뒤에 설명을 적어주세요. 204 | 205 | ``` 206 | $ tb -t Improve documentation 207 | ``` 208 | 209 | ### 노트 만들기 210 | 211 | 새로운 노트를 만들려면 `--note`/`-n` 옵션을 사용하고 그 뒤에 노트 내용을 적어주세요. 212 | 213 | ``` 214 | $ tb -n Mergesort worse-case O(nlogn) 215 | ``` 216 | 217 | ### Board 만들기 218 | 219 | 220 | board는 새로운 task나 노트를 만들때 자동으로 초기화 됩니다. 하나 이상의 board를 만들려면, 만들고자하는 아이템을 적을 때 `@` 을 붙여 board 이름을 적어주세요. 221 | 새로운 아이템은 주어진 board에 모두 속하게 됩니다. 기본적으로, board 이름을 명시하지 않은 아이템은 `My Board`에 포함됩니다. 222 | 223 | ``` 224 | $ tb -t @coding @docs Update contributing guidelines 225 | ``` 226 | 227 | ### Task 체크하기 228 | 229 | task를 완료/미완료로 표시하기 위해서는 `--check`/`-c` 옵션 뒤에 타겟 task의 아이디를 적어주세요. 이 옵션은 상태를 뒤집는 것이므로, 완료된 task를 체크하면 pending(지연중)으로, pending된 task를 체크하면 완료로 설정됩니다. 중복된 아이디를 입력하는 경우 자동으로 필터링 됩니다. 230 | 231 | ``` 232 | $ tb -c 1 3 233 | ``` 234 | 235 | ### Task 시작하기 236 | 237 | task를 시작/일시정지로 표시하기 위해서는 `--begin`/`-b` 옵션 뒤에 타겟 task의 아이디를 적어주세요. 이 옵션의 동작은 `--check` 옵션과 같습니다. 238 | 239 | ``` 240 | $ tb -b 2 3 241 | ``` 242 | 243 | ### Item에 별표시하기 244 | 245 | 하나 이상의 아이템을 자주 사용한다고 표시하기 위해서는, `--star`/`-s` 옵션 뒤에 타겟 task의 아이디를 적어주세요. 이 옵션의 동작은 `--check` 옵션과 같습니다. 246 | 247 | ``` 248 | $ tb -s 1 2 3 249 | ``` 250 | 251 | ### 아이템 설명 복사하기 252 | 253 | 하나 이상 아이템의 설명을 클립보드에 복사하기 위해서는 `--star`/`-s` 옵션 뒤에 타겟 task의 아이디를 적어주세요. 이 옵션은 개행 문자를 구분자로 사용해서, 붙여 넣을 때에도 명확하고 읽을 수 있는 문장을 저장합니다. 254 | 255 | ``` 256 | $ tb -y 1 2 3 257 | ``` 258 | 259 | ### Board 표시하기 260 | 261 | 아무런 옵션없이 taskbook를 작동시키면 모든 저장된 아이템들이 각각 보드에 그룹화되어 보입니다. 262 | 263 | ``` 264 | $ tb 265 | ``` 266 | 267 | ### Timeline 표시하기 268 | 269 | 모든 아이템을 timeline view로 표시하기 위해서는 `--timeline`/`-i` 옵션을 사용합니다. 270 | 271 | ``` 272 | $ tb -i 273 | ``` 274 | 275 | ### 우선순위 정하기 276 | 277 | task 를 만들 때 우선순위를 정하기 위해서는, `p:x` 문법을 task 설명에 포함해주세요. 여기에서 x는 `1`, `2`, `3` 중 하나의 정수 값입니다. 278 | 모든 task는 디폴트로 보통 우선순위인 `1` 로 생성됩니다. 279 | 280 | - `1` - 일반 우선순위 281 | - `2` - 중간 우선순위 282 | - `3` - 최고 우선순위 283 | 284 | ``` 285 | $ tb -t @coding Fix issue `#42` p:3 286 | ``` 287 | 288 | 특정 task를 생성한 다음에 우선순위를 조정하고자 할 때는, `--priority`/`-p` 을 사용합니다. 이때 타겟 task 는 @ + 해당 task id로 명시합니다. 타겟의 id와 우선순위 정도가 적힌 순서는 중요하지 않습니다. 289 | ``` 290 | $ tb -p @1 2 291 | ``` 292 | 293 | ### 아이템 옮기기 294 | 295 | 하나의 아이템을 하나이상의 board에 옮기기 위해서는 `--move`/`-m` 옵션을 사용합니다. 이때 타겟 task 는 @ + 해당 task id로 명시하고, 옮겨질 대상 board의 이름을 적습니다. 기본 `My board`는 `myboard`라는 키워드로 접근할 수 있습니다. 타겟 아이디와 board의 이름이 적힌 순서는 중요하지 않습니다. 296 | 297 | ``` 298 | $ tb -m @1 myboard reviews 299 | ``` 300 | 301 | ### 아이템 삭제하기 302 | 303 | 하나 이상의 아이템을 삭제하기 위해서는 `--delete`/`-d` 옵션 뒤에 해당하는 아이템의 id들을 적습니다. 삭제한 아이템은 자동으로 저장되어 언제든 다시 보거나 복구가능합니다. 중복된 아이디는 자동으로 필터링됩니다. 304 | ``` 305 | $ tb -d 1 2 306 | ``` 307 | 308 | ### 체크된 task 삭제하기 309 | 310 | 모든 board에서 모든 완료된 task를 종료 혹은 비우기 하고 싶을 경우, `--clear` 옵션을 사용하세요. 모든 제거된 task는 자동으로 저장되어 언제든 다시 보거나 복구가능합니다. 실수로 사용하는 경우를 막기 위해서, `--clear` 옵션은 짧은 이름이 존재하지 않습니다. 311 | 312 | ``` 313 | $ tb --clear 314 | ``` 315 | 316 | ### 아카이브를 표시하기 317 | 318 | 모든 아카이브된 아이템을 보려면, `--archive`/`-a` 옵션을 사용하세요. 모든 아카이브된 아이템은 timeline 뷰에서 생성일 기준으로 표시됩니다. 319 | 320 | ``` 321 | $ tb -a 322 | ``` 323 | 324 | ### 아이템을 복구하기 325 | 326 | 하나 이상의 아이템을 복구하기 위해서, `--restore`/`-r` 옵션 뒤에 타겟 아이템의 아이디를 적어주세요. `--archive`/`-a` 옵션을 사용하면 모든 아카이브된 아이템의 아이디를 확인 할 수 있습니다. 중복된 아이디는 자동으로 필터링됩니다. 327 | 328 | ``` 329 | $ tb -r 1 2 330 | ``` 331 | 332 | ### 아이템을 모두 표시하기 333 | 334 | 특정 속성들을 가진 아이템들을 모두 표시하고 싶을 때, `--list`/`-l` 옵션 뒤에 원하는 속성을 붙여 사용하세요. Board 이름 역시 속성으로 간주됩니다. 예를 들어, 기본 `myboard`에 포함된 모든 pending 아이템을 표시하고 싶다면, 다음과 같이 사용하세요. 335 | 336 | ``` 337 | $ tb -l myboard pending 338 | ``` 339 | 340 | 기본적으로 제공하는 속성을 확인해보세요. 341 | 342 | - `myboard` - Items that belong to `My board` 343 | - `task`, `tasks`, `todo` - Items that are tasks. 344 | - `note`, `notes` - Items that are notes. 345 | - `pending`, `unchecked`, `incomplete` - Items that are pending tasks. 346 | - `progress`, `started`, `begun` - Items that are in-progress tasks. 347 | - `done`, `checked`, `complete` - Items that complete tasks. 348 | - `star`, `starred` - Items that are starred. 349 | 350 | ### 아이템을 검색하기 351 | 352 | 하나 이상의 아이템을 검색하려면, `--find`/`-f` 옵션 뒤에 검색어를 입력하세요. 353 | 354 | ``` 355 | $ tb -f documentation 356 | ``` 357 | 358 | ## 개발 359 | 360 | 프로젝트에 기여하는 방법에 대해서는 [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md)를 읽어주세요. 361 | 362 | - 레포지토리를 포크해서 개인 머신에 복사합니다. 363 | - 로컬 환경 폴더로 이동합니다. `cd taskbook` 364 | - 필요한 프로젝트 의존성을 설치합니다. `npm install` 혹은 `yarn install` 365 | - 코드를 린트합니다. `npm test` 혹은 `yarn test` 366 | 367 | ## 관련 작업 368 | 369 | - [signale](https://github.com/klaussinani/signale) - Highly configurable logging utility 370 | - [qoa](https://github.com/klaussinani/qoa) - Minimal interactive command-line prompts 371 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Deep oceanic blue Hyper terminal theme 372 | 373 | ## 팀소개 374 | 375 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 376 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 377 | 378 | ## 라이센스 379 | 380 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 381 | -------------------------------------------------------------------------------- /docs/readme.PT-BR.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | Tarefas, quadros & notas para o habitat de linha de comando 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Descrição 20 | 21 | Utilizando uma sintaxe mínima e simples, que requere uma curva de aprendizado plana, taskbook permite à você gerenciar suas tarefas e notas através de múltiplos quadros de dentro do seu terminal. Todos os dados são salvos automaticamente no armazenamento com o intuito de prevenir corrupções, e não são compartilhados com ninguém. Items deletados são automaticamente arquivados e podem ser inspecionados ou restorados a qualquer momento. 22 | 23 | Leia este documento em: 24 | [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md). 25 | 26 | Agora você pode ajudar o processo de desenvolvimento via [GitHub Sponsors](https://github.com/sponsors/klaussinani). 27 | 28 | Visite as [orientações de contribuição](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) para mais informações sobre como traduzir este documento para outras línguas. 29 | 30 | Venha para o [Gitter](https://gitter.im/klaussinani/taskbook) ou [Twitter](https://twitter.com/klaussinani) para compartilhar seus pensamentos sobre o projeto. 31 | 32 | ## Destaques 33 | 34 | - Organize tarefas & notas em quadros 35 | - Visualize suas tarefas/notas em quadros & linha do tempo 36 | - Sistema de prioridades & favoritos 37 | - Pesquise & filtre itens 38 | - Arquive & restaure itens deletados 39 | - Leve & rápido 40 | - Dados são salvos automaticamente no armazenamento 41 | - Local de armazenamento customizável 42 | - Visão geral do progresso 43 | - Sintaxe de uso mínima & simples 44 | - Notificações de atualizações 45 | - Configurável atráves de ~/.taskbook.json 46 | - Dados são salvos em arquivos JSON no diretório ~/.taskbook/storage 47 | 48 | Ver destaques em um [quadro no taskbook](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png). 49 | 50 | ## Conteúdo 51 | 52 | - [Descrição](#descrição) 53 | - [Destaques](#destaques) 54 | - [Instalação](#instalação) 55 | - [Uso](#uso) 56 | - [Visualizações](#visualizações) 57 | - [Configuração](#configuração) 58 | - [Manual de vôo](#manual-de-vôo) 59 | - [Desenvolvimento](#desenvolvimento) 60 | - [Relacionado](#relacionados) 61 | - [Time](#time) 62 | - [Licença](#licença) 63 | 64 | ## Instalação 65 | 66 | ### Yarn 67 | 68 | ```bash 69 | yarn global add taskbook 70 | ``` 71 | 72 | ### NPM 73 | 74 | ```bash 75 | npm install --global taskbook 76 | ``` 77 | 78 | ### Snapcraft 79 | 80 | ```bash 81 | snap install taskbook 82 | snap alias taskbook tb # set alias 83 | ``` 84 | 85 | **Nota:** Devido à natureza estritamente confinada do snap, ambos os arquivos de armazanamento e configuração serão salvos sobre variável de ambiente [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) ao invés da genérica `$HOME` 86 | 87 | ## Uso 88 | 89 | ``` 90 | $ tb --help 91 | 92 | Usage 93 | $ tb [ ...] 94 | 95 | Options 96 | none Display board view 97 | --archive, -a Display archived items 98 | --begin, -b Start/pause task 99 | --check, -c Check/uncheck task 100 | --clear Delete all checked items 101 | --copy, -y Copy item description 102 | --delete, -d Delete item 103 | --edit, -e Edit item description 104 | --find, -f Search for items 105 | --help, -h Display help message 106 | --list, -l List items by attributes 107 | --move, -m Move item between boards 108 | --note, -n Create note 109 | --priority, -p Update priority of task 110 | --restore, -r Restore items from archive 111 | --star, -s Star/unstar item 112 | --task, -t Create task 113 | --timeline, -i Display timeline view 114 | --version, -v Display installed version 115 | 116 | Examples 117 | $ tb 118 | $ tb --archive 119 | $ tb --begin 2 3 120 | $ tb --check 1 2 121 | $ tb --clear 122 | $ tb --copy 1 2 3 123 | $ tb --delete 4 124 | $ tb --edit @3 Merge PR #42 125 | $ tb --find documentation 126 | $ tb --list pending coding 127 | $ tb --move @1 cooking 128 | $ tb --note @coding Mergesort worse-case O(nlogn) 129 | $ tb --priority @3 2 130 | $ tb --restore 4 131 | $ tb --star 2 132 | $ tb --task @coding @reviews Review PR #42 133 | $ tb --task @coding Improve documentation 134 | $ tb --task Make some buttercream 135 | $ tb --timeline 136 | ``` 137 | 138 | ## Visualizações 139 | 140 | ### Quadros 141 | 142 | Invocando taskbook sem nenhuma opção mostrará todos os itens salvos agrupados em seus respectivos quadros. 143 | 144 |
145 | Boards 146 |
147 | 148 | ### Linha do tempo 149 | 150 | Afim de listar todos os itens em uma linha do tempo, baseados nas datas de criação, a opção `--timeline/-i` pode ser usada. 151 | 152 |
153 | Timeline View 154 |
155 | 156 | ## Configuração 157 | 158 | Para configurar o taskbook navegue até o aquivo `~/.taskbook.json` e modifique qualquer opção para se adequar às suas preferências. Para resetas aos valores iniciais simplesmente delete este arquivo do diretório raiz do seu usuário e um novo será automaticamente criado. 159 | 160 | Abaixo estão todas as opções disponíveis e seus respectivos valores padrões. 161 | 162 | ```json 163 | { 164 | "taskbookDirectory": "~", 165 | "displayCompleteTasks": true, 166 | "displayProgressOverview": true 167 | } 168 | ``` 169 | 170 | ### Em Detalhes 171 | 172 | ##### `taskbookDirectory` 173 | 174 | - Type: `String` 175 | - Default: `~` 176 | 177 | Caminho no sistema de aquivos onde o armazenado será inicializado, ex.: `/home/username/the-cloud` ou `~/the-cloud` 178 | 179 | Se não definido, seu diretório raiz `~` será usado e taskbook será instalado em `~/.taskbook/`. 180 | 181 | ##### `displayCompleteTasks` 182 | 183 | - Type: `Boolean` 184 | - Default: `true` 185 | 186 | Mostra tarefas que foram marcadas como completadas. 187 | 188 | ##### `displayProgressOverview` 189 | 190 | - Type: `Boolean` 191 | - Default: `true` 192 | 193 | Mostra uma visualização geral do progresso abaixo da linha do tempo e dos quadros. 194 | 195 | ## Manual de vôo 196 | 197 | A seguir é apresentado um pequeno passo a passo que contém um conjunto de exemplos de como usar taskbook. 198 | 199 | No caso de você encontrar algum erro ou achar que um exemplo não está claro o suficiente e que pode ser melhorado, sinta-se livre para abrir uma [issue](https://github.com/klaussinani/taskbook/issues/new/choose) ou um [pull-reques](https://github.com/klaussinani/taskbook/compare). 200 | 201 | ### Criar Tarefa 202 | 203 | Para criar uma nova tarefa use opção `--task`/`-t` seguido da descrição da sua tarefa. 204 | 205 | ``` 206 | $ tb -t Improve documentation 207 | ``` 208 | 209 | ### Criar Nota 210 | 211 | Para criar uma nova nota use a opção `--note`/`-n` seguido do conteúdo da sua nota. 212 | 213 | ``` 214 | $ tb -n Mergesort worse-case O(nlogn) 215 | ``` 216 | 217 | ### Criar Quadro 218 | 219 | Quadros são automaticamente inicializados quando uma nova tarefa ou nota é criada. 220 | 221 | Para criar um ou mais quadros, inclua seus nomes prefixados por um `@` na descrição do item a ser criado. Como resultado, o item criado pertencerá a todos os quadros especificados. Por padrão, itens que não contém nenhum quadro especificado são automaticamente adicionados no quadro geral: `My board`. 222 | 223 | ``` 224 | $ tb -t @coding @docs Update contributing guidelines 225 | ``` 226 | 227 | ### Marcar Tarefa 228 | 229 | Para marcar uma tarefa como completa/incompleta, use a opção `--check`/`-c` seguido dos ids das tarefas que deseja marcar. Note que esta opção irá atualizar para o oposto do status de `complete` atual das tarefas especificadas, portanto marcando uma tarefa completada irá listá-la como pendente, e uma tarefa pendente como completada. Ids duplicados são automaticamente filtrados. 230 | 231 | ``` 232 | $ tb -c 1 3 233 | ``` 234 | 235 | ### Começar Tarefa 236 | 237 | Para marcar uma tarefa como iniciada/pausada use a opção `--begin`/`-b` seguido dos ids das tarefas desejadas. A funcionalidade desta opção é a mesma da opção `--check` descrita acima. 238 | 239 | ``` 240 | $ tb -b 2 3 241 | ``` 242 | 243 | ### Favoritar Item 244 | 245 | Para marcar um ou mais itens como favorito, use a opção `--star`/`-s` seguido dos ids dos itens que deseja favoritar. A funcionalidade desta opção é a mesma da opção `--check` descrita acima. 246 | 247 | ``` 248 | $ tb -s 1 2 3 249 | ``` 250 | 251 | ### Copiar Descrição do Item 252 | 253 | Para copiar para o clipboard do seu sistema a descrição de um ou mais itens, use a opção `--copy`/`-y` seguido dos ids dos itens desejados. Note que esta opção irá incluir também novas linhas como separador para cada par de descrições adjacentes copiadas, portanto resultando em uma sentença clara e legível. 254 | 255 | ``` 256 | $ tb -y 1 2 3 257 | ``` 258 | 259 | ### Mostrar Quadros 260 | 261 | Chamando taskbook sem passar nenhuma opção mostrará todos os itens salvos agrupados em seus respectivos quadros. 262 | 263 | ``` 264 | $ tb 265 | ``` 266 | 267 | ### Mostrar Linha do Tempo 268 | 269 | Para mostrar todos os itens em uma linha do tempo, baseados na sua data de criação, pode ser usada a opção `--timeline`/`-i`. 270 | 271 | ``` 272 | $ tb -i 273 | ``` 274 | 275 | ### Definir Prioridade 276 | 277 | Para definir o nível de prioridade de uma tarefa ao criá-la, inclua a sintaxe `p:x` em sua descrição, onde `x` pode ser um número inteiro de valor `1`, `2` ou `3`. Note que todas as tarefas são criadas por padrão com prioridade normal - `1`. 278 | 279 | - `1` - Prioridade normal 280 | - `2` - Prioridade média 281 | - `3` - Prioridade alta 282 | 283 | ``` 284 | $ tb -t @coding Fix issue `#42` p:3 285 | ``` 286 | 287 | Para atualizar o nível de prioridade de uma tarefa específica após sua criação, use a opção `--priority`/`-p` junto com o id da tarefa prefixado com um `@` e um número inteiro de valor `1`, `2` ou `3`. Note que a ordem em que o id da tarefa e o nível de prioridade são colocados não são significantes. 288 | 289 | ``` 290 | $ tb -p @1 2 291 | ``` 292 | 293 | ### Mover Item 294 | 295 | Para mover um item para um ou mais quadros, use a opção `--move`/`-m`, seguido dos ids dos itens prefixado com um `@` e o nome dos quadros de destino. O quadro padrão `My board` pode ser acessado pela palavra-chave `myboard`. A ordem em que os ids do itens e os nomes dos quadros são colocados não são significantes. 296 | 297 | ``` 298 | $ tb -m @1 myboard reviews 299 | ``` 300 | 301 | ### Deletar Item 302 | 303 | Para deletar um ou mais itens, use a opção `--delete`/`-d` seguido dos ids dos itens que deseja deletar. Note que itens deletados são automaticamente arquivados e podem ser inspecionados ou restaurados a qualquer momento. Ids duplicados são automaticamente filtrados. 304 | 305 | ``` 306 | $ tb -d 1 2 307 | ``` 308 | 309 | ### Deletar Tarefas Completadas 310 | 311 | Para deletar todas as tarefas completadas de uma vez em todos os quadros, use a opção `--clear`. Note que itens deletados são automaticamente arquivados e podem ser inspecionados ou restaurados a qualquer momento. Esta opção não tem nenhum atalho afim de evitar possíveis acidentes de uso. 312 | 313 | ``` 314 | $ tb --clear 315 | ``` 316 | 317 | ### Mostrar Arquivo 318 | 319 | Para mostrar todos os itens arquivados, use a opção `--archive`/`-a`. Note que todos os itens arquivados são mostrados em uma linha do tempo, baseados em sua data de criação. 320 | 321 | ``` 322 | $ tb -a 323 | ``` 324 | 325 | ### Restaurar Itens 326 | 327 | Para restaurar um ou mais itens, use a opção `--restore`/`-r` seguido dos ids dos itens que deseja restaurar. Note que os ids dos itens arquivados podem ser vistos invocando a opção `--archive`/`-a`. Ids duplicados são automaticamente filtrados. 328 | 329 | ``` 330 | $ tb -r 1 2 331 | ``` 332 | 333 | ### Listar Itens 334 | 335 | Para listar um grupo de itens onde cada item cumpre com um conjunto de atributos especĩficos, use a opção `--list`/`-l` seguido dos atributos desejados. Nomes de quadros com características dos itens podem ser considerados atributos de listagem válidos. Por exemplo, para listar todos os itens que pertencem ao quadro padrão `myboard` e são tarefas pendentes, o comando a seguir pode ser usado: 336 | 337 | ``` 338 | $ tb -l myboard pending 339 | ``` 340 | 341 | Os atributos de listagem padrão suportados, junto com seus respectivos atalhos, são os seguintes: 342 | 343 | - `myboard` - Itens que pertencem ao quadro `My board`. 344 | - `task`, `tasks`, `todo` - Itens que são tarefas. 345 | - `note`, `notes` - Itens que são notas. 346 | - `pending`, `unchecked`, `incomplete` - Itens que são tarefas pendentes. 347 | - `progress`, `started`, `begun` - Itens que são tarefas em progresso. 348 | - `done`, `checked`, `complete` - Itens que são tarefas completadas. 349 | - `star`, `starred` - Itens favoritados 350 | 351 | ### Pesquisar Itens 352 | 353 | Para pesquisar por um ou mais itens, use a opção `--find`/`-f`, seguido dos termos que deseja pesquisar. 354 | 355 | ``` 356 | $ tb -f documentation 357 | ``` 358 | 359 | ## Desenvolvimento 360 | 361 | Para mais informações sobre como contribuir com o projeto, por favor leia o [guia de contribução](https://github.com/klaussinani/taskbook/blob/master/contributing.md). 362 | 363 | - Fork o repositório e faça um clone para sua máquina 364 | - Navegue até o local do clone: `cd taskbook` 365 | - Instale as dependências do projeto: `npm install` or `yarn install` 366 | - Teste o código em busca de erros: `npm test` or `yarn test` 367 | 368 | ## Relacionados 369 | 370 | - [signale](https://github.com/klaussinani/signale) - Highly configurable logging utility 371 | - [qoa](https://github.com/klaussinani/qoa) - Minimal interactive command-line prompts 372 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Deep oceanic blue Hyper terminal theme 373 | 374 | ## Time 375 | 376 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 377 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 378 | 379 | ## Licença 380 | 381 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 382 | -------------------------------------------------------------------------------- /docs/readme.RU.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | 📓 Задачи, разделы и заметки для коммандной строки 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Описание 20 | 21 | Используя простой и минимальный синтаксис, taskbook позволяет эффективно управлять задачами и заметками из разных разделов в терминале. Все данные атомарно записываются в хранилище для предотвращения повреждений и никому и никуда не передаются. Удаленные записи автоматически сохраняются в архиве и могут быть просмотрены, либо восстановлены в любой момент. 22 | 23 | Можете прочитать этот документ на [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [English](https://github.com/klaussinani/taskbook/blob/master/readme.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md), [日本語](https://github.com/klaussinani/taskbook/blob/master/docs/readme.JP.md), [한국어](https://github.com/klaussinani/taskbook/blob/master/docs/readme.KR.md). 24 | 25 | 26 | Зайдите на [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) для того, чтобы больше узнать о том, как перевести этот документ на другие языки. 27 | 28 | Присоединяйтесь к [Gitter](https://gitter.im/klaussinani/taskbook), или [Twitter](https://twitter.com/klaussinani), чтобы поделиться своим мнением об этом проекте. 29 | 30 | ## Особенности 31 | 32 | - Организация задач и заметок в разделах задач 33 | - Раздел задач и просмотр хронологии 34 | - Механизм для указания приоритетности и добавления в избранное 35 | - Поиск и фильтрация записей 36 | - Архивация и восстановление удаленных записей 37 | - Легкий и быстрый 38 | - Данные автоматически записываются в хранилище 39 | - Выбор места хранилища 40 | - Просмотр прогресса 41 | - Простое и минимальное использование синтаксиса 42 | - Уведомления об обновлениях 43 | - Конфигурируемый через `~/.taskbook.json` 44 | - Данные хранятся в формате JSON в `~/.taskbook/storage` 45 | 46 | Просморите особенности в [разделе taskbook](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png). 47 | 48 | ## Содержание 49 | 50 | - [Описание](#description) 51 | - [Особенности](#highlights) 52 | - [Установка](#install) 53 | - [Использование](#usage) 54 | - [Обзоры](#views) 55 | - [Конфигурация](#configuration) 56 | - [Руководство по полету](#flight-manual) 57 | - [Разработка](#development) 58 | - [Относится](#related) 59 | - [Команда](#team) 60 | - [Лицензия](#license) 61 | 62 | ## Установка 63 | 64 | ```bash 65 | npm install --global taskbook 66 | ``` 67 | 68 | ## Использование 69 | 70 | ``` 71 | $ tb --help 72 | 73 | Использование 74 | $ tb [ ...] 75 | 76 | Опции 77 | none Показать разделы 78 | --task, -t Создать задачу 79 | --note, -n Создать заметку 80 | --timeline, -i Отобразить хронологию 81 | --delete, -d Удаление записи 82 | --check, -c Поставить/Отменить метку на задаче 83 | --star, -s Добавить/Убрать запись в избранное 84 | --list, -l Показать элементы списком по атрибутам 85 | --find, -f Поиск по записям 86 | --edit, -e Редактировать описание записи 87 | --move, -m Переместить запись между разделами 88 | --priority, -p Обновить приоритет задачи 89 | --archive, -a Отобразить архивированные записи 90 | --restore, -r Восстановить записи из архива 91 | --help, -h Показать текст помощи 92 | --version, -v Показать установленную версию 93 | 94 | Примеры 95 | $ tb 96 | $ tb --task Сделать сэндвич 97 | $ tb --task @кодинг Улучшить документацию 98 | $ tb --task @кодинг @обзоры Обзор PR #42 99 | $ tb --note @кодинг Mergesort худший случай O(nlogn) 100 | $ tb --check 1 2 101 | $ tb --delete 4 102 | $ tb --star 2 103 | $ tb --priority @3 2 104 | $ tb --timeline 105 | $ tb --edit @3 Merge PR #42 106 | $ tb --move @1 готовка 107 | $ tb --find документация 108 | $ tb --list pending кодинг 109 | $ tb --archive 110 | $ tb --restore 4 111 | ``` 112 | 113 | ## Обзоры 114 | 115 | ### Обзор раздела 116 | 117 | Запуск taskbook без каких-либо опций покажет все сохраненные записи, сгрупированные по их соответвующим разделам. 118 | 119 |
120 | Boards 121 |
122 | 123 | ### Обзор хронологии 124 | 125 | Для просмотра всех записей в хронологическом порядке (по дате создания), может быть использована опция `--timeline`/`-i`. 126 | 127 |
128 | Timeline View 129 |
130 | 131 | ## Конфигурация 132 | 133 | Для настройки taskbook, откройте файл `~/.taskbook.json` и измените любые опции под себя. Для восстановления настроек по умолчанию, просто удалите конфигурацинный файл в домашней директории. 134 | 135 | Ниже показаны все доступные опции и их соответвствующие значения по умолчанию. 136 | 137 | ```json 138 | { 139 | "taskbookDirectory": "", 140 | "displayCompleteTasks": true, 141 | "displayProgressOverview": true 142 | } 143 | ``` 144 | 145 | ### Детально 146 | 147 | ##### `taskbookDirectory` 148 | 149 | - Тип: `String` 150 | - По умолчанию: `~` 151 | 152 | Полный системный путь, где хранилище будет создано и т.д; `/home/username/the-cloud` 153 | 154 | Если оставите неопределенным, домашний каталог `~` будет использован и taskbook будет настроен внутри `~/.taskbook/`. 155 | 156 | ##### `displayCompleteTasks` 157 | 158 | - Тип: `Boolean` 159 | - По умолчанию: `true` 160 | 161 | Показ задач, которые завершены 162 | 163 | ##### `displayProgressOverview` 164 | 165 | - Тип: `Boolean` 166 | - По умолчанию: `true` 167 | 168 | Показ прогресса ниже хронологии и обзора разделов. 169 | 170 | ## Руководство по полетам 171 | 172 | Ниже приведено небольшое руководство с примерами по использованию taskbook. 173 | В случае, если вы обнаружили ошибку или считаете, что пример недостаточно понятен и может быть объяснен лучше, не стесняйтесь заводить [issue](https://github.com/klaussinani/taskbook/issues/new/choose), либо [pull request](https://github.com/klaussinani/taskbook/compare). 174 | 175 | ### Создать задачу 176 | 177 | Для создания новой задачи используйте опцию `--task`/`-t` следуя с описанием вашей задачи. 178 | 179 | ``` 180 | $ tb -t Улучшить документацию 181 | ``` 182 | 183 | ### Создать заметку 184 | 185 | Для создания новой заметки используйте опцию `--note`/`-n` с последующим описанием вашей заметки. 186 | 187 | ``` 188 | $ tb -n Mergesort худший случай O(nlogn) 189 | ``` 190 | 191 | ### Создать раздел 192 | 193 | Разделы создаются автоматически при создании новой задачи, либо новой заметки. Для создания одного и более разделов, укажите их названия с префиксом `@` в описании записей, которые создаются. В конечном результате, новая запись будет создана во всех указанных разделах. Все записи, у которых не указан раздел, автоматически добавляются в раздел по умолчанию; `My Board`. 194 | 195 | ``` 196 | $ tb -t @кодинг @доки Обновление руководста по контрибуции 197 | ``` 198 | 199 | ### Пометить задачу 200 | 201 | Чтобы пометить задачу как выполненная/невыполненная, используйте опцию `--check`/`-c` c последующими id ваших задач. Заметьте, что данная опция обновит статус `complete` задач на противоположный, поэтому пометка завершенной задачи будет отображатся как в процессе, а та задача, которая в процессе на завершенную. Дублирующиеся id автоматически отфильтровываются. 202 | 203 | ``` 204 | $ tb -c 1 3 205 | ``` 206 | 207 | ### Добавить запись в избранные 208 | 209 | Чтобы отметить одну и более задачи, как избранные, используйте опцию `--star`/`-s` с последующими id выбранных записей. Функциональность данной опции такая же, как у опции `--check` описаной выше. 210 | 211 | ``` 212 | $ tb -s 1 2 3 213 | ``` 214 | 215 | ### Отображение разделов 216 | 217 | Запуск taskbook без опций отобразит все сохраненные записи, сгруппированные по разделам. 218 | 219 | ``` 220 | $ tb 221 | ``` 222 | 223 | ### Отображение хронологии 224 | 225 | Для отображения всех записей в хронологическом порядке, основанное на дате создания, может быть использована опция `--timeline`/`-i`. 226 | 227 | ``` 228 | $ tb -i 229 | ``` 230 | 231 | ### Назначение приоритета 232 | 233 | Чтобы назначить приоритет для задачи по время создания, добавьте синтакс `p:x`в описании задачи, где `x` может быть числом `1`, `2` или `3`. Заметьте, что все задачи по умолчанию создаются с нормальным приоритетом - `1`. 234 | 235 | - `1` - Нормальный приоритет 236 | - `2` - Средний приоритет 237 | - `3` - Высокий приоритет 238 | 239 | ``` 240 | $ tb -t @кодинг Исправить проблему `#42` p:3 241 | ``` 242 | 243 | Чтобы обновить приоритет определенной задачи после создания, используйте опцию `--priority`/`-p` вместе с id задачи c префиком `@` и числом `1`, `2` или `3`. Заметьте, что порядок указания id задачи и приоритета не важен. 244 | 245 | ``` 246 | $ tb -p @1 2 247 | ``` 248 | 249 | ### Перемещение записи 250 | 251 | Для того, чтобы переместить записи в один или более разделов, необходимо использовать опцию `--move`/`-m` , с последующим id записи с префиксом @ и названием разделов, в которые вы хотите ее перенести. Раздел по умолчанию `My board` обозначается с помощью ключевого слова `myboard`. Порядок указания id задачи и названия разделов в команде не важен. 252 | 253 | ``` 254 | $ tb -m @1 myboard отзывы 255 | ``` 256 | 257 | ### Удаление записи 258 | 259 | Для удаления одной и более записей используйте опцию `--delete`/`-d` с последующим id записей. Заметьте, что удаленные записи автоматически архивируются и могут быть просмотрены, либо восстановлены в любой момент. Дублирующиеся id автоматически отфильтровываются. 260 | 261 | ``` 262 | $ tb -d 1 2 263 | ``` 264 | 265 | ### Отображение архива 266 | 267 | Для отображения архивированных записей используйте опцию `--archive`/`-a`. Заметьте, что все архивированные записи будут отображаться в хронологическом порядке по дате создания. 268 | 269 | ``` 270 | $ tb -a 271 | ``` 272 | 273 | ### Восстановление записей 274 | 275 | Для восстановления одной и более записей используйте опцию `--restore`/`-r` с последующим id записей. Заметьте, что id архивированных записей могут быть получены при запуске с опцией `--archive`/`-a`. Дублирующиеся id автоматически отфильтровываются. 276 | 277 | ``` 278 | $ tb -r 1 2 279 | ``` 280 | 281 | ### Вывести записи списком 282 | 283 | Чтобы вывести группу записей списком, где каждая запись соответствует указанным атрибутам, используйте опцию `--list`/`-l` вместе с необходимыми атрибутами. Названия разделов вместе со статусом записи могут использоваться в качестве атрибутов. Для примера отображения записей списком, которые относятся к разделу по умолчанию `myboard` и имеют статус `pending` (в ожидании), следующая команда может быть использована; 284 | 285 | ``` 286 | $ tb -l myboard pending 287 | ``` 288 | 289 | Ниже приведены поддерживаемые по-умолчанию атрибуты списка вместе с их псевдонимами; 290 | 291 | - `myboard` - Записи, которые принадлежат разделу `My board` 292 | - `task`, `tasks`, `todo` - Записи, которые являются задачами. 293 | - `note`, `notes` - Записи, которые являются заметками. 294 | - `pending`, `unchecked`, `incomplete` - Записи, которые находятся в ожидании. 295 | - `done`, `checked`, `complete` - Записи, которые являются завершенными. 296 | - `star`, `starred` - Записи, добавленные в избранные. 297 | 298 | ### Поиск записей 299 | 300 | Для поиска одной и более записей используйте опцию `--find`/`-f`, с последующим словом для поиска. 301 | 302 | ``` 303 | $ tb -f документация 304 | ``` 305 | 306 | ## Разработка 307 | 308 | Для большей информации о том, как можно способствовать этому проекту, пожалуйста, прочитайте [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md). 309 | 310 | - Форкните данный репозиторий и склонируйте на вашу машину 311 | - Перейдите в ваш склонированный проект: `cd taskbook` 312 | - Установите зависимости проекта: `npm install` либо `yarn install` 313 | - Проверьте код на ошибки: `npm test` либо `yarn test` 314 | 315 | ## Относится 316 | 317 | - [chalk](https://github.com/chalk/chalk) - Стилизация строк в терминале 318 | - [signale](https://github.com/klaussinani/signale) - Автономный консольный логгер 319 | 320 | ## Команда 321 | 322 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 323 | 324 | ## Лицензия 325 | 326 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 327 | -------------------------------------------------------------------------------- /docs/readme.TR.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | Komut satırı ortamı için görevler, panolar ve notlar 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 |

14 | 15 | Build Status 16 | 17 |

18 | 19 | ## Tanım 20 | 21 | Düz bir öğrenme eğrisi gerektiren basit ve minimum kullanım sözdizimini kullanan görev kitabı, terminalinizin içinden birden fazla panodaki görevlerinizi ve notlarınızı etkili bir şekilde yönetmenize olanak tanır. Bozulmaların önlenmesi amacıyla tüm veriler atomik olarak depoya yazılır ve hiçbir kimseyle veya hiçbir şeyle paylaşılmaz. Silinen öğeler otomatik olarak arşivlenir ve her an incelenebilir veya geri yüklenebilir. 22 | 23 | Bu belgeyi şurada okuyun: 24 | [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md), [日本語](https://github.com/klaussinani/taskbook/blob/master/docs/readme.JP.md), [한국어](https://github.com/klaussinani/taskbook/blob/master/docs/readme.KR.md), [Spanish](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ES.md), [Bulgarian](https://github.com/klaussinani/taskbook/blob/master/docs/readme.BG.md), [Türkçe](https://github.com/klaussinani/taskbook/blob/master/docs/readme.TR.md). 25 | 26 | Artık geliştirme sürecini şu şekilde destekleyebilirsiniz: [GitHub Sponsors](https://github.com/sponsors/klaussinani). 27 | 28 | Bu belgenin daha fazla dile nasıl çevrileceği hakkında daha fazla bilgi edinmek için [Katkıda bulunma yönergelerini](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) ziyaret edin. 29 | 30 | Proje hakkındaki düşüncelerinizi paylaşmak için [Gitter](https://gitter.im/klaussinani/taskbook) veya [Twitter](https://twitter.com/klaussinani)'a takip edin. 31 | 32 | ## Öne Çıkanlar 33 | 34 | - Görevleri ve notları panolara düzenleyin 35 | - Pano ve zaman çizelgesi görünümleri 36 | - Öncelik ve favori mekanizmalar 37 | - Öğeleri arayın ve filtreleyin 38 | - Silinen öğeleri arşivleyin ve geri yükleyin 39 | - Hafif ve hızlı 40 | - Veriler atomik olarak depoya yazılır 41 | - Özel depolama konumu 42 | - İlerlemeye genel bakış 43 | - Basit ve minimum kullanım sözdizimi 44 | - Bildirimleri güncelle 45 | - Şununla yapılandırılabilir: `~/.taskbook.json` 46 | - JSON dosyasında saklanan veriler `~/.taskbook/storage` 47 | 48 | [Görev defteri panosundaki](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png) öne çıkanları görüntüleyin. 49 | 50 | ## İçindekiler 51 | 52 | - [Tanım](#description) 53 | - [Öne Çıkanlar](#highlights) 54 | - [Kurulum](#install) 55 | - [Kullanım](#usage) 56 | - [Görüntüleme](#views) 57 | - [Yapılandırma](#configuration) 58 | - [Uçuş Kılavuzu](#flight-manual) 59 | - [Geliştirme](#development) 60 | - [İlgili](#related) 61 | - [Takım](#team) 62 | - [Lisans](#license) 63 | 64 | ## Kurulum 65 | 66 | ### Yarn 67 | 68 | ```bash 69 | yarn global add taskbook 70 | ``` 71 | 72 | ### NPM 73 | 74 | ```bash 75 | npm install --global taskbook 76 | ``` 77 | 78 | ### Snapcraft 79 | 80 | ```bash 81 | snap install taskbook 82 | snap alias taskbook tb # takma ad belirle 83 | ``` 84 | 85 | **Note:** Snap'in kesinlikle sınırlı doğası nedeniyle, hem depolama hem de yapılandırma dosyaları genel `$HOME` yerine [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) ortam değişkeni altına kaydedilecektir. 86 | 87 | ## Kullanım 88 | 89 | ``` 90 | $ tb --help 91 | 92 | Kullanım 93 | $ tb [ ...] 94 | 95 | Seçenekler 96 | none Ekran panosu görünümü 97 | --archive, -a Arşivlenen öğeleri görüntüle 98 | --begin, -b Görevi başlat/duraklat 99 | --check, -c Görevi işaretleyin/işaretini kaldırın 100 | --clear İşaretli tüm öğeleri sil 101 | --copy, -y Öğe açıklamasını kopyala 102 | --delete, -d Öğeyi silmek 103 | --edit, -e Öğe açıklamasını düzenle 104 | --find, -f Öğeleri ara 105 | --help, -h Yardım mesajını görüntüle 106 | --list, -l Öğeleri özniteliklere göre listeleme 107 | --move, -m Öğeyi panolar arasında taşı 108 | --note, -n Not oluştur 109 | --priority, -p Görevin önceliğini güncelle 110 | --restore, -r Öğeleri arşivden geri yükle 111 | --star, -s Öğeye yıldız ekleme/yıldızı kaldırma 112 | --task, -t Görev oluştur 113 | --timeline, -i Zaman çizelgesi görünümünü görüntüle 114 | --version, -v Yüklü sürümü görüntüle 115 | 116 | Örnekler 117 | $ tb 118 | $ tb --archive 119 | $ tb --begin 2 3 120 | $ tb --check 1 2 121 | $ tb --clear 122 | $ tb --copy 1 2 3 123 | $ tb --delete 4 124 | $ tb --edit @3 Merge PR #42 125 | $ tb --find documentation 126 | $ tb --list pending coding 127 | $ tb --move @1 cooking 128 | $ tb --note @coding Mergesort worse-case O(nlogn) 129 | $ tb --priority @3 2 130 | $ tb --restore 4 131 | $ tb --star 2 132 | $ tb --task @coding @reviews Review PR #42 133 | $ tb --task @coding Improve documentation 134 | $ tb --task Make some buttercream 135 | $ tb --timeline 136 | ``` 137 | 138 | ## Görüntüleme 139 | 140 | ### Pano Görünümü 141 | 142 | Görev kitabını herhangi bir seçenek olmadan çağırmak, kayıtlı tüm öğeleri ilgili panolarda gruplandırılmış olarak görüntüleyecektir. 143 | 144 |
145 | Panolar 146 |
147 | 148 | ### Zaman Çizelgesi Görünümü 149 | 150 | Tüm öğeleri, oluşturulma tarihlerine göre zaman çizelgesi görünümünde görüntülemek için `--timeline` / `-i` seçeneği kullanılabilir. 151 | 152 |
153 | Zaman Çizelgesi Görünümü 154 |
155 | 156 | ## Yapılandırma 157 | 158 | Görev kitabını yapılandırmak için "~/.taskbook.json" dosyasına gidin ve seçeneklerden herhangi birini kendi tercihinize uyacak şekilde değiştirin. Varsayılan değerlere sıfırlamak için yapılandırma dosyasını ana dizininizden silmeniz yeterlidir. 159 | 160 | Aşağıda mevcut tüm seçenekler ilgili varsayılan değerleriyle birlikte gösterilmektedir. 161 | 162 | ```json 163 | { 164 | "taskbookDirectory": "~", 165 | "displayCompleteTasks": true, 166 | "displayProgressOverview": true 167 | } 168 | ``` 169 | 170 | ### Detay 171 | 172 | ##### `taskbookDirectory` 173 | 174 | - Type: `String` 175 | - Default: `~` 176 | 177 | Depolamanın başlatılacağı dosya sistemi yolu, yani: `/home/kullanici_adi/the-cloud` veya `~/the-cloud` 178 | 179 | Tanımsız bırakılırsa `~` ana dizini kullanılacak ve görev kitabı `~/.taskbook/` altında ayarlanacaktır. 180 | 181 | ##### `displayCompleteTasks` 182 | 183 | - Type: `Boolean` 184 | - Default: `true` 185 | 186 | Tamamlandı olarak işaretlenen görevleri görüntüleyin. 187 | 188 | ##### `displayProgressOverview` 189 | 190 | - Type: `Boolean` 191 | - Default: `true` 192 | 193 | Zaman çizelgesi ve pano görünümlerinin altında ilerlemeye genel bakışı görüntüleyin. 194 | 195 | ## Uçuş Kılavuzu 196 | 197 | Aşağıda, görev kitabının nasıl kullanılacağına ilişkin bir dizi örnek içeren küçük bir kılavuz bulunmaktadır. 198 | Bir hata fark ettiyseniz veya örneğin yeterince açık olmadığını ve daha da geliştirilmesi gerektiğini düşünüyorsanız lütfen bir e-posta adresi açmaktan çekinmeyin. 199 | 200 | - [Issue](https://github.com/klaussinani/taskbook/issues/new/choose) 201 | - [Pull Request](https://github.com/klaussinani/taskbook/compare) 202 | 203 | ### Görev Oluştur 204 | 205 | Yeni bir görev oluşturmak için `--task` / `-t` seçeneğini kullanın ve hemen ardından görevinizin açıklamasını ekleyin. 206 | 207 | ``` 208 | $ tb -t Dokümantasyonu geliştirin 209 | ``` 210 | 211 | ### Not Oluştur 212 | 213 | Yeni bir not oluşturmak için notunuzun gövdesini hemen takip edecek şekilde `--note` / `-n` seçeneğini kullanın. 214 | 215 | ``` 216 | $ tb -n Mergesort worse-case O(nlogn) 217 | ``` 218 | 219 | ### Pano Oluştur 220 | 221 | Yeni bir görev veya not oluşturulurken panolar otomatik olarak başlatılır. Bir veya daha fazla pano oluşturmak için, oluşturulacak öğenin açıklamasına bu panoların adlarını "@" simgesinin önüne ekleyerek ekleyin. Sonuç olarak yeni oluşturulan öğe verilen tüm panolara ait olacaktır. Varsayılan olarak, açıklamasında herhangi bir pano adı bulunmayan öğeler otomatik olarak genel amaca eklenir. `My Board` 222 | 223 | ``` 224 | $ tb -t @coding @docs Update contributing guidelines 225 | ``` 226 | 227 | ### Görevi Kontrol Et 228 | 229 | Bir görevi tamamlandı/tamamlanmadı olarak işaretlemek için `--check` / `-c` seçeneğini ve ardından hedef görevlerin kimliklerini kullanın. Seçeneğin, verilen görevlerin "tamamlandı" durumuna karşıt olarak güncelleneceğini, dolayısıyla tamamlanmış bir görevin kontrol edilmesinin onu beklemede, bekleyen bir görevi de tamamlanmış olarak göstereceğini unutmayın. Yinelenen kimlikler otomatik olarak filtrelenir. 230 | 231 | ``` 232 | $ tb -c 1 3 233 | ``` 234 | 235 | ### Görevi Başlat 236 | 237 | Bir görevi başlatıldı/duraklatıldı olarak işaretlemek için `--begin` / `-b` seçeneğini ve ardından hedef görevlerin kimliklerini kullanın. Bu seçeneğin işlevi yukarıda açıklanan '--check' seçeneğiyle aynıdır. 238 | 239 | ``` 240 | $ tb -b 2 3 241 | ``` 242 | 243 | ### Yıldızlı Öğe 244 | 245 | Bir veya daha fazla öğeyi favori olarak işaretlemek için `--star` / `-s` seçeneğini ve ardından hedef öğelerin kimliklerini kullanın. Bu seçeneğin işlevi yukarıda açıklanan `--check` seçeneğiyle aynıdır. 246 | 247 | ``` 248 | $ tb -s 1 2 3 249 | ``` 250 | 251 | ### Öğe Açıklamasını Kopyala 252 | 253 | Bir veya daha fazla öğenin açıklamasını sisteminizin panosuna kopyalamak için `--copy` / `-y` seçeneğini ve ardından hedef öğelerin kimliklerini kullanın. Bu seçeneğin, her bir bitişik kopyalanan açıklama çiftine ayırıcı olarak yeni satır karakterini de ekleyeceğini, böylece yapıştırıldığında net ve okunabilir bir cümle yığını elde edileceğini unutmayın. 254 | 255 | ``` 256 | $ tb -y 1 2 3 257 | ``` 258 | 259 | ### Ekran Panoları 260 | 261 | Görev kitabını herhangi bir seçenek olmadan çağırmak, kayıtlı öğelerin tamamını ilgili panolarda gruplandırarak görüntüleyecektir. 262 | 263 | ``` 264 | $ tb 265 | ``` 266 | 267 | ### Zaman Çizelgesini Görüntüle 268 | 269 | Tüm öğeleri, oluşturulma tarihlerine göre zaman çizelgesi görünümünde görüntülemek için `--timeline` / `-i` seçeneği kullanılabilir. 270 | 271 | ``` 272 | $ tb -i 273 | ``` 274 | 275 | ### Önceliği Ayarla 276 | 277 | Bir görevi başlatırken bir öncelik düzeyi ayarlamak için, görevin açıklamasına `p:x` sözdizimini ekleyin; burada x, `1`, `2` veya `3` değerinde bir tamsayı olabilir. Varsayılan olarak tüm görevlerin normal bir öncelikle `1` oluşturulduğunu unutmayın. 278 | 279 | 280 | - `1` - Normal öncelik 281 | - `2` - Orta öncelik 282 | - `3` - Yüksek öncelik 283 | 284 | ``` 285 | $ tb -t @coding Fix issue `#42` p:3 286 | ``` 287 | 288 | Belirli bir görevin oluşturulduktan sonra öncelik düzeyini güncellemek için, hedef görevin kimliğiyle birlikte `--priority` / `-p` seçeneğini, önüne `@` sembolü ve `1` değerinde bir tamsayı kullanın. , `2` veya `3`. Hedef kimliğinin ve öncelik düzeyinin yerleştirildiği sıranın önemli olmadığını unutmayın. 289 | 290 | ``` 291 | $ tb -p @1 2 292 | ``` 293 | 294 | ### Öğeyi Taşı 295 | 296 | To move an item to one or more boards, use the `--move` / `-m` option, followed by the target item id, prefixed by the `@` symbol, and the name of the destination boards. The default `My board` can be accessed through the `myboard` keyword. The order in which the target id and board names are placed is not significant. 297 | 298 | ``` 299 | $ tb -m @1 myboard reviews 300 | ``` 301 | 302 | ### Öğeyi Sil 303 | 304 | Bir veya daha fazla öğeyi silmek için `--delete` / `-d` seçeneklerini ve ardından hedef öğelerin kimliklerini kullanın. Silinen öğelerin otomatik olarak arşivlendiğini ve her an incelenebileceğini veya geri yüklenebileceğini unutmayın. Yinelenen kimlikler otomatik olarak filtrelenir. 305 | 306 | ``` 307 | $ tb -d 1 2 308 | ``` 309 | 310 | ### İşaretli Görevleri Sil 311 | 312 | Tüm panolardaki tamamlanmış görevlerin tamamını tek seferde silmek/temizlemek için `--clear` seçeneğini kullanın. Silinen tüm görevlerin otomatik olarak arşivlendiğini ve her an incelenebileceğini veya geri yüklenebileceğini unutmayın. Olası kazara kullanımı engellemek için, `--clear` seçeneğinin daha kısa bir takma adı yoktur. 313 | 314 | ``` 315 | $ tb --clear 316 | ``` 317 | 318 | ### Arşivi Görüntüle 319 | 320 | Arşivlenen tüm öğeleri görüntülemek için `--archive` / `-a` seçeneğini kullanın. Arşivlenen tüm öğelerin, oluşturulma tarihlerine göre zaman çizelgesi görünümünde görüntülendiğini unutmayın. 321 | 322 | ``` 323 | $ tb -a 324 | ``` 325 | 326 | ### Öğeleri Geri Yükle 327 | 328 | Bir veya daha fazla öğeyi geri yüklemek için `--restore` / `-r` seçeneğini ve ardından hedef öğelerin kimliklerini kullanın. `--archive` / `-a` seçeneği çağrıldığında arşivlenen tüm öğelerin kimliklerinin görülebileceğini unutmayın. Yinelenen kimlikler otomatik olarak filtrelenir. 329 | 330 | ``` 331 | $ tb -r 1 2 332 | ``` 333 | 334 | ### Öğeleri Listele 335 | 336 | Her bir öğenin belirli bir nitelik kümesiyle uyumlu olduğu bir öğe grubunu listelemek için `--list` / `-l` seçeneğini ve ardından istenen nitelikleri kullanın. Öğe özellikleriyle birlikte pano adları geçerli listeleme özellikleri olarak kabul edilebilir. Örneğin, varsayılan `myboard`'a ait olan ve bekleyen görevler olan tüm öğeleri listelemek için aşağıdakiler kullanılabilir; 337 | 338 | ``` 339 | $ tb -l myboard pending 340 | ``` 341 | 342 | Varsayılan olarak desteklenen listeleme özellikleri, ilgili takma adlarıyla birlikte aşağıdaki gibidir; 343 | 344 | - `myboard` - `My board`'a ait öğeler. 345 | - `task`, `tasks`, `todo` - Görev olan öğeler. 346 | - `note`, `notes` - Not olan öğeler. 347 | - `pending`, `unchecked`, `incomplete` - Görev bekleyen öğeler. 348 | - `progress`, `started`, `begun` - Devam eden görevler olan öğeler. 349 | - `done`, `checked`, `complete` - Görevleri tamamlayan öğeler. 350 | - `star`, `starred` - Yıldızlı öğeler. 351 | 352 | ### Öğeleri Ara 353 | 354 | Daha fazla öğeden birini aramak için `--find` / `-f` seçeneğini ve ardından arama terimlerinizi kullanın. 355 | 356 | ``` 357 | $ tb -f documentation 358 | ``` 359 | 360 | ## Geliştirme 361 | 362 | Projeye nasıl katkıda bulunacağınız hakkında daha fazla bilgi için lütfen [katkıda bulunma yönergelerini](https://github.com/klaussinani/taskbook/blob/master/contributing.md) okuyun. 363 | 364 | - Depoyu klonlayın ve makinenize kopyalayın 365 | - Yerel klasörünüze gidin: `cd taskbook` 366 | - Proje bağımlılıklarını yükleyin: `npm install` or `yarn install` 367 | - Hatalar için kontrol edin: `npm test` or `yarn test` 368 | 369 | ## İlgili 370 | 371 | - [signale](https://github.com/klaussinani/signale) - Son derece yapılandırılabilir günlük kaydı yardımcı programı 372 | - [qoa](https://github.com/klaussinani/qoa) - Minimal etkileşimli komut satırı istemleri 373 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Derin okyanus mavisi Hiper terminal teması 374 | 375 | ## Takım 376 | 377 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 378 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 379 | 380 | ## Lisans 381 | 382 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 383 | -------------------------------------------------------------------------------- /docs/readme.ZH.md: -------------------------------------------------------------------------------- 1 | 2 |

3 | Taskbook 4 |

5 | 6 |

7 | 📓 任务,板块和笔记都在命令行这个栖息地 8 |

9 | 10 |
11 | Boards 12 |
13 | 14 |

15 | 16 | Build Status 17 | 18 |

19 | 20 | ## 描述 21 | 22 | 本应用通过使用简单且最小化的语法,以及平坦的学习曲线,使您可以在终端内跨多个板块,有效地管理任务和笔记。所有数据都以原子方式写入存储,以防止损坏,并且永远不会与任何第三方共享。已删除的条目会自动存档,并且可以随时被检查或恢复。 23 | 24 | 访问[贡献指南](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation)了解有关如何将此文档翻译成更多语言的更多信息. 25 | 26 | 来[Gitter](https://gitter.im/klaussinani/taskbook)或[推特](https://twitter.com/klaussinani)分享您对条目的看法. 27 | 28 | ## 亮点 29 | 30 | - 组织任务和笔记到板块 31 | - 板块和时间表视图 32 | - 优先和喜爱的机制 33 | - 搜索和过滤条目 34 | - 存档并恢复已删除的条目 35 | - 轻巧快速 36 | - 数据以原子方式写入存储 37 | - 自定义存储位置 38 | - 进展概览 39 | - 简单和最小的使用语法 40 | - 更新通知 41 | - 可通过`~/.taskbook.json`实现配置化 42 | - 数据存储在JSON文件中`~/.taskbook/storage` 43 | 44 | 查看亮点[taskbook 黑板报](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png). 45 | 46 | ### 目录 47 | 48 | 49 | 50 | 51 | 52 | - [描述](#%E6%8F%8F%E8%BF%B0) 53 | - [亮点](#%E5%BC%BA%E8%B0%83) 54 | - [安装](#%E5%AE%89%E8%A3%85) 55 | - [用法](#%E7%94%A8%E6%B3%95) 56 | - [查看](#%E6%9F%A5%E7%9C%8B) 57 | - [配置](#%E9%85%8D%E7%BD%AE) 58 | - [飞行手册](#%E9%A3%9E%E8%A1%8C%E6%89%8B%E5%86%8C) 59 | - [开发](#%E5%8F%91%E5%B1%95) 60 | - [相关](#%E6%9C%89%E5%85%B3) 61 | - [团队](#%E5%9B%A2%E9%98%9F) 62 | - [授权协议](#%E6%89%A7%E7%85%A7) 63 | 64 | 65 | 66 | 67 | ## 安装 68 | 69 | ### Yarn 70 | 71 | ```bash 72 | yarn global add taskbook 73 | ``` 74 | 75 | ### NPM 76 | 77 | ```bash 78 | npm install --global taskbook 79 | ``` 80 | 81 | ### Snapcraft 82 | 83 | ```bash 84 | snap install taskbook 85 | snap alias taskbook tb # set alias 86 | ``` 87 | 88 | ## 用法 89 | 90 | $ tb --help 91 | 92 | 用法 93 | $ tb [ ...] 94 | 95 | Options 96 | none 显示板块视图 97 | --archive, -a 显示已归档的条目 98 | --begin, -b 开始/暂停 任务 99 | --check, -c 完成/暂停 任务 100 | --clear 删除所有已完成任务 101 | --copy, -y 复制条目描述 102 | --delete, -d 删除条目 103 | --edit, -e 编辑条目描述 104 | --find, -f 搜索条目 105 | --help, -h 显示帮助信息 106 | --list, -l 按属性列出条目 107 | --move, -m 在板块之间移动条目 108 | --note, -n 创建笔记 109 | --priority, -p 更新任务的优先级 110 | --restore, -r 从存档还原条目 111 | --star, -s 收藏/取消收藏 条目 112 | --task, -t 创建任务 113 | --timeline, -i 显示时间线视图 114 | --version, -v 显示已安装的版本 115 | 116 | 示例 117 | $ tb 118 | $ tb --archive 119 | $ tb --begin 2 3 120 | $ tb --check 1 2 121 | $ tb --clear 122 | $ tb --copy 1 2 3 123 | $ tb --delete 4 124 | $ tb --edit @3 Merge PR #42 125 | $ tb --find documentation 126 | $ tb --list pending coding 127 | $ tb --move @1 cooking 128 | $ tb --note @coding Mergesort worse-case O(nlogn) 129 | $ tb --priority @3 2 130 | $ tb --restore 4 131 | $ tb --star 2 132 | $ tb --task @coding @reviews Review PR #42 133 | $ tb --task @coding Improve documentation 134 | $ tb --task Make some buttercream 135 | $ tb --timeline 136 | 137 | ## 查看 138 | 139 | ### 板块视图 140 | 141 | 在没有任何选项的情况下调用 taskbook,将显示分组到各自板中的所有条目。 142 | 143 |
144 | Boards 145 |
146 | 147 | ### 时间线视图 148 | 149 | 为了显示时间线视图中的所有条目,根据其创建日期,`--timeline`/`-i`选项可以使用。 150 | 151 |
152 | Timeline View 153 |
154 | 155 | ## 配置 156 | 157 | 要配置 taskbook ,可定位到`~/.taskbook.json`并根据您的个人喜好修改任何配置选项。如果要重置回默认值,只需从主目录中删除配置文件即可。 158 | 159 | 以下说明了所有可用选项及其各自的默认值: 160 | 161 | ```json 162 | { 163 | "taskbookDirectory": "", 164 | "displayCompleteTasks": true, 165 | "displayProgressOverview": true 166 | } 167 | ``` 168 | 169 | ### 配置细节 170 | 171 | ##### `taskbookDirectory` 172 | 173 | - 类型: `String` 174 | - 默认: `~` 175 | 176 | 初始化存储完成文件的系统路径,比如:`/home/username/the-cloud`或者`~/the-cloud`。 177 | 178 | 如果未配置本选项,将默认设置为`~/.taskbook/`。 179 | 180 | ##### `displayCompleteTasks` 181 | 182 | - 类型: `Boolean` 183 | - 默认: `true` 184 | 185 | 显示标记为完成的任务. 186 | 187 | ##### `displayProgressOverview` 188 | 189 | - 类型: `Boolean` 190 | - 默认: `true` 191 | 192 | 在时间线和任务板视图下方显示进度概述。 193 | 194 | ## 飞行手册 195 | 196 | 以下是一个小练习,其中包含一组有关如何使用 taskbook 的示例。如果您发现错误或认为某个示例不够清晰并且应该进一步改进,请随时打开[issue](https://github.com/klaussinani/taskbook/issues/new/choose)或[Pull 请求](https://github.com/klaussinani/taskbook/compare)。 197 | 198 | ### 创建任务 199 | 200 | 要创建新任务,请使用`--task`/`-t`并在后面加上任务说明。 201 | 202 | $ tb -t Improve documentation 203 | 204 | ### 创建笔记 205 | 206 | 要创建新笔记,请使用`--note`/`-n`并在后面加上笔记正文。 207 | 208 | $ tb -n Mergesort worse-case O(nlogn) 209 | 210 | ### 创建板块 211 | 212 | 如果创建新任务或笔记时,指定的板块不存在,那么会自动新建并初始化板块。 213 | 如果想要将新的任务条目指定给新的板块,那么可以在任务描述前,使用`@`作为前缀,并加上新的板块的名称(可以多个板块一并创建)。 此时,新创建的任务条目将属于所有给定的板块。 214 | 如果任务条目描述中不包含任何板块名称,那么默认情况下,会自动添加到通用的:`My Board`。 215 | 216 | $ tb -t @coding @docs Update contributing guidelines 217 | 218 | ### 完成任务 219 | 220 | 要将任务标记为『完成/待处理』,请使用`--check`/`-c`选项后跟目标任务的 ID。 221 | 请注意,该选项将自动转换给定任务的`complete/pending`(完成/待处理)状态。因此,『完成状态条目』 -> `-c` -> 『待处理状态』;『待处理状态条目』 -> `-c` -> 『完成状态条目』。 222 | 重复的ID会自动过滤掉。 223 | 224 | $ tb -c 1 3 225 | 226 | ### 开始任务 227 | 228 | 要将任务标记为『开始/暂停』,请使用`--begin`/`-b`选项后跟目标任务的 ID。该选项的功能对条目状态转换与`--check`选项功能相同。 229 | 230 | ### 收藏条目(Star) 231 | 232 | 要将一个或多个条目标记为收藏,请使用`--star`/`-s`选项后加上目标项的 ID。该选项的功能对条目状态转换与`--check`选项功能相同。 233 | 234 | $ tb -s 1 2 3 235 | 236 | ### 复制条目描述 237 | 238 | 要复制一个或多个条目描述到你的系统剪贴板,请使用`--copy`/`-y`选项后加上目标项的 ID。请注意,该选项会使用回车符作为每个描述的分隔符,从而在剪贴板生成清晰可读的格式。 239 | 240 | ### 显示板块 241 | 242 | 在没有任何选项的情况下调用 taskbook 将显示分组到各自板中的所有已保存条目。 243 | 244 | $ tb 245 | 246 | ### 显示时间轴 247 | 248 | 想要根据其创建日期,来显示时间线视图中的所有条目,可以使用`--timeline`/`-i`选项。 249 | 250 | $ tb -i 251 | 252 | ### 设置优先级 253 | 254 | 要在初始化任务时设置任务的优先级,请包括`p:x`任务描述中的语法。 255 | 其中x可以是值的整数`1`、`2`或`3`。请注意,默认情况下,所有任务都以正常优先级`1`创建。 256 | 257 | - `1`- 正常优先 258 | - `2`- 中等优先级 259 | - `3`- 高度优先 260 | 261 | 262 | $ tb -t @coding Fix issue `#42` p:3 263 | 264 | 要在创建特定任务后更新特定任务的优先级,请使用`--priority`/`-p`选项,紧接着是`@id`(任务条目的`id`),最后是优先等级。 265 | 目标ID和优先级的放置顺序 并不重要. 266 | 267 | $ tb -p @1 2 268 | 269 | ### 移动条目 270 | 271 | 要将条目移动到一个或多个板块,请使用`--move`/`-m`选项,后跟`@id`(任务条目的`id`),最后是目标板块的名称。 272 | 默认板块`My Board`可以通过`myboard`关键词来访问。目标 ID 和任务版块名称的放置顺序并不重要。 273 | 274 | $ tb -m @1 myboard reviews 275 | 276 | ### 删除条目 277 | 278 | 要删除一个或多个条目,请使用`--delete`/`-d`选项后跟目标条目的 ID。 279 | 已删除的条目会自动存档,并且可以随时完成或还原。重复的 ID 会被自动过滤掉。 280 | 281 | $ tb -d 1 2 282 | 283 | ### 删除已完成任务 284 | 285 | 要删除所有已完成任务,请使用`--clear`选项。请注意,所有被删除的任务会被自动保存,并且可以在任意时间点查看或还原。为了防止任何可能的意外情况,`--clear`选项没有别名。 286 | 287 | 288 | ### 显示存档 289 | 290 | 要显示所有已存档条目,请使用`--archive`/`-a`选项。请注意,所有已存档条目都会根据其创建日期顺序显示在时间轴视图。 291 | 292 | $ tb -a 293 | 294 | ### 还原条目 295 | 296 | 要恢复一个或多个条目,请使用`--restore`/`-r`选项后跟目标条目的 ID。请注意,该选项调用时可以看到所有已存档条目的 ID。重复的ID会自动过滤掉。 297 | 298 | $ tb -r 1 2 299 | 300 | ### 列出条目 301 | 302 | 要列出一组条目,其中每个条目符合特定数量的属性,请使用`--list`/`-l`选项后跟所需的属性。板块名称和条目特征可以被视为有效的列表属性。 303 | 例如,列出属于默认值的所有条目`myboard`并且是待定任务,可以使用以下内容: 304 | 305 | $ tb -l myboard pending 306 | 307 | 默认支持的列表属性及其各自的别名如下: 308 | 309 | - `myboard` - 属于`My Board`的条目 310 | - `task`, `tasks`, `todo` - 作为任务的条目 311 | - `note`, `notes` - 作为笔记的条目 312 | - `pending`, `unchecked`, `incomplete` - 待处理的任务条目 313 | - `progress`, `started`, `begun` - 已开始的任务条目 314 | - `done`, `checked`, `complete` - 已完成的任务条目 315 | - `star`, `starred` - 已加星标的条目 316 | 317 | ### 搜索条目 318 | 319 | 要搜索其中一个条目,请使用`--find`/`-f`选项,后跟您的搜索字词。 320 | 321 | $ tb -f documentation 322 | 323 | ## 开发 324 | 325 | 有关如何为此项目做出贡献的更多信息,请阅读[贡献指南](https://github.com/klaussinani/taskbook/blob/master/contributing.md)。 326 | 327 | - Fork 此仓库库并将其克隆到您的计算机 328 | - 定位到您的本地 Fork: `cd taskbook` 329 | - 安装项目依赖项: `npm install`或`yarn install` 330 | - 测试错误代码: `npm test`或`yarn test` 331 | 332 | ## 相关 333 | 334 | - [signale](https://github.com/klaussinani/signale) - Hackable console logger 335 | - [qoa](https://github.com/klaussinani/qoa) - Minimal interactive command-line prompts 336 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Deep oceanic blue Hyper terminal theme 337 | 338 | ## 团队 339 | 340 | - Klaus Sinani [(@klaussinani)](https://github.com/klaussinani) 341 | - Mario Sinani [(@mario-sinani)](https://github.com/mario-sinani) 342 | 343 | ## 授权协议 344 | 345 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 346 | -------------------------------------------------------------------------------- /docs/readme.md: -------------------------------------------------------------------------------- 1 | ## Taskbook Translated Documentation 2 | 3 | - [简体中文 - Simplified Chinese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md) by [@chinanf-boy](https://github.com/chinanf-boy), [@rosuH](https://github.com/rosuH), [@metauro](https://github.com/metauro) 4 | 5 | - [Русский - Russian](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md) by [@zhadyrassyn](https://github.com/zhadyrassyn), [@gebeto](https://github.com/gebeto) 6 | 7 | - [Français - French](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md) by [@Maltemo](https://github.com/Maltemo) 8 | 9 | - [GERMAN](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.GER.md) by [@villabunterkunt](https://github.com/villabunterkunt) 10 | 11 | - [Portuguese](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.PT-BR.md) by [@luanrv](https://github.com/luanrv) 12 | 13 | - [日本語](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.JP.md) by [@pyohei](https://github.com/pyohei) 14 | 15 | - [한국어 - Korean](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.KR.md) by [@Junebuug](https://github.com/Junebuug) 16 | 17 | - [Spanish](https://github.com/klauscfhq/taskbook/blob/master/docs/readme.ES.md) by [@spaceinvadev](https://github.com/spaceinvadev) 18 | 19 | - [Bulgarian](https://github.com/klaussinani/taskbook/blob/master/docs/readme.BG.md) by [@librafrog](https://github.com/librafrog) 20 | 21 | - [Türkçe](https://github.com/klaussinani/taskbook/blob/master/docs/readme.TR.md) by [@mehmetsalihyaldiz](https://github.com/mehmetsalihyaldiz) 22 | 23 | ## Contributing 24 | 25 | Visit the [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) to learn more on how to get involved in the translating process. 26 | 27 | ## Thanks 28 | 29 | Tons of thank you to the amazing people that help out with the creation and maintenance of the translations! Your contributions make Taskbook available to everyone around the world! ❤️ 30 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | const taskbook = require('./src/taskbook'); 4 | 5 | const taskbookCLI = (input, flags) => { 6 | if (flags.archive) { 7 | return taskbook.displayArchive(); 8 | } 9 | 10 | if (flags.task) { 11 | return taskbook.createTask(input); 12 | } 13 | 14 | if (flags.restore) { 15 | return taskbook.restoreItems(input); 16 | } 17 | 18 | if (flags.note) { 19 | return taskbook.createNote(input); 20 | } 21 | 22 | if (flags.delete) { 23 | return taskbook.deleteItems(input); 24 | } 25 | 26 | if (flags.check) { 27 | return taskbook.checkTasks(input); 28 | } 29 | 30 | if (flags.begin) { 31 | return taskbook.beginTasks(input); 32 | } 33 | 34 | if (flags.star) { 35 | return taskbook.starItems(input); 36 | } 37 | 38 | if (flags.priority) { 39 | return taskbook.updatePriority(input); 40 | } 41 | 42 | if (flags.copy) { 43 | return taskbook.copyToClipboard(input); 44 | } 45 | 46 | if (flags.timeline) { 47 | taskbook.displayByDate(); 48 | return taskbook.displayStats(); 49 | } 50 | 51 | if (flags.find) { 52 | return taskbook.findItems(input); 53 | } 54 | 55 | if (flags.list) { 56 | taskbook.listByAttributes(input); 57 | return taskbook.displayStats(); 58 | } 59 | 60 | if (flags.edit) { 61 | return taskbook.editDescription(input); 62 | } 63 | 64 | if (flags.move) { 65 | return taskbook.moveBoards(input); 66 | } 67 | 68 | if (flags.clear) { 69 | return taskbook.clear(); 70 | } 71 | 72 | taskbook.displayByBoard(); 73 | return taskbook.displayStats(); 74 | }; 75 | 76 | module.exports = taskbookCLI; 77 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 - present Klaus Sinani (klaussinani.github.io) Mario Sinani (mario-sinani.github.io) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /media/header-boards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaudiosinani/taskbook/a85a54a0f7af4a360cbe383d0a610a75499c6d5d/media/header-boards.png -------------------------------------------------------------------------------- /media/highlights.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaudiosinani/taskbook/a85a54a0f7af4a360cbe383d0a610a75499c6d5d/media/highlights.png -------------------------------------------------------------------------------- /media/timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaudiosinani/taskbook/a85a54a0f7af4a360cbe383d0a610a75499c6d5d/media/timeline.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "taskbook", 3 | "productName": "Taskbook", 4 | "version": "0.3.0", 5 | "description": "Tasks, boards & notes for the command-line habitat", 6 | "repository": "klaussinani/taskbook", 7 | "license": "MIT", 8 | "author": { 9 | "name": "Klaus Sinani", 10 | "email": "klaussinani@gmail.com", 11 | "url": "https://klaussinani.github.io" 12 | }, 13 | "bin": { 14 | "tb": "cli.js" 15 | }, 16 | "engines": { 17 | "node": ">=6" 18 | }, 19 | "files": [ 20 | "src", 21 | "cli.js", 22 | "index.js" 23 | ], 24 | "keywords": [ 25 | "task", 26 | "board", 27 | "note", 28 | "todo", 29 | "notebook", 30 | "command", 31 | "line", 32 | "console", 33 | "cli", 34 | "app" 35 | ], 36 | "configuration": { 37 | "default": { 38 | "taskbookDirectory": "~", 39 | "displayCompleteTasks": true, 40 | "displayProgressOverview": true 41 | } 42 | }, 43 | "scripts": { 44 | "test": "xo" 45 | }, 46 | "dependencies": { 47 | "chalk": "^2.4.1", 48 | "clipboardy": "^1.2.3", 49 | "meow": "^5.0.0", 50 | "signale": "1.4.0", 51 | "update-notifier": "^2.5.0" 52 | }, 53 | "devDependencies": { 54 | "xo": "*" 55 | }, 56 | "xo": { 57 | "space": 2 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |

2 | Taskbook 3 |

4 | 5 |

6 | Tasks, boards & notes for the command-line habitat 7 |

8 | 9 |
10 | Boards 11 |
12 | 13 | 26 | 27 | ## Description 28 | 29 | By utilizing a simple and minimal usage syntax, that requires a flat learning curve, taskbook enables you to effectively manage your tasks and notes across multiple boards from within your terminal. All data are written atomically to the storage in order to prevent corruptions, and are never shared with anyone or anything. Deleted items are automatically archived and can be inspected or restored at any moment. 30 | 31 | Read this document in: 32 | [简体中文](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ZH.md), [Русский](https://github.com/klaussinani/taskbook/blob/master/docs/readme.RU.md), [Français](https://github.com/klaussinani/taskbook/blob/master/docs/readme.FR.md), [Deutsch](https://github.com/klaussinani/taskbook/blob/master/docs/readme.GER.md), [Portuguese](https://github.com/klaussinani/taskbook/blob/master/docs/readme.PT-BR.md), [日本語](https://github.com/klaussinani/taskbook/blob/master/docs/readme.JP.md), [한국어](https://github.com/klaussinani/taskbook/blob/master/docs/readme.KR.md), [Spanish](https://github.com/klaussinani/taskbook/blob/master/docs/readme.ES.md), [Bulgarian](https://github.com/klaussinani/taskbook/blob/master/docs/readme.BG.md). 33 | 34 | You can now support the development process through [GitHub Sponsors](https://github.com/sponsors/klaussinani). 35 | 36 | Visit the [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md#translating-documentation) to learn more on how to translate this document into more languages. 37 | 38 | Come over to [Gitter](https://gitter.im/klaussinani/taskbook) or [Twitter](https://twitter.com/klaussinani) to share your thoughts on the project. 39 | 40 | ## Highlights 41 | 42 | - Organize tasks & notes to boards 43 | - Board & timeline views 44 | - Priority & favorite mechanisms 45 | - Search & filter items 46 | - Archive & restore deleted items 47 | - Lightweight & fast 48 | - Data written atomically to storage 49 | - Custom storage location 50 | - Progress overview 51 | - Simple & minimal usage syntax 52 | - Update notifications 53 | - Configurable through `~/.taskbook.json` 54 | - Data stored in JSON file at `~/.taskbook/storage` 55 | 56 | View highlights in a [taskbook board](https://raw.githubusercontent.com/klaussinani/taskbook/master/media/highlights.png). 57 | 58 | ## Contents 59 | 60 | - [Description](#description) 61 | - [Highlights](#highlights) 62 | - [Install](#install) 63 | - [Usage](#usage) 64 | - [Views](#views) 65 | - [Configuration](#configuration) 66 | - [Flight Manual](#flight-manual) 67 | - [Development](#development) 68 | - [Related](#related) 69 | - [Team](#team) 70 | - [Sponsors](#sponsors) 71 | - [License](#license) 72 | 73 | ## Install 74 | 75 | ### Yarn 76 | 77 | ```bash 78 | yarn global add taskbook 79 | ``` 80 | 81 | ### NPM 82 | 83 | ```bash 84 | npm install --global taskbook 85 | ``` 86 | 87 | ### Snapcraft 88 | 89 | ```bash 90 | snap install taskbook 91 | snap alias taskbook tb # set alias 92 | ``` 93 | 94 | **Note:** Due to the snap's strictly confined nature, both the storage & configuration files will be saved under the [`$SNAP_USER_DATA`](https://docs.snapcraft.io/reference/env) environment variable instead of the generic `$HOME` one. 95 | 96 | ## Usage 97 | 98 | ``` 99 | $ tb --help 100 | 101 | Usage 102 | $ tb [ ...] 103 | 104 | Options 105 | none Display board view 106 | --archive, -a Display archived items 107 | --begin, -b Start/pause task 108 | --check, -c Check/uncheck task 109 | --clear Delete all checked items 110 | --copy, -y Copy item description 111 | --delete, -d Delete item 112 | --edit, -e Edit item description 113 | --find, -f Search for items 114 | --help, -h Display help message 115 | --list, -l List items by attributes 116 | --move, -m Move item between boards 117 | --note, -n Create note 118 | --priority, -p Update priority of task 119 | --restore, -r Restore items from archive 120 | --star, -s Star/unstar item 121 | --task, -t Create task 122 | --timeline, -i Display timeline view 123 | --version, -v Display installed version 124 | 125 | Examples 126 | $ tb 127 | $ tb --archive 128 | $ tb --begin 2 3 129 | $ tb --check 1 2 130 | $ tb --clear 131 | $ tb --copy 1 2 3 132 | $ tb --delete 4 133 | $ tb --edit @3 Merge PR #42 134 | $ tb --find documentation 135 | $ tb --list pending coding 136 | $ tb --move @1 cooking 137 | $ tb --note @coding Mergesort worse-case O(nlogn) 138 | $ tb --priority @3 2 139 | $ tb --restore 4 140 | $ tb --star 2 141 | $ tb --task @coding @reviews Review PR #42 142 | $ tb --task @coding Improve documentation 143 | $ tb --task Make some buttercream 144 | $ tb --timeline 145 | ``` 146 | 147 | ## Views 148 | 149 | ### Board View 150 | 151 | Invoking taskbook without any options will display all saved items grouped into their respective boards. 152 | 153 |
154 | Boards 155 |
156 | 157 | ### Timeline View 158 | 159 | In order to display all items in a timeline view, based on their creation date, the `--timeline`/`-i` option can be used. 160 | 161 |
162 | Timeline View 163 |
164 | 165 | ## Configuration 166 | 167 | To configure taskbook navigate to the `~/.taskbook.json` file and modify any of the options to match your own preference. To reset back to the default values, simply delete the config file from your home directory. 168 | 169 | The following illustrates all the available options with their respective default values. 170 | 171 | ```json 172 | { 173 | "taskbookDirectory": "~", 174 | "displayCompleteTasks": true, 175 | "displayProgressOverview": true 176 | } 177 | ``` 178 | 179 | ### In Detail 180 | 181 | ##### `taskbookDirectory` 182 | 183 | - Type: `String` 184 | - Default: `~` 185 | 186 | Filesystem path where the storage will be initialized, i.e: `/home/username/the-cloud` or `~/the-cloud` 187 | 188 | If left undefined the home directory `~` will be used and taskbook will be set-up under `~/.taskbook/`. 189 | 190 | ##### `displayCompleteTasks` 191 | 192 | - Type: `Boolean` 193 | - Default: `true` 194 | 195 | Display tasks that are marked as complete. 196 | 197 | ##### `displayProgressOverview` 198 | 199 | - Type: `Boolean` 200 | - Default: `true` 201 | 202 | Display progress overview below the timeline and board views. 203 | 204 | ## Flight Manual 205 | 206 | The following is a minor walkthrough containing a set of examples on how to use taskbook. 207 | In case you spotted an error or think that an example is not to clear enough and should be further improved, please feel free to open an [issue](https://github.com/klaussinani/taskbook/issues/new/choose) or [pull request](https://github.com/klaussinani/taskbook/compare). 208 | 209 | ### Create Task 210 | 211 | To create a new task use the `--task`/`-t` option with your task's description following right after. 212 | 213 | ``` 214 | $ tb -t Improve documentation 215 | ``` 216 | 217 | ### Create Note 218 | 219 | To create a new note use the `--note`/`-n` option with your note's body following right after. 220 | 221 | ``` 222 | $ tb -n Mergesort worse-case O(nlogn) 223 | ``` 224 | 225 | ### Create Board 226 | 227 | Boards are automatically initialized when creating a new task or note. To create one or more boards, include their names, prefixed by the `@` symbol, in the description of the about-to-be created item. As a result the newly created item will belong to all of the given boards. By default, items that do not contain any board names in their description are automatically added to the general purpose; `My Board`. 228 | 229 | ``` 230 | $ tb -t @coding @docs Update contributing guidelines 231 | ``` 232 | 233 | ### Check Task 234 | 235 | To mark a task as complete/incomplete, use the `--check`/`-c` option followed by the ids of the target tasks. Note that the option will update to its opposite the `complete` status of the given tasks, thus checking a complete task will render it as pending and a pending task as complete. Duplicate ids are automatically filtered out. 236 | 237 | ``` 238 | $ tb -c 1 3 239 | ``` 240 | 241 | ### Begin Task 242 | 243 | To mark a task as started/paused, use the `--begin`/`-b` option followed by the ids of the target tasks. The functionality of this option is the same as the one of the above described `--check` option. 244 | 245 | ``` 246 | $ tb -b 2 3 247 | ``` 248 | 249 | ### Star Item 250 | 251 | To mark one or more items as favorite, use the `--star`/`-s` option followed by the ids of the target items. The functionality of this option is the same as the one of the above described `--check` option. 252 | 253 | ``` 254 | $ tb -s 1 2 3 255 | ``` 256 | 257 | ### Copy Item Description 258 | 259 | To copy to your system's clipboard the description of one or more items, use the `--copy`/`-y` option followed by the ids of the target items. Note that the option will also include the newline character as a separator to each pair of adjacent copied descriptions, thus resulting in a clear and readable stack of sentences on paste. 260 | 261 | ``` 262 | $ tb -y 1 2 3 263 | ``` 264 | 265 | ### Display Boards 266 | 267 | Invoking taskbook without any options will display all of saved items grouped into their respective boards. 268 | 269 | ``` 270 | $ tb 271 | ``` 272 | 273 | ### Display Timeline 274 | 275 | In order to display all items in a timeline view, based on their creation date, the `--timeline`/`-i` option can be used. 276 | 277 | ``` 278 | $ tb -i 279 | ``` 280 | 281 | ### Set Priority 282 | 283 | To set a priority level for a task while initializing it, include the `p:x` syntax in the task's description, where x can be an integer of value `1`, `2` or `3`. Note that all tasks by default are created with a normal priority - `1`. 284 | 285 | - `1` - Normal priority 286 | - `2` - Medium priority 287 | - `3` - High priority 288 | 289 | ``` 290 | $ tb -t @coding Fix issue `#42` p:3 291 | ``` 292 | 293 | To update the priority level of a specific task after its creation, use the `--priority`/`-p` option along with the id the target task, prefixed by the `@` symbol, and an integer of value `1`, `2` or `3`. Note that the order in which the target id and priority level are placed is not significant. 294 | 295 | ``` 296 | $ tb -p @1 2 297 | ``` 298 | 299 | ### Move Item 300 | 301 | To move an item to one or more boards, use the `--move`/`-m` option, followed by the target item id, prefixed by the `@` symbol, and the name of the destination boards. The default `My board` can be accessed through the `myboard` keyword. The order in which the target id and board names are placed is not significant. 302 | 303 | ``` 304 | $ tb -m @1 myboard reviews 305 | ``` 306 | 307 | ### Delete Item 308 | 309 | To delete one or more items, use the `--delete`/`-d` options followed by the ids of the target items. Note that deleted items are automatically archived, and can be inspected or restored at any moment. Duplicate ids are automatically filtered out. 310 | 311 | ``` 312 | $ tb -d 1 2 313 | ``` 314 | 315 | ### Delete Checked Tasks 316 | 317 | To delete/clear all complete tasks at once across all boards, use the `--clear` option. Note that all deleted tasks are automatically archived, and can be inspected or restored at any moment. In order to discourage any possible accidental usage, the `--clear` option has no available shorter alias. 318 | 319 | ``` 320 | $ tb --clear 321 | ``` 322 | 323 | ### Display Archive 324 | 325 | To display all archived items, use the `--archive`/`-a` option. Note that all archived items are displayed in timeline view, based on their creation date. 326 | 327 | ``` 328 | $ tb -a 329 | ``` 330 | 331 | ### Restore Items 332 | 333 | To restore one or more items, use the `--restore`/`-r` option followed by the ids of the target items. Note that the ids of all archived items can be seen when invoking the `--archive`/`-a` option. Duplicate ids are automatically filtered out. 334 | 335 | ``` 336 | $ tb -r 1 2 337 | ``` 338 | 339 | ### List Items 340 | 341 | To list a group of items where each item complies with a specific set of attributes, use the `--list`/`-l` option followed by the desired attributes. Board names along with item traits can be considered valid listing attributes. For example to list all items that belong to the default `myboard` and are pending tasks, the following could be used; 342 | 343 | ``` 344 | $ tb -l myboard pending 345 | ``` 346 | 347 | The by default supported listing attributes, together with their respective aliases, are the following; 348 | 349 | - `myboard` - Items that belong to `My board` 350 | - `task`, `tasks`, `todo` - Items that are tasks. 351 | - `note`, `notes` - Items that are notes. 352 | - `pending`, `unchecked`, `incomplete` - Items that are pending tasks. 353 | - `progress`, `started`, `begun` - Items that are in-progress tasks. 354 | - `done`, `checked`, `complete` - Items that complete tasks. 355 | - `star`, `starred` - Items that are starred. 356 | 357 | ### Search Items 358 | 359 | To search for one of more items, use the `--find`/`-f` option, followed by your search terms. 360 | 361 | ``` 362 | $ tb -f documentation 363 | ``` 364 | 365 | ## Development 366 | 367 | For more info on how to contribute to the project, please read the [contributing guidelines](https://github.com/klaussinani/taskbook/blob/master/contributing.md). 368 | 369 | - Fork the repository and clone it to your machine 370 | - Navigate to your local fork: `cd taskbook` 371 | - Install the project dependencies: `npm install` or `yarn install` 372 | - Lint the code for errors: `npm test` or `yarn test` 373 | 374 | ## Related 375 | 376 | - [signale](https://github.com/klaussinani/signale) - Highly configurable logging utility 377 | - [qoa](https://github.com/klaussinani/qoa) - Minimal interactive command-line prompts 378 | - [hyperocean](https://github.com/klaussinani/hyperocean) - Deep oceanic blue Hyper terminal theme 379 | 380 | ## Team 381 | 382 | - Klaus Sinani [(@klaudiosinani)](https://github.com/klaudiosinani) 383 | - Mario Sinani [(@mariosinani)](https://github.com/mariosinani) 384 | 385 | ## Sponsors 386 | 387 | A big thank you to all the people and companies supporting our Open Source work: 388 | 389 | - [Better Stack: Spot, Resolve, and Prevent Downtime.](https://betterstack.com/) 390 | 391 | ## License 392 | 393 | [MIT](https://github.com/klaussinani/taskbook/blob/master/license.md) 394 | -------------------------------------------------------------------------------- /snapcraft.yaml: -------------------------------------------------------------------------------- 1 | name: taskbook 2 | version: '0.0.0' 3 | version-script: git describe --always | cut -c 2- 4 | summary: Tasks, boards & notes for the command-line habitat 5 | description: | 6 | By utilizing a simple and minimal usage syntax, that requires a flat learning curve, 7 | taskbook enables you to effectively manage your tasks and notes across multiple boards 8 | from within your terminal. 9 | 10 | grade: stable 11 | confinement: strict 12 | 13 | architectures: 14 | - amd64 15 | - i386 16 | - armhf 17 | 18 | apps: 19 | taskbook: 20 | command: tb 21 | plugs: 22 | - home 23 | - network 24 | - network-control 25 | - x11 26 | 27 | parts: 28 | taskbook: 29 | plugin: nodejs 30 | node-engine: 10.15.0 31 | node-package-manager: yarn 32 | source: . 33 | -------------------------------------------------------------------------------- /src/config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const fs = require('fs'); 3 | const os = require('os'); 4 | const path = require('path'); 5 | const pkg = require('../package.json'); 6 | 7 | const {join} = path; 8 | const {default: defaultConfig} = pkg.configuration; 9 | 10 | class Config { 11 | constructor() { 12 | this._configFile = join(os.homedir(), '.taskbook.json'); 13 | 14 | this._ensureConfigFile(); 15 | } 16 | 17 | _ensureConfigFile() { 18 | if (fs.existsSync(this._configFile)) { 19 | return; 20 | } 21 | 22 | const data = JSON.stringify(defaultConfig, null, 4); 23 | fs.writeFileSync(this._configFile, data, 'utf8'); 24 | } 25 | 26 | _formatTaskbookDir(path) { 27 | return join(os.homedir(), path.replace(/^~/g, '')); 28 | } 29 | 30 | get() { 31 | let config = {}; 32 | 33 | const content = fs.readFileSync(this._configFile, 'utf8'); 34 | config = JSON.parse(content); 35 | 36 | if (config.taskbookDirectory.startsWith('~')) { 37 | config.taskbookDirectory = this._formatTaskbookDir(config.taskbookDirectory); 38 | } 39 | 40 | return Object.assign({}, defaultConfig, config); 41 | } 42 | } 43 | 44 | module.exports = new Config(); 45 | -------------------------------------------------------------------------------- /src/help.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = ` 4 | Usage 5 | $ tb [ ...] 6 | 7 | Options 8 | none Display board view 9 | --archive, -a Display archived items 10 | --begin, -b Start/pause task 11 | --check, -c Check/uncheck task 12 | --clear Delete all checked items 13 | --copy, -y Copy item description 14 | --delete, -d Delete item 15 | --edit, -e Edit item description 16 | --find, -f Search for items 17 | --help, -h Display help message 18 | --list, -l List items by attributes 19 | --move, -m Move item between boards 20 | --note, -n Create note 21 | --priority, -p Update priority of task 22 | --restore, -r Restore items from archive 23 | --star, -s Star/unstar item 24 | --task, -t Create task 25 | --timeline, -i Display timeline view 26 | --version, -v Display installed version 27 | 28 | Examples 29 | $ tb 30 | $ tb --archive 31 | $ tb --begin 2 3 32 | $ tb --check 1 2 33 | $ tb --clear 34 | $ tb --copy 1 2 3 35 | $ tb --delete 4 36 | $ tb --edit @3 Merge PR #42 37 | $ tb --find documentation 38 | $ tb --list pending coding 39 | $ tb --move @1 cooking 40 | $ tb --note @coding Mergesort worse-case O(nlogn) 41 | $ tb --priority @3 2 42 | $ tb --restore 4 43 | $ tb --star 2 44 | $ tb --task @coding @reviews Review PR #42 45 | $ tb --task @coding Improve documentation 46 | $ tb --task Make some buttercream 47 | $ tb --timeline 48 | `; 49 | -------------------------------------------------------------------------------- /src/item.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const now = new Date(); 4 | 5 | class Item { 6 | constructor(options = {}) { 7 | this._id = options.id; 8 | this._date = now.toDateString(); 9 | this._timestamp = now.getTime(); 10 | this.description = options.description; 11 | this.isStarred = options.isStarred || false; 12 | this.boards = options.boards || []; 13 | } 14 | } 15 | 16 | module.exports = Item; 17 | -------------------------------------------------------------------------------- /src/note.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const Item = require('./item'); 3 | 4 | class Note extends Item { 5 | constructor(options = {}) { 6 | super(options); 7 | this._isTask = false; 8 | } 9 | } 10 | 11 | module.exports = Note; 12 | -------------------------------------------------------------------------------- /src/render.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const chalk = require('chalk'); 3 | const signale = require('signale'); 4 | const config = require('./config'); 5 | 6 | signale.config({displayLabel: false}); 7 | 8 | const {await: wait, error, log, note, pending, success} = signale; 9 | const {blue, green, grey, magenta, red, underline, yellow} = chalk; 10 | 11 | const priorities = {2: 'yellow', 3: 'red'}; 12 | 13 | class Render { 14 | get _configuration() { 15 | return config.get(); 16 | } 17 | 18 | _colorBoards(boards) { 19 | return boards.map(x => grey(x)).join(' '); 20 | } 21 | 22 | _isBoardComplete(items) { 23 | const {tasks, complete, notes} = this._getItemStats(items); 24 | return tasks === complete && notes === 0; 25 | } 26 | 27 | _getAge(birthday) { 28 | const daytime = 24 * 60 * 60 * 1000; 29 | const age = Math.round(Math.abs((birthday - Date.now()) / daytime)); 30 | return (age === 0) ? '' : grey(`${age}d`); 31 | } 32 | 33 | _getCorrelation(items) { 34 | const {tasks, complete} = this._getItemStats(items); 35 | return grey(`[${complete}/${tasks}]`); 36 | } 37 | 38 | _getItemStats(items) { 39 | let [tasks, complete, notes] = [0, 0, 0]; 40 | 41 | items.forEach(item => { 42 | if (item._isTask) { 43 | tasks++; 44 | if (item.isComplete) { 45 | return complete++; 46 | } 47 | } 48 | 49 | return notes++; 50 | }); 51 | 52 | return {tasks, complete, notes}; 53 | } 54 | 55 | _getStar(item) { 56 | return item.isStarred ? yellow('★') : ''; 57 | } 58 | 59 | _buildTitle(key, items) { 60 | const title = (key === new Date().toDateString()) ? `${underline(key)} ${grey('[Today]')}` : underline(key); 61 | const correlation = this._getCorrelation(items); 62 | return {title, correlation}; 63 | } 64 | 65 | _buildPrefix(item) { 66 | const prefix = []; 67 | 68 | const {_id} = item; 69 | prefix.push(' '.repeat(4 - String(_id).length)); 70 | prefix.push(grey(`${_id}.`)); 71 | 72 | return prefix.join(' '); 73 | } 74 | 75 | _buildMessage(item) { 76 | const message = []; 77 | 78 | const {isComplete, description} = item; 79 | const priority = parseInt(item.priority, 10); 80 | 81 | if (!isComplete && priority > 1) { 82 | message.push(underline[priorities[priority]](description)); 83 | } else { 84 | message.push(isComplete ? grey(description) : description); 85 | } 86 | 87 | if (!isComplete && priority > 1) { 88 | message.push(priority === 2 ? yellow('(!)') : red('(!!)')); 89 | } 90 | 91 | return message.join(' '); 92 | } 93 | 94 | _displayTitle(board, items) { 95 | const {title: message, correlation: suffix} = this._buildTitle(board, items); 96 | const titleObj = {prefix: '\n ', message, suffix}; 97 | 98 | return log(titleObj); 99 | } 100 | 101 | _displayItemByBoard(item) { 102 | const {_isTask, isComplete, inProgress} = item; 103 | const age = this._getAge(item._timestamp); 104 | const star = this._getStar(item); 105 | 106 | const prefix = this._buildPrefix(item); 107 | const message = this._buildMessage(item); 108 | const suffix = (age.length === 0) ? star : `${age} ${star}`; 109 | 110 | const msgObj = {prefix, message, suffix}; 111 | 112 | if (_isTask) { 113 | return isComplete ? success(msgObj) : inProgress ? wait(msgObj) : pending(msgObj); 114 | } 115 | 116 | return note(msgObj); 117 | } 118 | 119 | _displayItemByDate(item) { 120 | const {_isTask, isComplete, inProgress} = item; 121 | const boards = item.boards.filter(x => x !== 'My Board'); 122 | const star = this._getStar(item); 123 | 124 | const prefix = this._buildPrefix(item); 125 | const message = this._buildMessage(item); 126 | const suffix = `${this._colorBoards(boards)} ${star}`; 127 | 128 | const msgObj = {prefix, message, suffix}; 129 | 130 | if (_isTask) { 131 | return isComplete ? success(msgObj) : inProgress ? wait(msgObj) : pending(msgObj); 132 | } 133 | 134 | return note(msgObj); 135 | } 136 | 137 | displayByBoard(data) { 138 | Object.keys(data).forEach(board => { 139 | if (this._isBoardComplete(data[board]) && !this._configuration.displayCompleteTasks) { 140 | return; 141 | } 142 | 143 | this._displayTitle(board, data[board]); 144 | data[board].forEach(item => { 145 | if (item._isTask && item.isComplete && !this._configuration.displayCompleteTasks) { 146 | return; 147 | } 148 | 149 | this._displayItemByBoard(item); 150 | }); 151 | }); 152 | } 153 | 154 | displayByDate(data) { 155 | Object.keys(data).forEach(date => { 156 | if (this._isBoardComplete(data[date]) && !this._configuration.displayCompleteTasks) { 157 | return; 158 | } 159 | 160 | this._displayTitle(date, data[date]); 161 | data[date].forEach(item => { 162 | if (item._isTask && item.isComplete && !this._configuration.displayCompleteTasks) { 163 | return; 164 | } 165 | 166 | this._displayItemByDate(item); 167 | }); 168 | }); 169 | } 170 | 171 | displayStats({percent, complete, inProgress, pending, notes}) { 172 | if (!this._configuration.displayProgressOverview) { 173 | return; 174 | } 175 | 176 | percent = percent >= 75 ? green(`${percent}%`) : percent >= 50 ? yellow(`${percent}%`) : `${percent}%`; 177 | 178 | const status = [ 179 | `${green(complete)} ${grey('done')}`, 180 | `${blue(inProgress)} ${grey('in-progress')}`, 181 | `${magenta(pending)} ${grey('pending')}`, 182 | `${blue(notes)} ${grey(notes === 1 ? 'note' : 'notes')}` 183 | ]; 184 | 185 | if (complete !== 0 && inProgress === 0 && pending === 0 && notes === 0) { 186 | log({prefix: '\n ', message: 'All done!', suffix: yellow('★')}); 187 | } 188 | 189 | if (pending + inProgress + complete + notes === 0) { 190 | log({prefix: '\n ', message: 'Type `tb --help` to get started!', suffix: yellow('★')}); 191 | } 192 | 193 | log({prefix: '\n ', message: grey(`${percent} of all tasks complete.`)}); 194 | log({prefix: ' ', message: status.join(grey(' · ')), suffix: '\n'}); 195 | } 196 | 197 | invalidCustomAppDir(path) { 198 | const [prefix, suffix] = ['\n', red(path)]; 199 | const message = 'Custom app directory was not found on your system:'; 200 | error({prefix, message, suffix}); 201 | } 202 | 203 | invalidID(id) { 204 | const [prefix, suffix] = ['\n', grey(id)]; 205 | const message = 'Unable to find item with id:'; 206 | error({prefix, message, suffix}); 207 | } 208 | 209 | invalidIDsNumber() { 210 | const prefix = '\n'; 211 | const message = 'More than one ids were given as input'; 212 | error({prefix, message}); 213 | } 214 | 215 | invalidPriority() { 216 | const prefix = '\n'; 217 | const message = 'Priority can only be 1, 2 or 3'; 218 | error({prefix, message}); 219 | } 220 | 221 | markComplete(ids) { 222 | if (ids.length === 0) { 223 | return; 224 | } 225 | 226 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 227 | const message = `Checked ${ids.length > 1 ? 'tasks' : 'task'}:`; 228 | success({prefix, message, suffix}); 229 | } 230 | 231 | markIncomplete(ids) { 232 | if (ids.length === 0) { 233 | return; 234 | } 235 | 236 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 237 | const message = `Unchecked ${ids.length > 1 ? 'tasks' : 'task'}:`; 238 | success({prefix, message, suffix}); 239 | } 240 | 241 | markStarted(ids) { 242 | if (ids.length === 0) { 243 | return; 244 | } 245 | 246 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 247 | const message = `Started ${ids.length > 1 ? 'tasks' : 'task'}:`; 248 | success({prefix, message, suffix}); 249 | } 250 | 251 | markPaused(ids) { 252 | if (ids.length === 0) { 253 | return; 254 | } 255 | 256 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 257 | const message = `Paused ${ids.length > 1 ? 'tasks' : 'task'}:`; 258 | success({prefix, message, suffix}); 259 | } 260 | 261 | markStarred(ids) { 262 | if (ids.length === 0) { 263 | return; 264 | } 265 | 266 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 267 | const message = `Starred ${ids.length > 1 ? 'items' : 'item'}:`; 268 | success({prefix, message, suffix}); 269 | } 270 | 271 | markUnstarred(ids) { 272 | if (ids.length === 0) { 273 | return; 274 | } 275 | 276 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 277 | const message = `Unstarred ${ids.length > 1 ? 'items' : 'item'}:`; 278 | success({prefix, message, suffix}); 279 | } 280 | 281 | missingBoards() { 282 | const prefix = '\n'; 283 | const message = 'No boards were given as input'; 284 | error({prefix, message}); 285 | } 286 | 287 | missingDesc() { 288 | const prefix = '\n'; 289 | const message = 'No description was given as input'; 290 | error({prefix, message}); 291 | } 292 | 293 | missingID() { 294 | const prefix = '\n'; 295 | const message = 'No id was given as input'; 296 | error({prefix, message}); 297 | } 298 | 299 | successCreate({_id, _isTask}) { 300 | const [prefix, suffix] = ['\n', grey(_id)]; 301 | const message = `Created ${_isTask ? 'task:' : 'note:'}`; 302 | success({prefix, message, suffix}); 303 | } 304 | 305 | successEdit(id) { 306 | const [prefix, suffix] = ['\n', grey(id)]; 307 | const message = 'Updated description of item:'; 308 | success({prefix, message, suffix}); 309 | } 310 | 311 | successDelete(ids) { 312 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 313 | const message = `Deleted ${ids.length > 1 ? 'items' : 'item'}:`; 314 | success({prefix, message, suffix}); 315 | } 316 | 317 | successMove(id, boards) { 318 | const [prefix, suffix] = ['\n', grey(boards.join(', '))]; 319 | const message = `Move item: ${grey(id)} to`; 320 | success({prefix, message, suffix}); 321 | } 322 | 323 | successPriority(id, level) { 324 | const prefix = '\n'; 325 | const message = `Updated priority of task: ${grey(id)} to`; 326 | const suffix = level === '3' ? red('high') : (level === '2' ? yellow('medium') : green('normal')); 327 | success({prefix, message, suffix}); 328 | } 329 | 330 | successRestore(ids) { 331 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 332 | const message = `Restored ${ids.length > 1 ? 'items' : 'item'}:`; 333 | success({prefix, message, suffix}); 334 | } 335 | 336 | successCopyToClipboard(ids) { 337 | const [prefix, suffix] = ['\n', grey(ids.join(', '))]; 338 | const message = `Copied the ${ids.length > 1 ? 'descriptions of items' : 'description of item'}:`; 339 | success({prefix, message, suffix}); 340 | } 341 | } 342 | 343 | module.exports = new Render(); 344 | -------------------------------------------------------------------------------- /src/storage.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | const crypto = require('crypto'); 4 | const fs = require('fs'); 5 | const os = require('os'); 6 | const path = require('path'); 7 | const config = require('./config'); 8 | const render = require('./render'); 9 | 10 | const {basename, join} = path; 11 | 12 | class Storage { 13 | constructor() { 14 | this._storageDir = join(this._mainAppDir, 'storage'); 15 | this._archiveDir = join(this._mainAppDir, 'archive'); 16 | this._tempDir = join(this._mainAppDir, '.temp'); 17 | this._archiveFile = join(this._archiveDir, 'archive.json'); 18 | this._mainStorageFile = join(this._storageDir, 'storage.json'); 19 | 20 | this._ensureDirectories(); 21 | } 22 | 23 | get _mainAppDir() { 24 | const {taskbookDirectory} = config.get(); 25 | const defaultAppDirectory = join(os.homedir(), '.taskbook'); 26 | 27 | if (!taskbookDirectory) { 28 | return defaultAppDirectory; 29 | } 30 | 31 | if (!fs.existsSync(taskbookDirectory)) { 32 | render.invalidCustomAppDir(taskbookDirectory); 33 | process.exit(1); 34 | } 35 | 36 | return join(taskbookDirectory, '.taskbook'); 37 | } 38 | 39 | _ensureMainAppDir() { 40 | if (!fs.existsSync(this._mainAppDir)) { 41 | fs.mkdirSync(this._mainAppDir); 42 | } 43 | } 44 | 45 | _ensureStorageDir() { 46 | if (!fs.existsSync(this._storageDir)) { 47 | fs.mkdirSync(this._storageDir); 48 | } 49 | } 50 | 51 | _ensureTempDir() { 52 | if (!fs.existsSync(this._tempDir)) { 53 | fs.mkdirSync(this._tempDir); 54 | } 55 | } 56 | 57 | _ensureArchiveDir() { 58 | if (!fs.existsSync(this._archiveDir)) { 59 | fs.mkdirSync(this._archiveDir); 60 | } 61 | } 62 | 63 | _cleanTempDir() { 64 | const tempFiles = fs.readdirSync(this._tempDir).map(x => join(this._tempDir, x)); 65 | 66 | if (tempFiles.length !== 0) { 67 | tempFiles.forEach(tempFile => fs.unlinkSync(tempFile)); 68 | } 69 | } 70 | 71 | _ensureDirectories() { 72 | this._ensureMainAppDir(); 73 | this._ensureStorageDir(); 74 | this._ensureArchiveDir(); 75 | this._ensureTempDir(); 76 | this._cleanTempDir(); 77 | } 78 | 79 | _getRandomHexString(length = 8) { 80 | return crypto.randomBytes(Math.ceil(length / 2)).toString('hex').slice(0, length); 81 | } 82 | 83 | _getTempFile(filePath) { 84 | const randomString = this._getRandomHexString(); 85 | const tempFilename = basename(filePath).split('.').join(`.TEMP-${randomString}.`); 86 | return join(this._tempDir, tempFilename); 87 | } 88 | 89 | get() { 90 | let data = {}; 91 | 92 | if (fs.existsSync(this._mainStorageFile)) { 93 | const content = fs.readFileSync(this._mainStorageFile, 'utf8'); 94 | data = JSON.parse(content); 95 | } 96 | 97 | return data; 98 | } 99 | 100 | getArchive() { 101 | let archive = {}; 102 | 103 | if (fs.existsSync(this._archiveFile)) { 104 | const content = fs.readFileSync(this._archiveFile, 'utf8'); 105 | archive = JSON.parse(content); 106 | } 107 | 108 | return archive; 109 | } 110 | 111 | set(data) { 112 | data = JSON.stringify(data, null, 4); 113 | const tempStorageFile = this._getTempFile(this._mainStorageFile); 114 | 115 | fs.writeFileSync(tempStorageFile, data, 'utf8'); 116 | fs.renameSync(tempStorageFile, this._mainStorageFile); 117 | } 118 | 119 | setArchive(archive) { 120 | const data = JSON.stringify(archive, null, 4); 121 | const tempArchiveFile = this._getTempFile(this._archiveFile); 122 | 123 | fs.writeFileSync(tempArchiveFile, data, 'utf8'); 124 | fs.renameSync(tempArchiveFile, this._archiveFile); 125 | } 126 | } 127 | 128 | module.exports = Storage; 129 | -------------------------------------------------------------------------------- /src/task.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const Item = require('./item'); 3 | 4 | class Task extends Item { 5 | constructor(options = {}) { 6 | super(options); 7 | this._isTask = true; 8 | this.isComplete = options.isComplete || false; 9 | this.inProgress = options.inProgress || false; 10 | this.isStarred = options.isStarred || false; 11 | this.priority = options.priority || 1; 12 | } 13 | } 14 | 15 | module.exports = Task; 16 | -------------------------------------------------------------------------------- /src/taskbook.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | const clipboardy = require('clipboardy'); 4 | const Task = require('./task'); 5 | const Note = require('./note'); 6 | const Storage = require('./storage'); 7 | const render = require('./render'); 8 | 9 | class Taskbook { 10 | constructor() { 11 | this._storage = new Storage(); 12 | } 13 | 14 | get _archive() { 15 | return this._storage.getArchive(); 16 | } 17 | 18 | get _data() { 19 | return this._storage.get(); 20 | } 21 | 22 | _arrayify(x) { 23 | return Array.isArray(x) ? x : [x]; 24 | } 25 | 26 | _save(data) { 27 | this._storage.set(data); 28 | } 29 | 30 | _saveArchive(data) { 31 | this._storage.setArchive(data); 32 | } 33 | 34 | _removeDuplicates(x) { 35 | return [...new Set(this._arrayify(x))]; 36 | } 37 | 38 | _generateID(data = this._data) { 39 | const ids = Object.keys(data).map(id => parseInt(id, 10)); 40 | const max = (ids.length === 0) ? 0 : Math.max(...ids); 41 | return max + 1; 42 | } 43 | 44 | _validateIDs(inputIDs, existingIDs = this._getIDs()) { 45 | if (inputIDs.length === 0) { 46 | render.missingID(); 47 | process.exit(1); 48 | } 49 | 50 | inputIDs = this._removeDuplicates(inputIDs); 51 | 52 | inputIDs.forEach(id => { 53 | if (existingIDs.indexOf(Number(id)) === -1) { 54 | render.invalidID(id); 55 | process.exit(1); 56 | } 57 | }); 58 | 59 | return inputIDs; 60 | } 61 | 62 | _isPriorityOpt(x) { 63 | return ['p:1', 'p:2', 'p:3'].indexOf(x) > -1; 64 | } 65 | 66 | _getBoards() { 67 | const {_data} = this; 68 | const boards = ['My Board']; 69 | 70 | Object.keys(_data).forEach(id => { 71 | boards.push(..._data[id].boards.filter(x => boards.indexOf(x) === -1)); 72 | }); 73 | 74 | return boards; 75 | } 76 | 77 | _getDates(data = this._data) { 78 | const dates = []; 79 | 80 | Object.keys(data).forEach(id => { 81 | if (dates.indexOf(data[id]._date) === -1) { 82 | dates.push(data[id]._date); 83 | } 84 | }); 85 | 86 | return dates; 87 | } 88 | 89 | _getIDs(data = this._data) { 90 | return Object.keys(data).map(id => parseInt(id, 10)); 91 | } 92 | 93 | _getPriority(desc) { 94 | const opt = desc.find(x => this._isPriorityOpt(x)); 95 | return opt ? opt[opt.length - 1] : 1; 96 | } 97 | 98 | _getOptions(input) { 99 | const [boards, desc] = [[], []]; 100 | 101 | if (input.length === 0) { 102 | render.missingDesc(); 103 | process.exit(1); 104 | } 105 | 106 | const id = this._generateID(); 107 | const priority = this._getPriority(input); 108 | 109 | input.forEach(x => { 110 | if (!this._isPriorityOpt(x)) { 111 | return x.startsWith('@') && x.length > 1 ? boards.push(x) : desc.push(x); 112 | } 113 | }); 114 | 115 | const description = desc.join(' '); 116 | 117 | if (boards.length === 0) { 118 | boards.push('My Board'); 119 | } 120 | 121 | return {boards, description, id, priority}; 122 | } 123 | 124 | _getStats() { 125 | const {_data} = this; 126 | let [complete, inProgress, pending, notes] = [0, 0, 0, 0]; 127 | 128 | Object.keys(_data).forEach(id => { 129 | if (_data[id]._isTask) { 130 | return _data[id].isComplete ? complete++ : _data[id].inProgress ? inProgress++ : pending++; 131 | } 132 | 133 | return notes++; 134 | }); 135 | 136 | const total = complete + pending + inProgress; 137 | const percent = (total === 0) ? 0 : Math.floor(complete * 100 / total); 138 | 139 | return {percent, complete, inProgress, pending, notes}; 140 | } 141 | 142 | _hasTerms(string, terms) { 143 | for (const term of terms) { 144 | if (string.toLocaleLowerCase().indexOf(term.toLocaleLowerCase()) > -1) { 145 | return string; 146 | } 147 | } 148 | } 149 | 150 | _filterTask(data) { 151 | Object.keys(data).forEach(id => { 152 | if (!data[id]._isTask) { 153 | delete data[id]; 154 | } 155 | }); 156 | return data; 157 | } 158 | 159 | _filterStarred(data) { 160 | Object.keys(data).forEach(id => { 161 | if (!data[id].isStarred) { 162 | delete data[id]; 163 | } 164 | }); 165 | return data; 166 | } 167 | 168 | _filterInProgress(data) { 169 | Object.keys(data).forEach(id => { 170 | if (!data[id]._isTask || !data[id].inProgress) { 171 | delete data[id]; 172 | } 173 | }); 174 | return data; 175 | } 176 | 177 | _filterComplete(data) { 178 | Object.keys(data).forEach(id => { 179 | if (!data[id]._isTask || !data[id].isComplete) { 180 | delete data[id]; 181 | } 182 | }); 183 | return data; 184 | } 185 | 186 | _filterPending(data) { 187 | Object.keys(data).forEach(id => { 188 | if (!data[id]._isTask || data[id].isComplete) { 189 | delete data[id]; 190 | } 191 | }); 192 | return data; 193 | } 194 | 195 | _filterNote(data) { 196 | Object.keys(data).forEach(id => { 197 | if (data[id]._isTask) { 198 | delete data[id]; 199 | } 200 | }); 201 | return data; 202 | } 203 | 204 | _filterByAttributes(attr, data = this._data) { 205 | if (Object.keys(data).length === 0) { 206 | return data; 207 | } 208 | 209 | attr.forEach(x => { 210 | switch (x) { 211 | case 'star': 212 | case 'starred': 213 | data = this._filterStarred(data); 214 | break; 215 | 216 | case 'done': 217 | case 'checked': 218 | case 'complete': 219 | data = this._filterComplete(data); 220 | break; 221 | 222 | case 'progress': 223 | case 'started': 224 | case 'begun': 225 | data = this._filterInProgress(data); 226 | break; 227 | 228 | case 'pending': 229 | case 'unchecked': 230 | case 'incomplete': 231 | data = this._filterPending(data); 232 | break; 233 | 234 | case 'todo': 235 | case 'task': 236 | case 'tasks': 237 | data = this._filterTask(data); 238 | break; 239 | 240 | case 'note': 241 | case 'notes': 242 | data = this._filterNote(data); 243 | break; 244 | 245 | default: 246 | break; 247 | } 248 | }); 249 | 250 | return data; 251 | } 252 | 253 | _groupByBoard(data = this._data, boards = this._getBoards()) { 254 | const grouped = {}; 255 | 256 | if (boards.length === 0) { 257 | boards = this._getBoards(); 258 | } 259 | 260 | Object.keys(data).forEach(id => { 261 | boards.forEach(board => { 262 | if (data[id].boards.includes(board)) { 263 | if (Array.isArray(grouped[board])) { 264 | return grouped[board].push(data[id]); 265 | } 266 | 267 | grouped[board] = [data[id]]; 268 | return grouped[board]; 269 | } 270 | }); 271 | }); 272 | 273 | return grouped; 274 | } 275 | 276 | _groupByDate(data = this._data, dates = this._getDates()) { 277 | const grouped = {}; 278 | 279 | Object.keys(data).forEach(id => { 280 | dates.forEach(date => { 281 | if (data[id]._date === date) { 282 | if (Array.isArray(grouped[date])) { 283 | return grouped[date].push(data[id]); 284 | } 285 | 286 | grouped[date] = [data[id]]; 287 | return grouped[date]; 288 | } 289 | }); 290 | }); 291 | 292 | return grouped; 293 | } 294 | 295 | _saveItemToArchive(item) { 296 | const {_archive} = this; 297 | const archiveID = this._generateID(_archive); 298 | 299 | item._id = archiveID; 300 | _archive[archiveID] = item; 301 | 302 | this._saveArchive(_archive); 303 | } 304 | 305 | _saveItemToStorage(item) { 306 | const {_data} = this; 307 | const restoreID = this._generateID(); 308 | 309 | item._id = restoreID; 310 | _data[restoreID] = item; 311 | 312 | this._save(_data); 313 | } 314 | 315 | createNote(desc) { 316 | const {id, description, boards} = this._getOptions(desc); 317 | const note = new Note({id, description, boards}); 318 | const {_data} = this; 319 | _data[id] = note; 320 | this._save(_data); 321 | render.successCreate(note); 322 | } 323 | 324 | copyToClipboard(ids) { 325 | ids = this._validateIDs(ids); 326 | const {_data} = this; 327 | const descriptions = []; 328 | 329 | ids.forEach(id => descriptions.push(_data[id].description)); 330 | 331 | clipboardy.writeSync(descriptions.join('\n')); 332 | render.successCopyToClipboard(ids); 333 | } 334 | 335 | checkTasks(ids) { 336 | ids = this._validateIDs(ids); 337 | const {_data} = this; 338 | const [checked, unchecked] = [[], []]; 339 | 340 | ids.forEach(id => { 341 | if (_data[id]._isTask) { 342 | _data[id].inProgress = false; 343 | _data[id].isComplete = !_data[id].isComplete; 344 | return _data[id].isComplete ? checked.push(id) : unchecked.push(id); 345 | } 346 | }); 347 | 348 | this._save(_data); 349 | render.markComplete(checked); 350 | render.markIncomplete(unchecked); 351 | } 352 | 353 | beginTasks(ids) { 354 | ids = this._validateIDs(ids); 355 | const {_data} = this; 356 | const [started, paused] = [[], []]; 357 | 358 | ids.forEach(id => { 359 | if (_data[id]._isTask) { 360 | _data[id].isComplete = false; 361 | _data[id].inProgress = !_data[id].inProgress; 362 | return _data[id].inProgress ? started.push(id) : paused.push(id); 363 | } 364 | }); 365 | 366 | this._save(_data); 367 | render.markStarted(started); 368 | render.markPaused(paused); 369 | } 370 | 371 | createTask(desc) { 372 | const {boards, description, id, priority} = this._getOptions(desc); 373 | const task = new Task({id, description, boards, priority}); 374 | const {_data} = this; 375 | _data[id] = task; 376 | this._save(_data); 377 | render.successCreate(task); 378 | } 379 | 380 | deleteItems(ids) { 381 | ids = this._validateIDs(ids); 382 | const {_data} = this; 383 | 384 | ids.forEach(id => { 385 | this._saveItemToArchive(_data[id]); 386 | delete _data[id]; 387 | }); 388 | 389 | this._save(_data); 390 | render.successDelete(ids); 391 | } 392 | 393 | displayArchive() { 394 | render.displayByDate(this._groupByDate(this._archive, this._getDates(this._archive))); 395 | } 396 | 397 | displayByBoard() { 398 | render.displayByBoard(this._groupByBoard()); 399 | } 400 | 401 | displayByDate() { 402 | render.displayByDate(this._groupByDate()); 403 | } 404 | 405 | displayStats() { 406 | render.displayStats(this._getStats()); 407 | } 408 | 409 | editDescription(input) { 410 | const targets = input.filter(x => x.startsWith('@')); 411 | 412 | if (targets.length === 0) { 413 | render.missingID(); 414 | process.exit(1); 415 | } 416 | 417 | if (targets.length > 1) { 418 | render.invalidIDsNumber(); 419 | process.exit(1); 420 | } 421 | 422 | const [target] = targets; 423 | const id = this._validateIDs(target.replace('@', '')); 424 | const newDesc = input.filter(x => x !== target).join(' '); 425 | 426 | if (newDesc.length === 0) { 427 | render.missingDesc(); 428 | process.exit(1); 429 | } 430 | 431 | const {_data} = this; 432 | _data[id].description = newDesc; 433 | this._save(_data); 434 | render.successEdit(id); 435 | } 436 | 437 | findItems(terms) { 438 | const result = {}; 439 | const {_data} = this; 440 | 441 | Object.keys(_data).forEach(id => { 442 | if (!this._hasTerms(_data[id].description, terms)) { 443 | return; 444 | } 445 | 446 | result[id] = _data[id]; 447 | }); 448 | 449 | render.displayByBoard(this._groupByBoard(result)); 450 | } 451 | 452 | listByAttributes(terms) { 453 | let [boards, attributes] = [[], []]; 454 | const storedBoards = this._getBoards(); 455 | 456 | terms.forEach(x => { 457 | if (storedBoards.indexOf(`@${x}`) === -1) { 458 | return x === 'myboard' ? boards.push('My Board') : attributes.push(x); 459 | } 460 | 461 | return boards.push(`@${x}`); 462 | }); 463 | 464 | [boards, attributes] = [boards, attributes].map(x => this._removeDuplicates(x)); 465 | 466 | const data = this._filterByAttributes(attributes); 467 | render.displayByBoard(this._groupByBoard(data, boards)); 468 | } 469 | 470 | moveBoards(input) { 471 | let boards = []; 472 | const targets = input.filter(x => x.startsWith('@')); 473 | 474 | if (targets.length === 0) { 475 | render.missingID(); 476 | process.exit(1); 477 | } 478 | 479 | if (targets.length > 1) { 480 | render.invalidIDsNumber(); 481 | process.exit(1); 482 | } 483 | 484 | const [target] = targets; 485 | const id = this._validateIDs(target.replace('@', '')); 486 | 487 | input.filter(x => x !== target).forEach(x => { 488 | boards.push(x === 'myboard' ? 'My Board' : `@${x}`); 489 | }); 490 | 491 | if (boards.length === 0) { 492 | render.missingBoards(); 493 | process.exit(1); 494 | } 495 | 496 | boards = this._removeDuplicates(boards); 497 | 498 | const {_data} = this; 499 | _data[id].boards = boards; 500 | this._save(_data); 501 | render.successMove(id, boards); 502 | } 503 | 504 | restoreItems(ids) { 505 | ids = this._validateIDs(ids, this._getIDs(this._archive)); 506 | const {_archive} = this; 507 | 508 | ids.forEach(id => { 509 | this._saveItemToStorage(_archive[id]); 510 | delete _archive[id]; 511 | }); 512 | 513 | this._saveArchive(_archive); 514 | render.successRestore(ids); 515 | } 516 | 517 | starItems(ids) { 518 | ids = this._validateIDs(ids); 519 | const {_data} = this; 520 | const [starred, unstarred] = [[], []]; 521 | 522 | ids.forEach(id => { 523 | _data[id].isStarred = !_data[id].isStarred; 524 | return _data[id].isStarred ? starred.push(id) : unstarred.push(id); 525 | }); 526 | 527 | this._save(_data); 528 | render.markStarred(starred); 529 | render.markUnstarred(unstarred); 530 | } 531 | 532 | updatePriority(input) { 533 | const level = input.find(x => ['1', '2', '3'].indexOf(x) > -1); 534 | 535 | if (!level) { 536 | render.invalidPriority(); 537 | process.exit(1); 538 | } 539 | 540 | const targets = input.filter(x => x.startsWith('@')); 541 | 542 | if (targets.length === 0) { 543 | render.missingID(); 544 | process.exit(1); 545 | } 546 | 547 | if (targets.length > 1) { 548 | render.invalidIDsNumber(); 549 | process.exit(1); 550 | } 551 | 552 | const [target] = targets; 553 | const id = this._validateIDs(target.replace('@', '')); 554 | 555 | const {_data} = this; 556 | _data[id].priority = level; 557 | this._save(_data); 558 | render.successPriority(id, level); 559 | } 560 | 561 | clear() { 562 | const ids = []; 563 | const {_data} = this; 564 | 565 | Object.keys(_data).forEach(id => { 566 | if (_data[id].isComplete) { 567 | ids.push(id); 568 | } 569 | }); 570 | 571 | if (ids.length === 0) { 572 | return; 573 | } 574 | 575 | this.deleteItems(ids); 576 | } 577 | } 578 | 579 | module.exports = new Taskbook(); 580 | --------------------------------------------------------------------------------