@qodalis/cli-todo 0.0.6 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md DELETED
@@ -1,34 +0,0 @@
1
- # Cli extension
2
-
3
- The `@qodalis/cli-todo` package is a powerful CLI extension designed to help you manage your tasks efficiently. With a simple and intuitive command structure, you can add, list, complete, and remove TODO items directly from your command line.
4
-
5
- # Features
6
-
7
- Add tasks with a single command.
8
- View all your TODO items in a clear, organized list.
9
- Mark tasks as complete to keep track of your progress.
10
- Remove tasks when they are no longer needed.
11
- Persistent storage for your tasks across CLI sessions.
12
-
13
- # Installation
14
-
15
- ```bash
16
- packages add @qodalis/cli-todo
17
- ```
18
-
19
- This command downloads and registers the extension for use within the CLI environment.
20
-
21
- # Usage
22
-
23
- ```bash
24
- todo ls
25
- todo add <task description>
26
- todo add Buy groceries
27
- todo add Finish the project report
28
- todo complete <task ID>
29
- todo complete 1
30
- todo rm <task ID>
31
-
32
- todo ls
33
- [ ] #2 - Finish the project report
34
- ```
@@ -1,19 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { resolveCommandProcessorProvider } from '@qodalis/angular-cli';
3
- import { CliTodoCommandProcessor } from './processors/cli-todo-command-processor';
4
- import * as i0 from "@angular/core";
5
- export class CliTodoModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)] }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, decorators: [{
11
- type: NgModule,
12
- args: [{
13
- declarations: [],
14
- imports: [],
15
- exports: [],
16
- providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)],
17
- }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRvZG8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9kby9zcmMvbGliL2NsaS10b2RvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQVFsRixNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWE7Z0hBQWIsYUFBYSxhQUZYLENBQUMsK0JBQStCLENBQUMsdUJBQXVCLENBQUMsQ0FBQzs7NEZBRTVELGFBQWE7a0JBTnpCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDLHVCQUF1QixDQUFDLENBQUM7aUJBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc29sdmVDb21tYW5kUHJvY2Vzc29yUHJvdmlkZXIgfSBmcm9tICdAcW9kYWxpcy9hbmd1bGFyLWNsaSc7XG5pbXBvcnQgeyBDbGlUb2RvQ29tbWFuZFByb2Nlc3NvciB9IGZyb20gJy4vcHJvY2Vzc29ycy9jbGktdG9kby1jb21tYW5kLXByb2Nlc3Nvcic7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXSxcbiAgICBpbXBvcnRzOiBbXSxcbiAgICBleHBvcnRzOiBbXSxcbiAgICBwcm92aWRlcnM6IFtyZXNvbHZlQ29tbWFuZFByb2Nlc3NvclByb3ZpZGVyKENsaVRvZG9Db21tYW5kUHJvY2Vzc29yKV0sXG59KVxuZXhwb3J0IGNsYXNzIENsaVRvZG9Nb2R1bGUge31cbiJdfQ==
@@ -1,181 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { CliForegroundColor, CliIcon, DefaultLibraryAuthor, } from '@qodalis/cli-core';
3
- import { LIBRARY_VERSION } from '../version';
4
- import * as i0 from "@angular/core";
5
- export class CliTodoCommandProcessor {
6
- constructor() {
7
- this.command = 'todo';
8
- this.description = 'A command-line tool for managing your tasks efficiently. Add, list, complete, and remove TODO items with simple commands.';
9
- this.author = DefaultLibraryAuthor;
10
- this.version = LIBRARY_VERSION;
11
- this.processors = [];
12
- this.metadata = {
13
- icon: '📝',
14
- requiredCoreVersion: '0.0.16',
15
- requiredCliVersion: '1.0.37',
16
- };
17
- this.stateConfiguration = {
18
- initialState: {
19
- todos: this.loadFromOldStorage() ?? [],
20
- },
21
- };
22
- this.todos = [];
23
- this.nextId = 1;
24
- this.registerSubProcessors();
25
- }
26
- async processCommand(command, context) {
27
- context.executor.showHelp(command, context);
28
- }
29
- writeDescription(context) {
30
- const { writer } = context;
31
- writer.writeln(this.description);
32
- writer.writeln();
33
- writer.writeln('📋 Commands:');
34
- writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} 📃 List all TODO items`);
35
- writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ➕ Add a new TODO item`);
36
- writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} 🗑 Remove a TODO item by ID`);
37
- writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} 🗑 Remove all TODO items`);
38
- writer.writeln(` ${writer.wrapInColor('todo complete <id>', CliForegroundColor.Cyan)} ✔ Mark a TODO as completed`);
39
- writer.writeln();
40
- writer.writeln('📝 Examples:');
41
- writer.writeln(` todo add Buy milk ${writer.wrapInColor('# Add a new task', CliForegroundColor.Green)}`);
42
- writer.writeln(` todo ls ${writer.wrapInColor('# View all tasks', CliForegroundColor.Green)}`);
43
- writer.writeln(` todo complete 1 ${writer.wrapInColor('# Mark task #1 done', CliForegroundColor.Green)}`);
44
- writer.writeln(` todo rm 2 ${writer.wrapInColor('# Delete task #2', CliForegroundColor.Green)}`);
45
- }
46
- async initialize(context) {
47
- context.state
48
- .select((x) => x['todos'])
49
- .subscribe((todos) => {
50
- this.todos = todos;
51
- this.nextId =
52
- this.todos.length > 0
53
- ? Math.max(...this.todos.map((t) => t.id)) + 1
54
- : 1;
55
- });
56
- }
57
- lineThroughText(text) {
58
- return text
59
- .split('')
60
- .map((char) => char + '\u0336')
61
- .join('');
62
- }
63
- registerSubProcessors() {
64
- this.processors = [
65
- {
66
- command: 'ls',
67
- description: 'List all TODO items',
68
- processCommand: async (_, context) => {
69
- if (this.todos.length === 0) {
70
- context.writer.writeWarning('No TODO items found.');
71
- context.writer.writeln('Use "todo add <text>" to add a new TODO item.');
72
- context.process.output(JSON.stringify(this.todos));
73
- return;
74
- }
75
- this.todos.forEach((todo) => {
76
- context.writer.writeln(`[${todo.completed ? context.writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green) : ' '}] #${todo.id} - ${todo.text}`);
77
- });
78
- context.process.output(this.todos);
79
- },
80
- },
81
- {
82
- command: 'add',
83
- description: 'Add a new TODO item',
84
- allowUnlistedCommands: true,
85
- valueRequired: true,
86
- processCommand: async (command, context) => {
87
- const text = command.value;
88
- if (!text) {
89
- context.writer.writeError('Please provide a TODO description.');
90
- return;
91
- }
92
- const newItem = {
93
- id: this.nextId++,
94
- text,
95
- completed: false,
96
- };
97
- this.todos.push(newItem);
98
- await this.saveToStorage(context);
99
- context.writer.writeSuccess(`Added TODO: "${text}"`);
100
- context.process.output(newItem.id.toString());
101
- },
102
- },
103
- {
104
- command: 'rm',
105
- description: 'Remove a TODO item by ID',
106
- allowUnlistedCommands: true,
107
- parameters: [
108
- {
109
- name: 'all',
110
- description: 'Remove all TODO items',
111
- type: 'boolean',
112
- defaultValue: false,
113
- aliases: ['a'],
114
- required: false,
115
- },
116
- ],
117
- processCommand: async (command, context) => {
118
- if (command.args['all'] || command.args['a']) {
119
- this.todos = [];
120
- await this.saveToStorage(context);
121
- context.writer.writeSuccess('Removed all TODO items.');
122
- return;
123
- }
124
- const id = parseInt(command.value, 10);
125
- if (isNaN(id)) {
126
- context.writer.writeError('Please provide a valid TODO ID.');
127
- return;
128
- }
129
- const index = this.todos.findIndex((todo) => todo.id === id);
130
- if (index === -1) {
131
- context.writer.writeInfo(`TODO item with ID ${id} not found.`);
132
- return;
133
- }
134
- this.todos.splice(index, 1);
135
- await this.saveToStorage(context);
136
- context.writer.writeSuccess(`Removed TODO item with ID ${id}.`);
137
- },
138
- },
139
- {
140
- command: 'complete',
141
- description: 'Mark a TODO item as completed by ID',
142
- allowUnlistedCommands: true,
143
- valueRequired: true,
144
- processCommand: async (command, context) => {
145
- const id = parseInt(command.value || '', 10);
146
- if (isNaN(id)) {
147
- context.writer.writeln('Please provide a valid TODO ID.');
148
- return;
149
- }
150
- const todo = this.todos.find((todo) => todo.id === id);
151
- if (!todo) {
152
- context.writer.writeError(`TODO item with ID ${id} not found.`);
153
- return;
154
- }
155
- if (todo.completed) {
156
- context.writer.writeInfo(`TODO item with ID ${id} is already completed.`);
157
- return;
158
- }
159
- todo.completed = true;
160
- await this.saveToStorage(context);
161
- context.writer.writeSuccess(`Marked TODO item with ID ${id} as completed.`);
162
- },
163
- },
164
- ];
165
- }
166
- loadFromOldStorage() {
167
- const data = localStorage.getItem('todo-items');
168
- return data ? JSON.parse(data) : [];
169
- }
170
- async saveToStorage(context) {
171
- context.state.updateState({ todos: this.todos });
172
- await context.state.persist();
173
- localStorage.removeItem('todo-items');
174
- }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
176
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor }); }
177
- }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, decorators: [{
179
- type: Injectable
180
- }], ctorParameters: function () { return []; } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRvZG8tY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2RvL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktdG9kby1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsT0FBTyxFQUlQLG9CQUFvQixHQUd2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBSzdDLE1BQU0sT0FBTyx1QkFBdUI7SUE0QmhDO1FBM0JBLFlBQU8sR0FBRyxNQUFNLENBQUM7UUFFakIsZ0JBQVcsR0FDUCwySEFBMkgsQ0FBQztRQUVoSSxXQUFNLEdBQUcsb0JBQW9CLENBQUM7UUFFOUIsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUUxQixlQUFVLEdBQXdDLEVBQUUsQ0FBQztRQUVyRCxhQUFRLEdBQXNDO1lBQzFDLElBQUksRUFBRSxJQUFJO1lBQ1YsbUJBQW1CLEVBQUUsUUFBUTtZQUM3QixrQkFBa0IsRUFBRSxRQUFRO1NBQy9CLENBQUM7UUFFRix1QkFBa0IsR0FBdUM7WUFDckQsWUFBWSxFQUFFO2dCQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxFQUFFO2FBQ3pDO1NBQ0osQ0FBQztRQUVNLFVBQUssR0FBZSxFQUFFLENBQUM7UUFFdkIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUdmLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUNoQixPQUEwQixFQUMxQixPQUE2QjtRQUU3QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FB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QjtRQUNyRCxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVqRCxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQTlOUSx1QkFBdUI7bUhBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2xpRm9yZWdyb3VuZENvbG9yLFxuICAgIENsaUljb24sXG4gICAgQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgQ2xpUHJvY2Vzc29yTWV0YWRhdGEsXG4gICAgQ2xpU3RhdGVDb25maWd1cmF0aW9uLFxuICAgIERlZmF1bHRMaWJyYXJ5QXV0aG9yLFxuICAgIElDbGlDb21tYW5kUHJvY2Vzc29yLFxuICAgIElDbGlFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICdAcW9kYWxpcy9jbGktY29yZSc7XG5pbXBvcnQgeyBMSUJSQVJZX1ZFUlNJT04gfSBmcm9tICcuLi92ZXJzaW9uJztcblxudHlwZSBUb2RvSXRlbSA9IHsgaWQ6IG51bWJlcjsgdGV4dDogc3RyaW5nOyBjb21wbGV0ZWQ6IGJvb2xlYW4gfTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENsaVRvZG9Db21tYW5kUHJvY2Vzc29yIGltcGxlbWVudHMgSUNsaUNvbW1hbmRQcm9jZXNzb3Ige1xuICAgIGNvbW1hbmQgPSAndG9kbyc7XG5cbiAgICBkZXNjcmlwdGlvbiA9XG4gICAgICAgICdBIGNvbW1hbmQtbGluZSB0b29sIGZvciBtYW5hZ2luZyB5b3VyIHRhc2tzIGVmZmljaWVudGx5LiBBZGQsIGxpc3QsIGNvbXBsZXRlLCBhbmQgcmVtb3ZlIFRPRE8gaXRlbXMgd2l0aCBzaW1wbGUgY29tbWFuZHMuJztcblxuICAgIGF1dGhvciA9IERlZmF1bHRMaWJyYXJ5QXV0aG9yO1xuXG4gICAgdmVyc2lvbiA9IExJQlJBUllfVkVSU0lPTjtcblxuICAgIHByb2Nlc3NvcnM/OiBJQ2xpQ29tbWFuZFByb2Nlc3NvcltdIHwgdW5kZWZpbmVkID0gW107XG5cbiAgICBtZXRhZGF0YT86IENsaVByb2Nlc3Nvck1ldGFkYXRhIHwgdW5kZWZpbmVkID0ge1xuICAgICAgICBpY29uOiAn8J+TnScsXG4gICAgICAgIHJlcXVpcmVkQ29yZVZlcnNpb246ICcwLjAuMTYnLFxuICAgICAgICByZXF1aXJlZENsaVZlcnNpb246ICcxLjAuMzcnLFxuICAgIH07XG5cbiAgICBzdGF0ZUNvbmZpZ3VyYXRpb24/OiBDbGlTdGF0ZUNvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSB7XG4gICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgdG9kb3M6IHRoaXMubG9hZEZyb21PbGRTdG9yYWdlKCkgPz8gW10sXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHByaXZhdGUgdG9kb3M6IFRvZG9JdGVtW10gPSBbXTtcblxuICAgIHByaXZhdGUgbmV4dElkID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3ViUHJvY2Vzc29ycygpO1xuICAgIH1cblxuICAgIGFzeW5jIHByb2Nlc3NDb21tYW5kKFxuICAgICAgICBjb21tYW5kOiBDbGlQcm9jZXNzQ29tbWFuZCxcbiAgICAgICAgY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQsXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnRleHQuZXhlY3V0b3Iuc2hvd0hlbHAoY29tbWFuZCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgd3JpdGVEZXNjcmlwdGlvbihjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHdyaXRlciB9ID0gY29udGV4dDtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4odGhpcy5kZXNjcmlwdGlvbiEpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbigpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbign8J+TiyBDb21tYW5kczonKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJ3RvZG8gbHMnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuQ3lhbil9ICAgICAgICAgICAgICAg8J+TgyBMaXN0IGFsbCBUT0RPIGl0ZW1zYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCd0b2RvIGFkZCA8dGV4dD4nLCBDbGlGb3JlZ3JvdW5kQ29sb3IuQ3lhbil9ICAgICAgICDinpUgQWRkIGEgbmV3IFRPRE8gaXRlbWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICAke3dyaXRlci53cmFwSW5Db2xvcigndG9kbyBybSA8aWQ+JywgQ2xpRm9yZWdyb3VuZENvbG9yLkN5YW4pfSAgICAgICAgICAg8J+XkSAgUmVtb3ZlIGEgVE9ETyBpdGVtIGJ5IElEYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCd0b2RvIHJtIC0tYWxsJywgQ2xpRm9yZWdyb3VuZENvbG9yLkN5YW4pfSAgICAgICAgICDwn5eRICBSZW1vdmUgYWxsIFRPRE8gaXRlbXNgKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJ3RvZG8gY29tcGxldGUgPGlkPicsIENsaUZvcmVncm91bmRDb2xvci5DeWFuKX0gICAgIOKclCAgTWFyayBhIFRPRE8gYXMgY29tcGxldGVkYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCfwn5OdIEV4YW1wbGVzOicpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICB0b2RvIGFkZCBCdXkgbWlsayAgICAgICAgICAgICAgICAke3dyaXRlci53cmFwSW5Db2xvcignIyBBZGQgYSBuZXcgdGFzaycsIENsaUZvcmVncm91bmRDb2xvci5HcmVlbil9YCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgIHRvZG8gbHMgICAgICAgICAgICAgICAgICAgICAgICAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCcjIFZpZXcgYWxsIHRhc2tzJywgQ2xpRm9yZWdyb3VuZENvbG9yLkdyZWVuKX1gKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgdG9kbyBjb21wbGV0ZSAxICAgICAgICAgICAgICAgICAgJHt3cml0ZXIud3JhcEluQ29sb3IoJyMgTWFyayB0YXNrICMxIGRvbmUnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuR3JlZW4pfWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICB0b2RvIHJtIDIgICAgICAgICAgICAgICAgICAgICAgICAke3dyaXRlci53cmFwSW5Db2xvcignIyBEZWxldGUgdGFzayAjMicsIENsaUZvcmVncm91bmRDb2xvci5HcmVlbil9YCk7XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdGlhbGl6ZShjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb250ZXh0LnN0YXRlXG4gICAgICAgICAgICAuc2VsZWN0PFRvZG9JdGVtW10+KCh4KSA9PiB4Wyd0b2RvcyddKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodG9kb3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZG9zID0gdG9kb3M7XG5cbiAgICAgICAgICAgICAgICB0aGlzLm5leHRJZCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9kb3MubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBNYXRoLm1heCguLi50aGlzLnRvZG9zLm1hcCgodCkgPT4gdC5pZCkpICsgMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAxO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsaW5lVGhyb3VnaFRleHQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRleHRcbiAgICAgICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgICAgIC5tYXAoKGNoYXIpID0+IGNoYXIgKyAnXFx1MDMzNicpXG4gICAgICAgICAgICAuam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWdpc3RlclN1YlByb2Nlc3NvcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvY2Vzc29ycyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAnbHMnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBhbGwgVE9ETyBpdGVtcycsXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQ6IGFzeW5jIChfLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZG9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVXYXJuaW5nKCdObyBUT0RPIGl0ZW1zIGZvdW5kLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlIFwidG9kbyBhZGQgPHRleHQ+XCIgdG8gYWRkIGEgbmV3IFRPRE8gaXRlbS4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucHJvY2Vzcy5vdXRwdXQoSlNPTi5zdHJpbmdpZnkodGhpcy50b2RvcykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9kb3MuZm9yRWFjaCgodG9kbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7dG9kby5jb21wbGV0ZWQgPyBjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcihDbGlJY29uLkNoZWNrSWNvbiwgQ2xpRm9yZWdyb3VuZENvbG9yLkdyZWVuKSA6ICcgJ31dICMke3RvZG8uaWR9IC0gJHt0b2RvLnRleHR9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucHJvY2Vzcy5vdXRwdXQodGhpcy50b2Rvcyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogJ2FkZCcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBZGQgYSBuZXcgVE9ETyBpdGVtJyxcbiAgICAgICAgICAgICAgICBhbGxvd1VubGlzdGVkQ29tbWFuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZDogYXN5bmMgKGNvbW1hbmQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IGNvbW1hbmQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHByb3ZpZGUgYSBUT0RPIGRlc2NyaXB0aW9uLicsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLm5leHRJZCsrLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2Rvcy5wdXNoKG5ld0l0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvU3RvcmFnZShjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZVN1Y2Nlc3MoYEFkZGVkIFRPRE86IFwiJHt0ZXh0fVwiYCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5wcm9jZXNzLm91dHB1dChuZXdJdGVtLmlkLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICdybScsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdSZW1vdmUgYSBUT0RPIGl0ZW0gYnkgSUQnLFxuICAgICAgICAgICAgICAgIGFsbG93VW5saXN0ZWRDb21tYW5kczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdSZW1vdmUgYWxsIFRPRE8gaXRlbXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IFsnYSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQ6IGFzeW5jIChjb21tYW5kLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21tYW5kLmFyZ3NbJ2FsbCddIHx8IGNvbW1hbmQuYXJnc1snYSddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZG9zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVUb1N0b3JhZ2UoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZVN1Y2Nlc3MoJ1JlbW92ZWQgYWxsIFRPRE8gaXRlbXMuJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHBhcnNlSW50KGNvbW1hbmQudmFsdWUhLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBwcm92aWRlIGEgdmFsaWQgVE9ETyBJRC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudG9kb3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRvZG8pID0+IHRvZG8uaWQgPT09IGlkLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYFRPRE8gaXRlbSB3aXRoIElEICR7aWR9IG5vdCBmb3VuZC5gLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZG9zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvU3RvcmFnZShjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVTdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgYFJlbW92ZWQgVE9ETyBpdGVtIHdpdGggSUQgJHtpZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAnY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTWFyayBhIFRPRE8gaXRlbSBhcyBjb21wbGV0ZWQgYnkgSUQnLFxuICAgICAgICAgICAgICAgIGFsbG93VW5saXN0ZWRDb21tYW5kczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoY29tbWFuZCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHBhcnNlSW50KGNvbW1hbmQudmFsdWUgfHwgJycsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVsbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHByb3ZpZGUgYSB2YWxpZCBUT0RPIElELicsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZG8gPSB0aGlzLnRvZG9zLmZpbmQoKHRvZG8pID0+IHRvZG8uaWQgPT09IGlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0b2RvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBUT0RPIGl0ZW0gd2l0aCBJRCAke2lkfSBub3QgZm91bmQuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgVE9ETyBpdGVtIHdpdGggSUQgJHtpZH0gaXMgYWxyZWFkeSBjb21wbGV0ZWQuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0b2RvLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZVRvU3RvcmFnZShjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVTdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgYE1hcmtlZCBUT0RPIGl0ZW0gd2l0aCBJRCAke2lkfSBhcyBjb21wbGV0ZWQuYCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRGcm9tT2xkU3RvcmFnZSgpOiBUb2RvSXRlbVtdIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2RvLWl0ZW1zJyk7XG4gICAgICAgIHJldHVybiBkYXRhID8gSlNPTi5wYXJzZShkYXRhKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2F2ZVRvU3RvcmFnZShjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb250ZXh0LnN0YXRlLnVwZGF0ZVN0YXRlKHsgdG9kb3M6IHRoaXMudG9kb3MgfSk7XG5cbiAgICAgICAgYXdhaXQgY29udGV4dC5zdGF0ZS5wZXJzaXN0KCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2RvLWl0ZW1zJyk7XG4gICAgfVxufVxuIl19
@@ -1,3 +0,0 @@
1
- // Automatically generated during build
2
- export const LIBRARY_VERSION = '0.0.6';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvZG8vc3JjL2xpYi92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgYnVpbGRcbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZFUlNJT04gPSAnMC4wLjYnO1xuICAiXX0=
@@ -1,6 +0,0 @@
1
- /*
2
- * Public API Surface of string
3
- */
4
- export * from './lib/cli-todo.module';
5
- export * from './lib/processors/cli-todo-command-processor';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvZG8vc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHN0cmluZ1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsaS10b2RvLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2Nlc3NvcnMvY2xpLXRvZG8tY29tbWFuZC1wcm9jZXNzb3InO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW9kYWxpcy1jbGktdG9kby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvZG8vc3JjL3FvZGFsaXMtY2xpLXRvZG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,210 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
3
- import { resolveCommandProcessorProvider } from '@qodalis/angular-cli';
4
- import { DefaultLibraryAuthor, CliForegroundColor, CliIcon } from '@qodalis/cli-core';
5
-
6
- // Automatically generated during build
7
- const LIBRARY_VERSION = '0.0.6';
8
-
9
- class CliTodoCommandProcessor {
10
- constructor() {
11
- this.command = 'todo';
12
- this.description = 'A command-line tool for managing your tasks efficiently. Add, list, complete, and remove TODO items with simple commands.';
13
- this.author = DefaultLibraryAuthor;
14
- this.version = LIBRARY_VERSION;
15
- this.processors = [];
16
- this.metadata = {
17
- icon: '📝',
18
- requiredCoreVersion: '0.0.16',
19
- requiredCliVersion: '1.0.37',
20
- };
21
- this.stateConfiguration = {
22
- initialState: {
23
- todos: this.loadFromOldStorage() ?? [],
24
- },
25
- };
26
- this.todos = [];
27
- this.nextId = 1;
28
- this.registerSubProcessors();
29
- }
30
- async processCommand(command, context) {
31
- context.executor.showHelp(command, context);
32
- }
33
- writeDescription(context) {
34
- const { writer } = context;
35
- writer.writeln(this.description);
36
- writer.writeln();
37
- writer.writeln('📋 Commands:');
38
- writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} 📃 List all TODO items`);
39
- writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ➕ Add a new TODO item`);
40
- writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} 🗑 Remove a TODO item by ID`);
41
- writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} 🗑 Remove all TODO items`);
42
- writer.writeln(` ${writer.wrapInColor('todo complete <id>', CliForegroundColor.Cyan)} ✔ Mark a TODO as completed`);
43
- writer.writeln();
44
- writer.writeln('📝 Examples:');
45
- writer.writeln(` todo add Buy milk ${writer.wrapInColor('# Add a new task', CliForegroundColor.Green)}`);
46
- writer.writeln(` todo ls ${writer.wrapInColor('# View all tasks', CliForegroundColor.Green)}`);
47
- writer.writeln(` todo complete 1 ${writer.wrapInColor('# Mark task #1 done', CliForegroundColor.Green)}`);
48
- writer.writeln(` todo rm 2 ${writer.wrapInColor('# Delete task #2', CliForegroundColor.Green)}`);
49
- }
50
- async initialize(context) {
51
- context.state
52
- .select((x) => x['todos'])
53
- .subscribe((todos) => {
54
- this.todos = todos;
55
- this.nextId =
56
- this.todos.length > 0
57
- ? Math.max(...this.todos.map((t) => t.id)) + 1
58
- : 1;
59
- });
60
- }
61
- lineThroughText(text) {
62
- return text
63
- .split('')
64
- .map((char) => char + '\u0336')
65
- .join('');
66
- }
67
- registerSubProcessors() {
68
- this.processors = [
69
- {
70
- command: 'ls',
71
- description: 'List all TODO items',
72
- processCommand: async (_, context) => {
73
- if (this.todos.length === 0) {
74
- context.writer.writeWarning('No TODO items found.');
75
- context.writer.writeln('Use "todo add <text>" to add a new TODO item.');
76
- context.process.output(JSON.stringify(this.todos));
77
- return;
78
- }
79
- this.todos.forEach((todo) => {
80
- context.writer.writeln(`[${todo.completed ? context.writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green) : ' '}] #${todo.id} - ${todo.text}`);
81
- });
82
- context.process.output(this.todos);
83
- },
84
- },
85
- {
86
- command: 'add',
87
- description: 'Add a new TODO item',
88
- allowUnlistedCommands: true,
89
- valueRequired: true,
90
- processCommand: async (command, context) => {
91
- const text = command.value;
92
- if (!text) {
93
- context.writer.writeError('Please provide a TODO description.');
94
- return;
95
- }
96
- const newItem = {
97
- id: this.nextId++,
98
- text,
99
- completed: false,
100
- };
101
- this.todos.push(newItem);
102
- await this.saveToStorage(context);
103
- context.writer.writeSuccess(`Added TODO: "${text}"`);
104
- context.process.output(newItem.id.toString());
105
- },
106
- },
107
- {
108
- command: 'rm',
109
- description: 'Remove a TODO item by ID',
110
- allowUnlistedCommands: true,
111
- parameters: [
112
- {
113
- name: 'all',
114
- description: 'Remove all TODO items',
115
- type: 'boolean',
116
- defaultValue: false,
117
- aliases: ['a'],
118
- required: false,
119
- },
120
- ],
121
- processCommand: async (command, context) => {
122
- if (command.args['all'] || command.args['a']) {
123
- this.todos = [];
124
- await this.saveToStorage(context);
125
- context.writer.writeSuccess('Removed all TODO items.');
126
- return;
127
- }
128
- const id = parseInt(command.value, 10);
129
- if (isNaN(id)) {
130
- context.writer.writeError('Please provide a valid TODO ID.');
131
- return;
132
- }
133
- const index = this.todos.findIndex((todo) => todo.id === id);
134
- if (index === -1) {
135
- context.writer.writeInfo(`TODO item with ID ${id} not found.`);
136
- return;
137
- }
138
- this.todos.splice(index, 1);
139
- await this.saveToStorage(context);
140
- context.writer.writeSuccess(`Removed TODO item with ID ${id}.`);
141
- },
142
- },
143
- {
144
- command: 'complete',
145
- description: 'Mark a TODO item as completed by ID',
146
- allowUnlistedCommands: true,
147
- valueRequired: true,
148
- processCommand: async (command, context) => {
149
- const id = parseInt(command.value || '', 10);
150
- if (isNaN(id)) {
151
- context.writer.writeln('Please provide a valid TODO ID.');
152
- return;
153
- }
154
- const todo = this.todos.find((todo) => todo.id === id);
155
- if (!todo) {
156
- context.writer.writeError(`TODO item with ID ${id} not found.`);
157
- return;
158
- }
159
- if (todo.completed) {
160
- context.writer.writeInfo(`TODO item with ID ${id} is already completed.`);
161
- return;
162
- }
163
- todo.completed = true;
164
- await this.saveToStorage(context);
165
- context.writer.writeSuccess(`Marked TODO item with ID ${id} as completed.`);
166
- },
167
- },
168
- ];
169
- }
170
- loadFromOldStorage() {
171
- const data = localStorage.getItem('todo-items');
172
- return data ? JSON.parse(data) : [];
173
- }
174
- async saveToStorage(context) {
175
- context.state.updateState({ todos: this.todos });
176
- await context.state.persist();
177
- localStorage.removeItem('todo-items');
178
- }
179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
180
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor }); }
181
- }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, decorators: [{
183
- type: Injectable
184
- }], ctorParameters: function () { return []; } });
185
-
186
- class CliTodoModule {
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
188
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule }); }
189
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)] }); }
190
- }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, decorators: [{
192
- type: NgModule,
193
- args: [{
194
- declarations: [],
195
- imports: [],
196
- exports: [],
197
- providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)],
198
- }]
199
- }] });
200
-
201
- /*
202
- * Public API Surface of string
203
- */
204
-
205
- /**
206
- * Generated bundle index. Do not edit.
207
- */
208
-
209
- export { CliTodoCommandProcessor, CliTodoModule };
210
- //# sourceMappingURL=qodalis-cli-todo.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"qodalis-cli-todo.mjs","sources":["../../../projects/todo/src/lib/version.ts","../../../projects/todo/src/lib/processors/cli-todo-command-processor.ts","../../../projects/todo/src/lib/cli-todo.module.ts","../../../projects/todo/src/public-api.ts","../../../projects/todo/src/qodalis-cli-todo.ts"],"sourcesContent":["\n// Automatically generated during build\nexport const LIBRARY_VERSION = '0.0.6';\n ","import { Injectable } from '@angular/core';\nimport {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\n\ntype TodoItem = { id: number; text: string; completed: boolean };\n\n@Injectable()\nexport class CliTodoCommandProcessor implements ICliCommandProcessor {\n command = 'todo';\n\n description =\n 'A command-line tool for managing your tasks efficiently. Add, list, complete, and remove TODO items with simple commands.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '📝',\n requiredCoreVersion: '0.0.16',\n requiredCliVersion: '1.0.37',\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {\n todos: this.loadFromOldStorage() ?? [],\n },\n };\n\n private todos: TodoItem[] = [];\n\n private nextId = 1;\n\n constructor() {\n this.registerSubProcessors();\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.executor.showHelp(command, context);\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n writer.writeln(this.description!);\n writer.writeln();\n writer.writeln('📋 Commands:');\n writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} 📃 List all TODO items`);\n writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ➕ Add a new TODO item`);\n writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} 🗑 Remove a TODO item by ID`);\n writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} 🗑 Remove all TODO items`);\n writer.writeln(` ${writer.wrapInColor('todo complete <id>', CliForegroundColor.Cyan)} ✔ Mark a TODO as completed`);\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(` todo add Buy milk ${writer.wrapInColor('# Add a new task', CliForegroundColor.Green)}`);\n writer.writeln(` todo ls ${writer.wrapInColor('# View all tasks', CliForegroundColor.Green)}`);\n writer.writeln(` todo complete 1 ${writer.wrapInColor('# Mark task #1 done', CliForegroundColor.Green)}`);\n writer.writeln(` todo rm 2 ${writer.wrapInColor('# Delete task #2', CliForegroundColor.Green)}`);\n }\n\n async initialize(context: ICliExecutionContext): Promise<void> {\n context.state\n .select<TodoItem[]>((x) => x['todos'])\n .subscribe((todos) => {\n this.todos = todos;\n\n this.nextId =\n this.todos.length > 0\n ? Math.max(...this.todos.map((t) => t.id)) + 1\n : 1;\n });\n }\n\n private lineThroughText(text: string): string {\n return text\n .split('')\n .map((char) => char + '\\u0336')\n .join('');\n }\n\n private registerSubProcessors(): void {\n this.processors = [\n {\n command: 'ls',\n description: 'List all TODO items',\n processCommand: async (_, context) => {\n if (this.todos.length === 0) {\n context.writer.writeWarning('No TODO items found.');\n context.writer.writeln(\n 'Use \"todo add <text>\" to add a new TODO item.',\n );\n context.process.output(JSON.stringify(this.todos));\n return;\n }\n this.todos.forEach((todo) => {\n context.writer.writeln(\n `[${todo.completed ? context.writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green) : ' '}] #${todo.id} - ${todo.text}`,\n );\n });\n\n context.process.output(this.todos);\n },\n },\n {\n command: 'add',\n description: 'Add a new TODO item',\n allowUnlistedCommands: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const text = command.value;\n if (!text) {\n context.writer.writeError(\n 'Please provide a TODO description.',\n );\n return;\n }\n\n const newItem = {\n id: this.nextId++,\n text,\n completed: false,\n };\n\n this.todos.push(newItem);\n\n await this.saveToStorage(context);\n\n context.writer.writeSuccess(`Added TODO: \"${text}\"`);\n\n context.process.output(newItem.id.toString());\n },\n },\n {\n command: 'rm',\n description: 'Remove a TODO item by ID',\n allowUnlistedCommands: true,\n parameters: [\n {\n name: 'all',\n description: 'Remove all TODO items',\n type: 'boolean',\n defaultValue: false,\n aliases: ['a'],\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n if (command.args['all'] || command.args['a']) {\n this.todos = [];\n await this.saveToStorage(context);\n context.writer.writeSuccess('Removed all TODO items.');\n return;\n }\n\n const id = parseInt(command.value!, 10);\n if (isNaN(id)) {\n context.writer.writeError(\n 'Please provide a valid TODO ID.',\n );\n return;\n }\n const index = this.todos.findIndex(\n (todo) => todo.id === id,\n );\n if (index === -1) {\n context.writer.writeInfo(\n `TODO item with ID ${id} not found.`,\n );\n return;\n }\n this.todos.splice(index, 1);\n await this.saveToStorage(context);\n context.writer.writeSuccess(\n `Removed TODO item with ID ${id}.`,\n );\n },\n },\n {\n command: 'complete',\n description: 'Mark a TODO item as completed by ID',\n allowUnlistedCommands: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.value || '', 10);\n if (isNaN(id)) {\n context.writer.writeln(\n 'Please provide a valid TODO ID.',\n );\n return;\n }\n const todo = this.todos.find((todo) => todo.id === id);\n if (!todo) {\n context.writer.writeError(\n `TODO item with ID ${id} not found.`,\n );\n return;\n }\n\n if (todo.completed) {\n context.writer.writeInfo(\n `TODO item with ID ${id} is already completed.`,\n );\n return;\n }\n\n todo.completed = true;\n await this.saveToStorage(context);\n context.writer.writeSuccess(\n `Marked TODO item with ID ${id} as completed.`,\n );\n },\n },\n ];\n }\n\n private loadFromOldStorage(): TodoItem[] {\n const data = localStorage.getItem('todo-items');\n return data ? JSON.parse(data) : [];\n }\n\n private async saveToStorage(context: ICliExecutionContext): Promise<void> {\n context.state.updateState({ todos: this.todos });\n\n await context.state.persist();\n localStorage.removeItem('todo-items');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { resolveCommandProcessorProvider } from '@qodalis/angular-cli';\nimport { CliTodoCommandProcessor } from './processors/cli-todo-command-processor';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)],\n})\nexport class CliTodoModule {}\n","/*\n * Public API Surface of string\n */\n\nexport * from './lib/cli-todo.module';\n\nexport * from './lib/processors/cli-todo-command-processor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@qodalis/cli-todo" />
5
- export * from './public-api';
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class CliTodoModule {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<CliTodoModule, never>;
4
- static ɵmod: i0.ɵɵNgModuleDeclaration<CliTodoModule, never, never, never>;
5
- static ɵinj: i0.ɵɵInjectorDeclaration<CliTodoModule>;
6
- }
@@ -1,23 +0,0 @@
1
- import { CliProcessCommand, CliProcessorMetadata, CliStateConfiguration, ICliCommandProcessor, ICliExecutionContext } from '@qodalis/cli-core';
2
- import * as i0 from "@angular/core";
3
- export declare class CliTodoCommandProcessor implements ICliCommandProcessor {
4
- command: string;
5
- description: string;
6
- author: import("@qodalis/cli-core").ICliCommandAuthor;
7
- version: string;
8
- processors?: ICliCommandProcessor[] | undefined;
9
- metadata?: CliProcessorMetadata | undefined;
10
- stateConfiguration?: CliStateConfiguration | undefined;
11
- private todos;
12
- private nextId;
13
- constructor();
14
- processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
15
- writeDescription(context: ICliExecutionContext): void;
16
- initialize(context: ICliExecutionContext): Promise<void>;
17
- private lineThroughText;
18
- private registerSubProcessors;
19
- private loadFromOldStorage;
20
- private saveToStorage;
21
- static ɵfac: i0.ɵɵFactoryDeclaration<CliTodoCommandProcessor, never>;
22
- static ɵprov: i0.ɵɵInjectableDeclaration<CliTodoCommandProcessor>;
23
- }
package/lib/version.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const LIBRARY_VERSION = "0.0.6";