clidevkit 0.2.0__tar.gz → 0.2.1__tar.gz
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.
- {clidevkit-0.2.0 → clidevkit-0.2.1}/PKG-INFO +46 -57
- {clidevkit-0.2.0 → clidevkit-0.2.1}/README.md +45 -56
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/banner.py +26 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidevkit.egg-info/PKG-INFO +46 -57
- {clidevkit-0.2.0 → clidevkit-0.2.1}/pyproject.toml +1 -1
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/__init__.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/actions.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/app.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/builtins/__init__.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/builtins/plugins.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/cards.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/cli.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/colors.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/config.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/dashboard.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/dialogs.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/events.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/exceptions.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/forms.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/generators/__init__.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/generators/form.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/generators/menu.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/generators/project.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/generators/workflow.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/icons.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/inputs.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/logger.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/menus.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/notifications.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/pages.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/plugins.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/progress.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/router.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/scheduler.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/shell.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/spinner.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/state.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/statusbar.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/storage.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/table.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/tasks.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/themes.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/tree.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/utils.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/validators.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidev/workflow.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidevkit.egg-info/SOURCES.txt +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidevkit.egg-info/dependency_links.txt +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidevkit.egg-info/entry_points.txt +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidevkit.egg-info/requires.txt +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/clidevkit.egg-info/top_level.txt +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/setup.cfg +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_actions.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_app.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_banner.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_events.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_forms.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_generators.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_router.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_shell.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_state.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_storage.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_themes.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_validators.py +0 -0
- {clidevkit-0.2.0 → clidevkit-0.2.1}/tests/test_workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clidevkit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A framework for building production-ready CLI apps and Terminal UIs with minimal code.
|
|
5
5
|
Author-email: Vrushabh Sonawane <shivandmau25@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -273,6 +273,51 @@ theme = Theme()
|
|
|
273
273
|
theme.primary("blue")
|
|
274
274
|
theme.success("green")
|
|
275
275
|
```
|
|
276
|
+
### Banner (`clidev/banner.py`)
|
|
277
|
+
|
|
278
|
+
Render text as large ASCII-art block letters — great for app splash
|
|
279
|
+
screens, section headers, or command output.
|
|
280
|
+
|
|
281
|
+
```python
|
|
282
|
+
app.banner("HI").show()
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Customize the symbol used to draw the letters:
|
|
286
|
+
|
|
287
|
+
```python
|
|
288
|
+
app.banner("DEPLOYED", symbol="@").show()
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Or use it standalone (outside an `App` instance):
|
|
292
|
+
|
|
293
|
+
```python
|
|
294
|
+
from clidev.banner import Banner
|
|
295
|
+
|
|
296
|
+
Banner("HELLO", symbol="*").show()
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Supported characters:** `A-Z` (case-insensitive), `0-9`, and basic
|
|
300
|
+
punctuation (`. , ! ? - :`). Unsupported characters render as blank space
|
|
301
|
+
rather than raising an error.
|
|
302
|
+
|
|
303
|
+
**Constructor options:**
|
|
304
|
+
|
|
305
|
+
| Argument | Default | Description |
|
|
306
|
+
|---|---|---|
|
|
307
|
+
| `text` | — | Text to render (auto-uppercased) |
|
|
308
|
+
| `symbol` | `"#"` | Character used to draw filled pixels |
|
|
309
|
+
| `spacing` | `1` | Blank columns between letters |
|
|
310
|
+
| `theme` | `None` | If set (e.g. via `app.banner(...)`), colors the banner using the theme's primary color |
|
|
311
|
+
|
|
312
|
+
`.render()` returns the raw multi-line string (useful if you want to embed
|
|
313
|
+
it inside a `Card`, log it, or write it to a file) — `.show()` prints it
|
|
314
|
+
directly to the console with theme styling applied.
|
|
315
|
+
|
|
316
|
+
from clidev import App
|
|
317
|
+
|
|
318
|
+
app = App("My App")
|
|
319
|
+
app.banner("MY APP").show()
|
|
320
|
+
...
|
|
276
321
|
|
|
277
322
|
### Logging (`clidev/logger.py`)
|
|
278
323
|
|
|
@@ -381,62 +426,6 @@ field validation, the shell command wrapper, routing/history, the workflow
|
|
|
381
426
|
engine, conditional navigation, the event dispatcher, theming, the project
|
|
382
427
|
generator, and full `App` integration — 85 tests in total.
|
|
383
428
|
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
## Project layout
|
|
387
|
-
|
|
388
|
-
```text
|
|
389
|
-
clidev/
|
|
390
|
-
├── __init__.py
|
|
391
|
-
├── app.py # Main application
|
|
392
|
-
├── router.py # Navigation
|
|
393
|
-
├── pages.py # Pages
|
|
394
|
-
├── menus.py # Menu engine
|
|
395
|
-
├── forms.py # Forms
|
|
396
|
-
├── inputs.py # Input widgets
|
|
397
|
-
├── validators.py
|
|
398
|
-
│
|
|
399
|
-
├── state.py # Global state
|
|
400
|
-
├── storage.py # JSON/SQLite/YAML/TOML storage
|
|
401
|
-
├── workflow.py # Workflow engine
|
|
402
|
-
├── events.py # Event dispatcher
|
|
403
|
-
├── actions.py # Conditional navigation
|
|
404
|
-
│
|
|
405
|
-
├── shell.py # Execute commands
|
|
406
|
-
├── tasks.py # Background tasks
|
|
407
|
-
├── scheduler.py
|
|
408
|
-
│
|
|
409
|
-
├── progress.py
|
|
410
|
-
├── spinner.py
|
|
411
|
-
├── dashboard.py
|
|
412
|
-
├── table.py
|
|
413
|
-
├── tree.py
|
|
414
|
-
├── cards.py
|
|
415
|
-
├── dialogs.py
|
|
416
|
-
├── notifications.py
|
|
417
|
-
├── statusbar.py
|
|
418
|
-
│
|
|
419
|
-
├── themes.py
|
|
420
|
-
├── colors.py
|
|
421
|
-
├── icons.py
|
|
422
|
-
│
|
|
423
|
-
├── logger.py
|
|
424
|
-
├── config.py
|
|
425
|
-
├── plugins.py
|
|
426
|
-
├── utils.py
|
|
427
|
-
├── exceptions.py
|
|
428
|
-
│
|
|
429
|
-
├── generators/
|
|
430
|
-
│ ├── project.py
|
|
431
|
-
│ ├── menu.py
|
|
432
|
-
│ ├── form.py
|
|
433
|
-
│ └── workflow.py
|
|
434
|
-
│
|
|
435
|
-
├── templates/
|
|
436
|
-
├── builtins/ # Example plugins (GitPlugin, DatabasePlugin)
|
|
437
|
-
└── cli.py # "clidev" terminal command
|
|
438
|
-
```
|
|
439
|
-
|
|
440
429
|
## Roadmap
|
|
441
430
|
|
|
442
431
|
- Additional storage backends: PostgreSQL, MongoDB, Redis
|
|
@@ -243,6 +243,51 @@ theme = Theme()
|
|
|
243
243
|
theme.primary("blue")
|
|
244
244
|
theme.success("green")
|
|
245
245
|
```
|
|
246
|
+
### Banner (`clidev/banner.py`)
|
|
247
|
+
|
|
248
|
+
Render text as large ASCII-art block letters — great for app splash
|
|
249
|
+
screens, section headers, or command output.
|
|
250
|
+
|
|
251
|
+
```python
|
|
252
|
+
app.banner("HI").show()
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Customize the symbol used to draw the letters:
|
|
256
|
+
|
|
257
|
+
```python
|
|
258
|
+
app.banner("DEPLOYED", symbol="@").show()
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Or use it standalone (outside an `App` instance):
|
|
262
|
+
|
|
263
|
+
```python
|
|
264
|
+
from clidev.banner import Banner
|
|
265
|
+
|
|
266
|
+
Banner("HELLO", symbol="*").show()
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Supported characters:** `A-Z` (case-insensitive), `0-9`, and basic
|
|
270
|
+
punctuation (`. , ! ? - :`). Unsupported characters render as blank space
|
|
271
|
+
rather than raising an error.
|
|
272
|
+
|
|
273
|
+
**Constructor options:**
|
|
274
|
+
|
|
275
|
+
| Argument | Default | Description |
|
|
276
|
+
|---|---|---|
|
|
277
|
+
| `text` | — | Text to render (auto-uppercased) |
|
|
278
|
+
| `symbol` | `"#"` | Character used to draw filled pixels |
|
|
279
|
+
| `spacing` | `1` | Blank columns between letters |
|
|
280
|
+
| `theme` | `None` | If set (e.g. via `app.banner(...)`), colors the banner using the theme's primary color |
|
|
281
|
+
|
|
282
|
+
`.render()` returns the raw multi-line string (useful if you want to embed
|
|
283
|
+
it inside a `Card`, log it, or write it to a file) — `.show()` prints it
|
|
284
|
+
directly to the console with theme styling applied.
|
|
285
|
+
|
|
286
|
+
from clidev import App
|
|
287
|
+
|
|
288
|
+
app = App("My App")
|
|
289
|
+
app.banner("MY APP").show()
|
|
290
|
+
...
|
|
246
291
|
|
|
247
292
|
### Logging (`clidev/logger.py`)
|
|
248
293
|
|
|
@@ -351,62 +396,6 @@ field validation, the shell command wrapper, routing/history, the workflow
|
|
|
351
396
|
engine, conditional navigation, the event dispatcher, theming, the project
|
|
352
397
|
generator, and full `App` integration — 85 tests in total.
|
|
353
398
|
|
|
354
|
-
---
|
|
355
|
-
|
|
356
|
-
## Project layout
|
|
357
|
-
|
|
358
|
-
```text
|
|
359
|
-
clidev/
|
|
360
|
-
├── __init__.py
|
|
361
|
-
├── app.py # Main application
|
|
362
|
-
├── router.py # Navigation
|
|
363
|
-
├── pages.py # Pages
|
|
364
|
-
├── menus.py # Menu engine
|
|
365
|
-
├── forms.py # Forms
|
|
366
|
-
├── inputs.py # Input widgets
|
|
367
|
-
├── validators.py
|
|
368
|
-
│
|
|
369
|
-
├── state.py # Global state
|
|
370
|
-
├── storage.py # JSON/SQLite/YAML/TOML storage
|
|
371
|
-
├── workflow.py # Workflow engine
|
|
372
|
-
├── events.py # Event dispatcher
|
|
373
|
-
├── actions.py # Conditional navigation
|
|
374
|
-
│
|
|
375
|
-
├── shell.py # Execute commands
|
|
376
|
-
├── tasks.py # Background tasks
|
|
377
|
-
├── scheduler.py
|
|
378
|
-
│
|
|
379
|
-
├── progress.py
|
|
380
|
-
├── spinner.py
|
|
381
|
-
├── dashboard.py
|
|
382
|
-
├── table.py
|
|
383
|
-
├── tree.py
|
|
384
|
-
├── cards.py
|
|
385
|
-
├── dialogs.py
|
|
386
|
-
├── notifications.py
|
|
387
|
-
├── statusbar.py
|
|
388
|
-
│
|
|
389
|
-
├── themes.py
|
|
390
|
-
├── colors.py
|
|
391
|
-
├── icons.py
|
|
392
|
-
│
|
|
393
|
-
├── logger.py
|
|
394
|
-
├── config.py
|
|
395
|
-
├── plugins.py
|
|
396
|
-
├── utils.py
|
|
397
|
-
├── exceptions.py
|
|
398
|
-
│
|
|
399
|
-
├── generators/
|
|
400
|
-
│ ├── project.py
|
|
401
|
-
│ ├── menu.py
|
|
402
|
-
│ ├── form.py
|
|
403
|
-
│ └── workflow.py
|
|
404
|
-
│
|
|
405
|
-
├── templates/
|
|
406
|
-
├── builtins/ # Example plugins (GitPlugin, DatabasePlugin)
|
|
407
|
-
└── cli.py # "clidev" terminal command
|
|
408
|
-
```
|
|
409
|
-
|
|
410
399
|
## Roadmap
|
|
411
400
|
|
|
412
401
|
- Additional storage backends: PostgreSQL, MongoDB, Redis
|
|
@@ -40,6 +40,32 @@ _FONT: dict[str, list[str]] = {
|
|
|
40
40
|
"X": ["#...#", ".#.#.", "..#..", ".#.#.", "#...#"],
|
|
41
41
|
"Y": ["#...#", ".#.#.", "..#..", "..#..", "..#.."],
|
|
42
42
|
"Z": ["#####", "...#.", "..#..", ".#...", "#####"],
|
|
43
|
+
"a": [".....", ".####", "#...#", "#...#", ".####"],
|
|
44
|
+
"b": ["#....", "#....", "####.", "#...#", "####."],
|
|
45
|
+
"c": [".....", ".####", "#....", "#....", ".####"],
|
|
46
|
+
"d": ["....#", "....#", ".####", "#...#", ".####"],
|
|
47
|
+
"e": [".....", ".###.", "#####", "#....", ".####"],
|
|
48
|
+
"f": ["..##.", ".#...", "###..", ".#...", ".#..."],
|
|
49
|
+
"g": [".....", ".####", "#...#", ".####", "....#"],
|
|
50
|
+
"h": ["#....", "#....", "####.", "#...#", "#...#"],
|
|
51
|
+
"i": ["..#..", ".....", "..#..", "..#..", "..#.."],
|
|
52
|
+
"j": ["...#.", ".....", "...#.", "...#.", "##..."],
|
|
53
|
+
"k": ["#....", "#..#.", "###..", "#..#.", "#...#"],
|
|
54
|
+
"l": ["##...", ".#...", ".#...", ".#...", "###.."],
|
|
55
|
+
"m": [".....", "##.#.", "#.#.#", "#.#.#", "#...#"],
|
|
56
|
+
"n": [".....", "####.", "#...#", "#...#", "#...#"],
|
|
57
|
+
"o": [".....", ".###.", "#...#", "#...#", ".###."],
|
|
58
|
+
"p": [".....", "####.", "#...#", "####.", "#...."],
|
|
59
|
+
"q": [".....", ".####", "#...#", ".####", "....#"],
|
|
60
|
+
"r": [".....", "#.##.", "##...", "#....", "#...."],
|
|
61
|
+
"s": [".....", ".####", "##...", "...##", "####."],
|
|
62
|
+
"t": [".#...", "###..", ".#...", ".#...", "..##."],
|
|
63
|
+
"u": [".....", "#...#", "#...#", "#...#", ".####"],
|
|
64
|
+
"v": [".....", "#...#", "#...#", ".#.#.", "..#.."],
|
|
65
|
+
"w": [".....", "#...#", "#.#.#", "#.#.#", ".#.#."],
|
|
66
|
+
"x": [".....", "#...#", ".#.#.", ".#.#.", "#...#"],
|
|
67
|
+
"y": [".....", "#...#", ".####", "....#", "####."],
|
|
68
|
+
"z": [".....", "#####", "..##.", ".##..", "#####"],
|
|
43
69
|
"0": [".###.", "#...#", "#...#", "#...#", ".###."],
|
|
44
70
|
"1": ["..#..", ".##..", "..#..", "..#..", ".###."],
|
|
45
71
|
"2": [".###.", "#...#", "..##.", ".#...", "#####"],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: clidevkit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: A framework for building production-ready CLI apps and Terminal UIs with minimal code.
|
|
5
5
|
Author-email: Vrushabh Sonawane <shivandmau25@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -273,6 +273,51 @@ theme = Theme()
|
|
|
273
273
|
theme.primary("blue")
|
|
274
274
|
theme.success("green")
|
|
275
275
|
```
|
|
276
|
+
### Banner (`clidev/banner.py`)
|
|
277
|
+
|
|
278
|
+
Render text as large ASCII-art block letters — great for app splash
|
|
279
|
+
screens, section headers, or command output.
|
|
280
|
+
|
|
281
|
+
```python
|
|
282
|
+
app.banner("HI").show()
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Customize the symbol used to draw the letters:
|
|
286
|
+
|
|
287
|
+
```python
|
|
288
|
+
app.banner("DEPLOYED", symbol="@").show()
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Or use it standalone (outside an `App` instance):
|
|
292
|
+
|
|
293
|
+
```python
|
|
294
|
+
from clidev.banner import Banner
|
|
295
|
+
|
|
296
|
+
Banner("HELLO", symbol="*").show()
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Supported characters:** `A-Z` (case-insensitive), `0-9`, and basic
|
|
300
|
+
punctuation (`. , ! ? - :`). Unsupported characters render as blank space
|
|
301
|
+
rather than raising an error.
|
|
302
|
+
|
|
303
|
+
**Constructor options:**
|
|
304
|
+
|
|
305
|
+
| Argument | Default | Description |
|
|
306
|
+
|---|---|---|
|
|
307
|
+
| `text` | — | Text to render (auto-uppercased) |
|
|
308
|
+
| `symbol` | `"#"` | Character used to draw filled pixels |
|
|
309
|
+
| `spacing` | `1` | Blank columns between letters |
|
|
310
|
+
| `theme` | `None` | If set (e.g. via `app.banner(...)`), colors the banner using the theme's primary color |
|
|
311
|
+
|
|
312
|
+
`.render()` returns the raw multi-line string (useful if you want to embed
|
|
313
|
+
it inside a `Card`, log it, or write it to a file) — `.show()` prints it
|
|
314
|
+
directly to the console with theme styling applied.
|
|
315
|
+
|
|
316
|
+
from clidev import App
|
|
317
|
+
|
|
318
|
+
app = App("My App")
|
|
319
|
+
app.banner("MY APP").show()
|
|
320
|
+
...
|
|
276
321
|
|
|
277
322
|
### Logging (`clidev/logger.py`)
|
|
278
323
|
|
|
@@ -381,62 +426,6 @@ field validation, the shell command wrapper, routing/history, the workflow
|
|
|
381
426
|
engine, conditional navigation, the event dispatcher, theming, the project
|
|
382
427
|
generator, and full `App` integration — 85 tests in total.
|
|
383
428
|
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
## Project layout
|
|
387
|
-
|
|
388
|
-
```text
|
|
389
|
-
clidev/
|
|
390
|
-
├── __init__.py
|
|
391
|
-
├── app.py # Main application
|
|
392
|
-
├── router.py # Navigation
|
|
393
|
-
├── pages.py # Pages
|
|
394
|
-
├── menus.py # Menu engine
|
|
395
|
-
├── forms.py # Forms
|
|
396
|
-
├── inputs.py # Input widgets
|
|
397
|
-
├── validators.py
|
|
398
|
-
│
|
|
399
|
-
├── state.py # Global state
|
|
400
|
-
├── storage.py # JSON/SQLite/YAML/TOML storage
|
|
401
|
-
├── workflow.py # Workflow engine
|
|
402
|
-
├── events.py # Event dispatcher
|
|
403
|
-
├── actions.py # Conditional navigation
|
|
404
|
-
│
|
|
405
|
-
├── shell.py # Execute commands
|
|
406
|
-
├── tasks.py # Background tasks
|
|
407
|
-
├── scheduler.py
|
|
408
|
-
│
|
|
409
|
-
├── progress.py
|
|
410
|
-
├── spinner.py
|
|
411
|
-
├── dashboard.py
|
|
412
|
-
├── table.py
|
|
413
|
-
├── tree.py
|
|
414
|
-
├── cards.py
|
|
415
|
-
├── dialogs.py
|
|
416
|
-
├── notifications.py
|
|
417
|
-
├── statusbar.py
|
|
418
|
-
│
|
|
419
|
-
├── themes.py
|
|
420
|
-
├── colors.py
|
|
421
|
-
├── icons.py
|
|
422
|
-
│
|
|
423
|
-
├── logger.py
|
|
424
|
-
├── config.py
|
|
425
|
-
├── plugins.py
|
|
426
|
-
├── utils.py
|
|
427
|
-
├── exceptions.py
|
|
428
|
-
│
|
|
429
|
-
├── generators/
|
|
430
|
-
│ ├── project.py
|
|
431
|
-
│ ├── menu.py
|
|
432
|
-
│ ├── form.py
|
|
433
|
-
│ └── workflow.py
|
|
434
|
-
│
|
|
435
|
-
├── templates/
|
|
436
|
-
├── builtins/ # Example plugins (GitPlugin, DatabasePlugin)
|
|
437
|
-
└── cli.py # "clidev" terminal command
|
|
438
|
-
```
|
|
439
|
-
|
|
440
429
|
## Roadmap
|
|
441
430
|
|
|
442
431
|
- Additional storage backends: PostgreSQL, MongoDB, Redis
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "clidevkit"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.1"
|
|
8
8
|
description = "A framework for building production-ready CLI apps and Terminal UIs with minimal code."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|