- Added `enable_prompt_history` & `prompt_history_base_dir` to Falyx, using FileHistory to persist inputs to `~/.{program}_history` - Added `multiline` option to UserInputAction and passed through to PromptSession - Updated examples (`argument_examples.py`, `confirm_example.py`) to enable prompt history and add TLDR examples - Improved CLI usage tips for clarity (`[COMMAND]` instead of `[KEY]`) - Added `test_action_types.py` and expanded `test_main.py` for init and parser coverage - Bumped version to 0.1.76
102 lines
2.5 KiB
Python
102 lines
2.5 KiB
Python
import asyncio
|
|
from enum import Enum
|
|
|
|
from falyx import Falyx
|
|
from falyx.action import Action
|
|
from falyx.parser.command_argument_parser import CommandArgumentParser
|
|
|
|
|
|
class Place(Enum):
|
|
"""Enum for different places."""
|
|
|
|
NEW_YORK = "New York"
|
|
SAN_FRANCISCO = "San Francisco"
|
|
LONDON = "London"
|
|
|
|
def __str__(self):
|
|
return self.value
|
|
|
|
|
|
async def test_args(
|
|
service: str,
|
|
place: Place = Place.NEW_YORK,
|
|
region: str = "us-east-1",
|
|
tag: str | None = None,
|
|
verbose: bool | None = None,
|
|
number: int | None = None,
|
|
) -> str:
|
|
if verbose:
|
|
print(f"Deploying {service}:{tag}:{number} to {region} at {place}...")
|
|
return f"{service}:{tag}:{number} deployed to {region} at {place}"
|
|
|
|
|
|
def default_config(parser: CommandArgumentParser) -> None:
|
|
"""Default argument configuration for the command."""
|
|
parser.add_argument(
|
|
"service",
|
|
type=str,
|
|
choices=["web", "database", "cache"],
|
|
help="Service name to deploy.",
|
|
)
|
|
parser.add_argument(
|
|
"place",
|
|
type=Place,
|
|
choices=list(Place),
|
|
default=Place.NEW_YORK,
|
|
help="Place where the service will be deployed.",
|
|
)
|
|
parser.add_argument(
|
|
"--region",
|
|
type=str,
|
|
default="us-east-1",
|
|
help="Deployment region.",
|
|
choices=["us-east-1", "us-west-2", "eu-west-1"],
|
|
)
|
|
parser.add_argument(
|
|
"--verbose",
|
|
action="store_bool_optional",
|
|
help="Enable verbose output.",
|
|
)
|
|
parser.add_argument(
|
|
"--tag",
|
|
type=str,
|
|
help="Optional tag for the deployment.",
|
|
suggestions=["latest", "stable", "beta"],
|
|
)
|
|
parser.add_argument(
|
|
"--number",
|
|
type=int,
|
|
help="Optional number argument.",
|
|
)
|
|
parser.add_tldr_examples(
|
|
[
|
|
("web", "Deploy 'web' to the default location (New York)"),
|
|
("cache London --tag beta", "Deploy 'cache' to London with tag"),
|
|
("database --region us-west-2 --verbose", "Verbose deploy to west region"),
|
|
]
|
|
)
|
|
|
|
|
|
flx = Falyx(
|
|
"Argument Examples",
|
|
program="argument_examples.py",
|
|
hide_menu_table=True,
|
|
show_placeholder_menu=True,
|
|
enable_prompt_history=True,
|
|
)
|
|
|
|
flx.add_command(
|
|
key="T",
|
|
aliases=["test"],
|
|
description="Test Command",
|
|
help_text="A command to test argument parsing.",
|
|
action=Action(
|
|
name="test_args",
|
|
action=test_args,
|
|
),
|
|
style="bold #B3EBF2",
|
|
argument_config=default_config,
|
|
)
|
|
|
|
asyncio.run(flx.run())
|