usecli 0.1.66__tar.gz → 0.1.67__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.
- {usecli-0.1.66 → usecli-0.1.67}/PKG-INFO +1 -1
- {usecli-0.1.66 → usecli-0.1.67}/pyproject.toml +1 -1
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/__init__.py +23 -7
- {usecli-0.1.66 → usecli-0.1.67}/LICENSE +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/README.md +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/README.md +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/custom/README.md +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/custom/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/about_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/help_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/inspire_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/internal/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/internal/fzf_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/core/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/core/utils.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/make/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/make/make_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/make/make_theme_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/init_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/config/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/config/colors.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/base_command.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/error/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/error/handler.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/error/utils.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/exceptions/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/exceptions/base.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/exceptions/config.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/exceptions/usage.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/exceptions/validation.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/ui/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/ui/list.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/ui/title.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/ui/title.txt +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/validators/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/validators/network.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/validators/numeric.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/validators/path.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/core/validators/string.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/services/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/services/command_service.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/templates/command.py.j2 +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/templates/theme.toml.j2 +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/templates/usecli.config.toml.j2 +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/ayu_dark.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/catppuccin_frappe.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/catppuccin_latte.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/catppuccin_macchiato.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/catppuccin_mocha.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/default.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/dracula.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/gruvbox_dark.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/nord.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/themes/tokyo_night.toml +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/utils/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/utils/interactive/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/utils/interactive/terminal_menu.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/menu.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/params.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/shared/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/shared/config/__init__.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/shared/config/globals.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/shared/config/manager.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/ui.py +0 -0
- {usecli-0.1.66 → usecli-0.1.67}/src/usecli/usecli.config.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "usecli"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.67"
|
|
4
4
|
description = "A powerful Python CLI framework for building beautiful, developer-friendly command-line tools."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [{ name = "Edward Boswell", email = "thememium@gmail.com" }]
|
|
@@ -165,25 +165,29 @@ def _ensure_cli_initialized() -> None:
|
|
|
165
165
|
)
|
|
166
166
|
|
|
167
167
|
def invoke(self, ctx):
|
|
168
|
-
from click.exceptions import
|
|
168
|
+
from click.exceptions import Exit
|
|
169
|
+
|
|
170
|
+
_TyperBadParameter = globals()["_TyperBadParameter"]
|
|
171
|
+
_TyperUsageError = globals()["_TyperUsageError"]
|
|
172
|
+
_TyperClickException = globals()["_TyperClickException"]
|
|
169
173
|
|
|
170
174
|
try:
|
|
171
175
|
return super().invoke(ctx)
|
|
172
176
|
except Exit:
|
|
173
177
|
sys.exit(0)
|
|
174
|
-
except
|
|
178
|
+
except _TyperBadParameter as e:
|
|
175
179
|
from usecli.cli.core.exceptions import UsecliBadParameter
|
|
176
180
|
|
|
177
181
|
styled_error = UsecliBadParameter(e.message, ctx=e.ctx, param=e.param)
|
|
178
182
|
styled_error.show()
|
|
179
183
|
sys.exit(styled_error.exit_code)
|
|
180
|
-
except
|
|
184
|
+
except _TyperUsageError as e:
|
|
181
185
|
from usecli.cli.core.exceptions import UsecliUsageError
|
|
182
186
|
|
|
183
187
|
styled_error = UsecliUsageError(e.message, ctx=e.ctx)
|
|
184
188
|
styled_error.show()
|
|
185
189
|
sys.exit(styled_error.exit_code)
|
|
186
|
-
except
|
|
190
|
+
except _TyperClickException as e:
|
|
187
191
|
if hasattr(e, "show"):
|
|
188
192
|
e.show()
|
|
189
193
|
sys.exit(e.exit_code if hasattr(e, "exit_code") else 1)
|
|
@@ -419,6 +423,12 @@ def main() -> None:
|
|
|
419
423
|
_ensure_cli_initialized()
|
|
420
424
|
_resolve_help()
|
|
421
425
|
|
|
426
|
+
# Use typer's exception classes if available (they're subclasses of click's)
|
|
427
|
+
# typer raises its own exceptions which may not match click's exactly
|
|
428
|
+
_TyperBadParameter = globals().get("_TyperBadParameter", BadParameter)
|
|
429
|
+
_TyperUsageError = globals().get("_TyperUsageError", UsageError)
|
|
430
|
+
_TyperClickException = globals().get("_TyperClickException", ClickException)
|
|
431
|
+
|
|
422
432
|
from usecli.shared.config.manager import get_config
|
|
423
433
|
|
|
424
434
|
config = get_config()
|
|
@@ -439,22 +449,28 @@ def main() -> None:
|
|
|
439
449
|
_get_app()()
|
|
440
450
|
except Exit:
|
|
441
451
|
sys.exit(0)
|
|
442
|
-
except
|
|
452
|
+
except _TyperBadParameter as e:
|
|
443
453
|
from usecli.cli.core.exceptions import UsecliBadParameter
|
|
444
454
|
|
|
445
455
|
styled_error = UsecliBadParameter(e.message, ctx=e.ctx, param=e.param)
|
|
446
456
|
styled_error.show()
|
|
447
457
|
sys.exit(styled_error.exit_code)
|
|
448
|
-
except
|
|
458
|
+
except _TyperUsageError as e:
|
|
449
459
|
from usecli.cli.core.exceptions import UsecliUsageError
|
|
450
460
|
|
|
451
461
|
styled_error = UsecliUsageError(e.message, ctx=e.ctx)
|
|
452
462
|
styled_error.show()
|
|
453
463
|
sys.exit(styled_error.exit_code)
|
|
454
|
-
except
|
|
464
|
+
except _TyperClickException as e:
|
|
455
465
|
if hasattr(e, "show"):
|
|
456
466
|
e.show()
|
|
457
467
|
sys.exit(e.exit_code if hasattr(e, "exit_code") else 1)
|
|
468
|
+
except Exception as e:
|
|
469
|
+
from usecli.cli.core.exceptions import UsecliUsageError
|
|
470
|
+
|
|
471
|
+
styled_error = UsecliUsageError(str(e))
|
|
472
|
+
styled_error.show()
|
|
473
|
+
sys.exit(1)
|
|
458
474
|
|
|
459
475
|
|
|
460
476
|
if __name__ == "__main__":
|
|
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
|
{usecli-0.1.66 → usecli-0.1.67}/src/usecli/cli/commands/defaults/base/internal/fzf_command.py
RENAMED
|
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
|