From 974d35fb82c9060e3091292361671d29afa754e4 Mon Sep 17 00:00:00 2001 From: kolo Date: Thu, 4 Dec 2025 15:46:48 +0300 Subject: [PATCH] Update documentation and code snippets --- README.md | 4 +- README.ru.md | 119 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 89 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index a7ea805..469341a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ +![preview](https://i.ibb.co/fTQXbXV/a-minimalist-logo-design-featuring-the-t-OL3-WIOEp-Q5izi-Oyd6-FHq-XQ-CCd1xei4-Q2-Sky-Z0-GPf-SWMA.jpg) + **Argenta** is a simple, yet elegant, CLI framework for building modular command-line applications. It provides a clean and intuitive way to create context-aware CLI tools with isolated command scopes. -Argenta is the **"Simplest"**, **"Most Modular"**, and **"Most Elegant"** way to build interactive CLI applications in Python. Production Ready! +Argenta is the **"Simplest"**, **"Most Modular"**, and **"Most Elegant"** way to build interactive CLI applications in Python. πŸ“– **Read the full documentation:** [argenta-docs.vercel.app](https://argenta-docs.vercel.app)
🌍 **Other languages:** [RU](https://github.com/koloideal/Argenta/blob/main/README.ru.md) diff --git a/README.ru.md b/README.ru.md index a204300..f966501 100644 --- a/README.ru.md +++ b/README.ru.md @@ -1,69 +1,122 @@ -# Argenta +![preview](https://i.ibb.co/fTQXbXV/a-minimalist-logo-design-featuring-the-t-OL3-WIOEp-Q5izi-Oyd6-FHq-XQ-CCd1xei4-Q2-Sky-Z0-GPf-SWMA.jpg) -### Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для создания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… CLI ΠΏΡ€ΠΈΠ»ΠΎΠΆeΠ½ΠΈΠΉ +**Argenta** β€” это простой ΠΈ элСгантный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… CLI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Он прСдоставляСт чистый ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ способ создания контСкстно-зависимых инструмСнтов ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки с ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ областями ΠΊΠΎΠΌΠ°Π½Π΄. -Argenta позволяСт ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ CLI Ρ„ΡƒΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, абстрагированныС **срСды**. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ: Π²Ρ‹ создаСтС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Metasploit Framework, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сначала Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ скоуп (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для сканирования), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ Π½Π°Π±ΠΎΡ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄, спСцифичных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этого контСкста. Argenta прСдоставляСт простой ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ способ для построСния Ρ‚Π°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. +Argenta β€” это **"Π‘Π°ΠΌΡ‹ΠΉ простой"**, **"Π‘Π°ΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ"** ΠΈ **"Π‘Π°ΠΌΡ‹ΠΉ элСгантный"** способ создания ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… CLI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Python. + +πŸ“– **Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ:** [argenta.readthedocs.io](https://argenta.readthedocs.io/)
+🌍 **Π”Ρ€ΡƒΠ³ΠΈΠ΅ языки:** [EN](https://github.com/koloideal/Argenta/blob/main/README.md) --- -![preview](https://github.com/koloideal/Argenta/blob/main/imgs/mock_app_preview4.png?raw=True) +![preview](https://github.com/koloideal/Argenta/blob/main/imgs/mock_app_preview4.png?raw=True) ---- - -# Установка -```bash -pip install argenta -``` -or -```bash -poetry add argenta +```python +>>> from argenta import Router, Command, Response +>>> +>>> router = Router() +>>> +>>> @router.command(Command("hello")) +... def handler(response: Response): +... print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!") +>>> +>>> from argenta import App, Orchestrator +>>> +>>> app = App() +>>> orchestrator = Orchestrator() +>>> +>>> app.include_router(router) +>>> orchestrator.start_polling(app) ``` ---- +Argenta позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ CLI-прилоТСния нСвСроятно Π»Π΅Π³ΠΊΠΎ. НС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ слоТныС структуры ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°ΠΌΠΈ состояний β€” просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹! -# Быстрый старт +## ✨ Установка Argenta + +Argenta доступна Π½Π° ``PyPI``: + +```console +$ python -m pip install argenta +``` + +ΠΈΠ»ΠΈ с использованиСм ``uv``: + +```console +$ uv add argenta +``` + +Argenta ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Python 3.12+. + +## πŸš€ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ возмоТности ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ + +Argenta Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ трСбованиям создания ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ…, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… CLI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. + +- **Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ сСссии**: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… CLI-инструмСнтов, ``Argenta`` создаёт цикличСскиС сСссии, позволяя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ пСрСзапуская ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. +- **Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ синтаксис**: ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простых Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ чистым ΠΈ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным. +- **Нативный DI**: Благодаря ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с `dishka `_, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ зависимости прямо Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΡ… тСстированиС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅. +- **АвтоматичСская валидация ΠΈ парсинг**: Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ„Π»Π°Π³ΠΎΠ² ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… арсинг, Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². +- **Гибкая настройка**: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСмныС сообщСния, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Ρ‚.Π΄. + +НуТно Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅? Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ **issue**, ΠΌΡ‹ ΡΠ»ΡƒΡˆΠ°Π΅ΠΌ. + +## πŸ“ Π—Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ это создали? + +Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ слоТных CLI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ управлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ контСкстами ΠΈ областями ΠΊΠΎΠΌΠ°Π½Π΄. НапримСр, ΠΏΡ€ΠΈ создании ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Metasploit Framework, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ области (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сканирования), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, спСцифичным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для этого контСкста. + +Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ CLI-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ элСгантного способа ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ, контСкстно-зависимой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Argenta Π±Ρ‹Π»Π° создана для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, прСдоставляя простой ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ способ инкапсуляции CLI-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, абстрагированныС срСды. + +ΠœΡ‹ считаСм, Ρ‡Ρ‚ΠΎ созданиС CLI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ приятным, ΠΊΠ°ΠΊ созданиС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с соврСмСнными Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. Argenta привносит ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠ² ΠΈ чистоС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ отвСтствСнности Π² ΠΌΠΈΡ€ CLI. + +## πŸš€ Быстрый старт + +Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹: -ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ прилоТСния ```python # routers.py -from argenta.router import Router -from argenta.command import Command -from argenta.response import Response - +from argenta import Router, Command, Response router = Router() @router.command(Command("hello")) def handler(response: Response): - print("Hello, world!") + """ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° hello world""" + print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!") + +@router.command(Command("greet")) +def greet_handler(response: Response): + """ΠŸΠΎΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ""" + name = response.args.get("name", "Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΠ΅Ρ†") + print(f"ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {name}!") ``` ```python # main.py -from argenta.app import App -from argenta.orchestrator import Orchestrator -from routers import router - -app: App = App() -orchestrator: Orchestrator = Orchestrator() +from argenta import App, Orchestrator +from .routers import router +app = App() +orchestrator = Orchestrator() def main() -> None: + # ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ваши Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ app.include_router(router) + + # ЗапуститС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ CLI orchestrator.start_polling(app) - if __name__ == '__main__': main() ``` +Π’ΠΎΡ‚ ΠΈ всё! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ CLI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄. + +## πŸ“š ДокумСнтация + +Полная докумСнтация доступна Π½Π° [argenta.readthedocs.io](https://argenta.readthedocs.io/) + --- -# Π€ΠΈΡ‡ΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ - -- ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π²Ρ‚ΠΎΠΊΠΎΠΌΠΏΠ»ΠΈΡ‚Π΅Ρ€Π° Π½Π° Linux - -## Полная [докумСнтация](https://argenta-docs.vercel.app) | MIT 2025 kolo | made by [kolo](https://t.me/kolo_id) +MIT 2025 kolo | made by [kolo](https://t.me/kolo_id)