.. _root_quickstart:

Быстрый старт
=============

В этом руководстве мы рассмотрим два примера создания CLI-приложения с помощью Argenta:

*   **Простой пример**: минимальное приложение для быстрого знакомства с основными компонентами.
*   **Пример средней сложности**: приложение "Калькулятор" с использованием и настройкой флагов.
*   **Более сложный пример**: полнофункциональное приложение «Менеджер задач» с внедрением зависимостей и бизнес-логикой.

Простой пример
---------------

**Установка**

.. code-block:: shell

    pip install argenta

Этот пример демонстрирует абсолютный минимум, необходимый для создания и запуска приложения. Вы можете скопировать этот код, запустить его и сразу увидеть результат.

.. literalinclude:: ../code_snippets/quickstart/simple_app.py
   :language: python
   :linenos:

**Запуск**

Сохраните код в файл (например, ``main.py``) и запустите:

.. code-block:: shell

    python main.py

**Результат**

.. image:: https://i.ibb.co/35q24Bh8/image.png
   :alt: Simple App Example
   
-----

Промежуточный пример: Калькулятор с флагами
--------------------------------------------

Прежде чем перейти к сложному примеру с DI, рассмотрим промежуточный вариант — калькулятор, который использует флаги для управления поведением.

.. literalinclude:: ../code_snippets/quickstart/calculator_app.py
   :language: python
   :linenos:

**Запуск:**

Сохраните код в файл ``calculator.py`` и запустите:

.. code-block:: shell

    python calculator.py

**Использование:**

.. code-block:: shell

   calc --a 10 --b 5 --operation add
   calc --a 10 --b 5 --operation mul

Этот пример показывает, как работать с флагами без использования DI. Теперь перейдём к более сложному примеру.

-----

Сложный пример: Менеджер задач с DI
------------------------------------

В этом руководстве мы создадим полнофункциональное CLI-приложение «Менеджер задач», которое продемонстрирует работу с внедрением зависимостей.

1. **Установка**

.. code-block:: shell

    pip install argenta

2. **Определение моделей данных и репозитория**

Сначала определим модели данных для задачи и репозиторий для их хранения.

.. literalinclude:: ../code_snippets/quickstart/task_manager/repository.py
   :language: python
   :linenos:

3. **Создание провайдера для DI**

Чтобы Argenta могла внедрять ``TaskRepository`` в наши обработчики, мы создадим провайдер для ``dishka``.

.. literalinclude:: ../code_snippets/quickstart/task_manager/provider.py
   :language: python
   :linenos:

4. **Создание обработчиков команд**

Теперь создадим обработчики для команд ``add-task`` и ``list-tasks``. Обратите внимание, как мы используем флаги и внедряем ``TaskRepository``.

.. literalinclude:: ../code_snippets/quickstart/task_manager/handlers.py
   :language: python
   :linenos:

5. **Сборка и запуск приложения**

Наконец, соберем все вместе: создадим экземпляр ``App``, подключим роутер и провайдер, а затем запустим приложение.

.. literalinclude:: ../code_snippets/quickstart/task_manager/main.py
   :language: python
   :linenos:

6. **Результат**

Теперь вы можете запустить ``main.py`` и взаимодействовать с вашим новым CLI-приложением.

.. image:: https://i.ibb.co/bgsCLZhP/image.png
   :alt: Task Manager Example
