├── .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 |

11 |
12 |
13 |
14 |
15 |
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 |

146 |
147 |
148 | ### Изглед Времева линия
149 |
150 | За да покажете всички елементи във времеви изглед, базирано на тяхната дата на създаване, `--timeline`/`-i` трябва да бъде използван.
151 |
152 |
153 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

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 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

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 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

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 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

143 |
144 |
145 | ### タイムライン
146 |
147 | 全てのアイテムをタイムラインに表示するためには、`--timeline`/`-i` オプションを利用することで作成日順に表示されます。
148 |
149 |
150 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

146 |
147 |
148 | ### 타임라인 뷰
149 |
150 | 타임라인 뷰로 모든 아이템들을 보려면 (생성시간 기준), `--timeline`/`-i` 옵션을 사용하면 됩니다.
151 |
152 |
153 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

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 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

121 |
122 |
123 | ### Обзор хронологии
124 |
125 | Для просмотра всех записей в хронологическом порядке (по дате создания), может быть использована опция `--timeline`/`-i`.
126 |
127 |
128 |

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 |

11 |
12 |
13 |
14 |
15 |
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 |

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 |

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 |

12 |
13 |
14 |
15 |
16 |
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 |

145 |
146 |
147 | ### 时间线视图
148 |
149 | 为了显示时间线视图中的所有条目,根据其创建日期,`--timeline`/`-i`选项可以使用。
150 |
151 |
152 |

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 |

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 |

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 |

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 |
--------------------------------------------------------------------------------