#cargo #picodata #cargo-subcommand #plugin

app picodata-pike

Cargo plugin for Picodata plugin development

2 releases (1 stable)

new 1.0.0 Dec 13, 2024
0.1.0-rc.1 Dec 13, 2024

#57 in Cargo plugins

BSD-2-Clause and LGPL-3.0

45KB
933 lines

Cargo plugin for Picodata plugins

Плагин к cargo с функциями для упрощения разработки плагинов к Пикодате.

Установка

cargo install picodata-pike

Quickstart

Начнем работу с новым плагином:

cargo pike plugin new test_plugin

cd test_plugin

Запустим кластер, конфигурацию которого можно задать в ./topology.toml

cargo pike run

В вашем распоряжении окажется рабочий кластер с установленным плагином. Остановим кластер комбинацией Ctrl+C или же командой cargo pike stop в отдельном окне.

Если вам нужно собрать архив для поставки на сервера, это можно сделать командой:

cargo pike plugin pack

В папке target появиться желанный архив.

Команды

--help

Для всех команд есть флаг --help выводящий справку по использованию.

cargo pike --help

run

Запуск кластера пикодаты по файлу topology.toml. Автоматически запускает плагины указанные в топологии.

Пример топологии:

[tiers.default]
instances = 2
replication_factor = 2

[[tiers.default.services]]
name = "main"
plugin = "plugin_name"
cargo pike run --topology topology.toml --data-dir ./tmp

Для отключения автоматической установки и включения плагинов можно использовать опцию --disable-install-plugins.

Доступные опции

  • -t, --topology <TOPOLOGY> - Путь к файлу топологии. Значение по-умолчанию: topology.toml
  • -d, --data-dir <DATA_DIR> - Путь к директории хранения файлов кластера. Значение по-умолчанию: ./tmp
  • --disable-install-plugins - Отключение автоматической установки плагинов
  • -b, --base-http-port <BASE_HTTP_PORT> - Базовый http-порт, с которого начнут открываться http-порты отдельных инстансов. Значение по-умолчанию: 8000
  • -b, --base-pg-port <BASE_PG_PORT> - Базовый порт постгрес протокола, с которого начнут открываться порты отдельных инстансов. Значение по-умолчанию: 5432
  • --picodata-path <BINARY_PATH> - Путь до исполняемого файла Пикодаты. Значение по-умолчанию: picodata
  • --release - Сборка и запуск релизной версии плагина.

config.yaml

Пайк позволяет использовать файл конфигурации Пикодаты вместе с запущенным кластером. Пример файла сразу генерируется командами new и init. Документацию к параметрам можно найти в документации к Пикодате.

Настройка нескольких тиров

Для настройки необходимо добавить нужные тиры в конфигурацию кластера (файл config.yaml). И после указать их в файле топологии topology.toml.

Пример добавления тира inokentiy:

# config.yaml

cluster:
  tier:
    default:
      replication_factor: 2
    inokentiy: # новый тир
      replication_factor: 1
# topology.toml

# ...

[tiers.inokentiy] # новый тир
instances = 1
replication_factor = 1

stop

Остановить кластер можно либо комбинацией клавиш Ctrl+C в терминале, где вызывалась команда cargo pike run, либо в другом окне командой:

cargo pike stop --data-dir ./tmp

При помощи --data-dir указывается путь до директории с файлами кластера (значение по умолчанию: ./tmp)

Вывод:

[*] stopping picodata cluster, data folder: ./tmp
[*] stopping picodata instance: i_1
[*] stopping picodata instance: i_2
[*] stopping picodata instance: i_3
[*] stopping picodata instance: i_4

Доступные опции

  • -d, --data-dir <DATA_DIR> - Путь к директории хранения файлов кластера. Значение по-умолчанию: ./tmp

plugin clean

Очистка дата-каталогов пикодаты.

cargo pike clean

Доступные опции

  • -d, --data-dir <DATA_DIR> - Путь к директории хранения файлов кластера. Значение по-умолчанию: ./tmp

plugin new

Создание нового проекта плагина из шаблона.

cargo pike plugin new name_of_new_plugin

Автоматически инициализирует в проект git. Для отключения этого поведения можно воспользоваться флагом --without-git.

Доступные опции

  • --without-git - Отключение автоматической инициализации git-репозитория
  • -w, --workspace - Создание проекта плагина как воркспейса

plugin init

Создание нового проекта плагина из шаблона в текущей папке.

cargo pike plugin init

Автоматически инициализирует в проект git. Для отключения этого поведения можно воспользоваться флагом --without-git.

Доступные опции

  • --without-git - Отключение автоматической инициализации git-репозитория
  • -w, --workspace - Создание проекта плагина как воркспейса

plugin pack

Сборка всех нужных для поставки плагина файлов в один архив (для деплоя или поставки).

cargo pike plugin pack

Команда plugin pack соберёт релизную версию плагина в новый архив в директории target проекта.

Доступные опции

  • --debug - Сборка и упаковка debug-версии плагина

config apply

Применение конфигурации сервисов плагина к запущенному командой run кластеру пикодаты.

Пример файла конфигурации сервисов:

# plugin_config.yaml

main: # имя сервиса
  value: changed # пример параметра конфигурации
cargo pike config apply

Доступные опции

  • -c, --config-path <CONFIG> - Путь к файлу конфига. Значение по-умолчанию: plugin_config.yaml
  • -d, --data-dir <DATA_DIR> - Путь к директории хранения файлов кластера. Значение по-умолчанию: ./tmp

Dependencies

~13–24MB
~377K SLoC