diff --git a/.gitignore b/.gitignore index 78d22304..48f42de3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ /target */target .env - -# JetBrains IDEs .idea/ diff --git a/docs/ru/config_ru.md b/docs/ru/config_ru.md new file mode 100644 index 00000000..bf982fe8 --- /dev/null +++ b/docs/ru/config_ru.md @@ -0,0 +1,146 @@ +# Конфигурация + +Autin использует два файла конфигурации. Они хранятся в `~/.config/atuin/`. Данные +хранятся в `~/.local/share/atuin` (если не определено другое в XDG\_\*). + +Путь до катклога конфигурации может быть изменён установкой +параметра `ATUIN_CONFIG_DIR`. Например + +``` +export ATUIN_CONFIG_DIR = /home/ellie/.atuin +``` + +## Пользовательская конфигурация + +``` +~/.config/atuin/config.toml +``` + +Этот файл используется когда клиент работает на локальной машине (не сервере). + +See [config.toml](../atuin-client/config.toml) for an example + +### `dialect` + +Этот параметр контролирует как [stats](stats.md) команда обрабатывает данные. +Может принимать одно из двух допустимых значений: + +``` +dialect = "uk" +``` + +или + +``` +dialect = "us" +``` + +По умолчанию - "us". + +### `auto_sync` + +Синхронизироваться ли автоматически если выполнен вход. По умолчанию - да (true) +``` +auto_sync = true/false +``` + +### `sync_address` + +Адрес сервера для синхронизации. По умолчанию `https://api.atuin.sh`. + +``` +sync_address = "https://api.atuin.sh" +``` + +### `sync_frequency` + +Как часто клиент синхронизируется с сервером. Может быть указано в +понятном для человека формате. Например, `10s`, `20m`, `1h`, и т.д. +По умолчанию `1h` + +Если стоит значение 0, Autin будет синхронизироваться после каждой выполненной команды. +Помните, что сервера могут иметь ограничение на количество отправленных запросов. + +``` +sync_frequency = "1h" +``` + +### `db_path` + +Путь до базы данных SQlite. По умолчанию это +`~/.local/share/atuin/history.db`. + +``` +db_path = "~/.history.db" +``` + +### `key_path` + +Путь до ключа шифрования Autin. По умолчанию, +`~/.local/share/atuin/key`. + +``` +key = "~/.atuin-key" +``` + +### `session_path` + +Путь до серверного файла сессии Autin. По умолчанию, +`~/.local/share/atuin/session`. На самом деле это просто API токен. + +``` +key = "~/.atuin-session" +``` + +### `search_mode` + +Определяет, какой режим поиска будет использоваться. Autin поддерживает "prefix", +текст целиком (fulltext) и неточный ("fuzzy") поиск. Режим "prefix" производит +поиск по "запрос\*", "fulltext" по "\*запрос\*", и "fuzzy" использует +[вот такой](#fuzzy-search-syntax) синтаксис. + +По умолчанию стоит значение "prefix" + +### `filter_mode` + +Фильтр, по-умолчанию использующийся для поиска + +| Столбец 1 | Столбец 2 | +|------------------|----------------------------------------------------------| +| global (default) | Искать историю команд со всех хостов, сессий и каталогов | +| host | Искать историю команд с этого хоста | +| session | Искать историю команд этой сессии | +| directory | Искать историю команд, выполненных в текущей папке | + +Режимы поиска могут быть изменены через ctrl-r + + +``` +search_mode = "fulltext" +``` + +#### fuzzy search syntax + +Режим поиска "fuzzy" основан на +[fzf search syntax](https://github.com/junegunn/fzf#search-syntax). + +| Токен | Тип совпадений | Описание | +|-----------|----------------------------|-------------------------------------| +| `sbtrkt` | fuzzy-match | Всё, что совпадает с `sbtrkt` | +| `'wild` | exact-match (В кавычках) | Всё, что включает в себя `wild` | +| `^music` | prefix-exact-match | Всё, что начинается с `music` | +| `.mp3$` | suffix-exact-match | Всё, что заканчивается на `.mp3` | +| `!fire` | inverse-exact-match | Всё, что не включает в себя `fire` | +| `!^music` | inverse-prefix-exact-match | Всё, что не начинается с `music` | +| `!.mp3$` | inverse-suffix-exact-match | Всё, что не заканчивается на `.mp3` | + +Знак вертикальной черты означает логическое ИЛИ. Например, запрос ниже вернет +всё, что начинается с `core` и заканчивается либо на `go`, либо на `rb`, либо на `py`. + +``` +^core go$ | rb$ | py$ +``` + +## Серверная конфигурация + +`// TODO` diff --git a/docs/ru/import_ru.md b/docs/ru/import_ru.md new file mode 100644 index 00000000..993d89b8 --- /dev/null +++ b/docs/ru/import_ru.md @@ -0,0 +1,27 @@ +# `atuin import` + +Autin может импортировать историю из "старого" файла истории + +`atuin import auto` предпринимает попытку определить тип командного интерфейса +(через \$SHELL) и запускает нужный скрипт импорта. + +К сожалению, эти файлы содержат не так много информации, как Autin, так что не +все функции будут доступны с импортированными данными. + +# zsh + +``` +atuin import zsh +``` + +Если у вас есть HISTFILE, то эта команда должна сработать. Иначе, попробуйте + +``` +HISTFILE=/path/to/history/file atuin import zsh +``` + +Этот параметр поддерживает как и упрощённый, так и полный формат. + +# bash + +TODO diff --git a/docs/ru/key-binding_ru.md b/docs/ru/key-binding_ru.md new file mode 100644 index 00000000..487d34b9 --- /dev/null +++ b/docs/ru/key-binding_ru.md @@ -0,0 +1,39 @@ +# Key binding + +По умолчанию, Autin будет переназначать Ctrl-r и клавишу 'стрелка вверх'. +Если вы не хотите этого, установите параметр ATUIN_NOBIND прежде чем вызывать `atuin init` + +Например, + +``` +export ATUIN_NOBIND="true" +eval "$(atuin init zsh)" +``` + +Таким образом вы можете разрешить переназначение клавиш Autin, если это необходимо. +Делайте это до инициализирующего вызова. + +# zsh + +Autin устанавливает виджет ZLE "\_atuin_search_widget" + +``` +export ATUIN_NOBIND="true" +eval "$(atuin init zsh)" + +bindkey '^r' _atuin_search_widget + +# зависит от режима терминала +bindkey '^[[A' _atuin_search_widget +bindkey '^[OA' _atuin_search_widget +``` + +# bash + +``` +export ATUIN_NOBIND="true" +eval "$(atuin init bash)" + +# Переопределите ctrl-r, и любые другие сочетания горячих клавиш тут +bind -x '"\C-r": __atuin_history' +``` diff --git a/docs/ru/list_ru.md b/docs/ru/list_ru.md new file mode 100644 index 00000000..38c0f7b4 --- /dev/null +++ b/docs/ru/list_ru.md @@ -0,0 +1,11 @@ +# Вывад истории на экран + +``` +atuin history list +``` + +| Аргумент | Описание | +|----------------|--------------------------------------------------------------------------------| +| `--cwd/-c` | Каталог, историю команд которой необходимо вывести (по умолчанию все каталоги) | +| `--session/-s` | Выводит историю команд только текущей сессии (по умолчанию false) | +| `--human/-h` | Читаемый формат для времени и периодов времени (по умолчанию false) | diff --git a/docs/ru/search_ru.md b/docs/ru/search_ru.md new file mode 100644 index 00000000..0219c12a --- /dev/null +++ b/docs/ru/search_ru.md @@ -0,0 +1,39 @@ +# `atuin search` + +``` +atuin search +``` + +Поиск в Atuin также поддерживает wildcards со знаками `*` или `%`. +По умолчанию, должен быть указан префикс (т.е. все запросы автоматически дополняются wildcard -ами) + + +| Аргумент | Описание | +|--------------------|---------------------------------------------------------------------------------------------| +| `--cwd/-c` | Каталог, для которого отображается история (по умолчанию, все каталоги)) | +| `--exclude-cwd` | Исключить команды которые запускались в этом каталоге (по умолчанию none) | +| `--exit/-e` | Фильтровать по exit code (по умолчанию none) | +| `--exclude-exit` | Исключить команды, которые завершились с указанным значением (по умолчанию none) | +| `--before` | Включить только команды, которые были запущены до указанного времени (по умолчанию none) | +| `--after` | Включить только команды, которые были запущены после указанного времени (по умолчанию none) | +| `--interactive/-i` | Открыть интерактивный поисковой графический интерфейс (по умолчанию false) | +| `--human/-h` | Использовать читаемое формавтирование для времени и периодов времени (по умолчанию false) | + +## Примеры + +``` +# Начать интерактивный поиск с текстовым пользовательским интерфейсом +atuin search -i + +# Начать интерактивный поиск с текстовым пользовательским интерфейсом и уже введённым запросом +atuin search -i atuin + +# Искать по всем командам, начиная с cargo, которые успешно завершились +atuin search --exit 0 cargo + +# Искать по всем командам которые завершились ошибками и были вызваны в текущей папке и были запущены до первого апреля 2021 +atuin search --exclude-exit 0 --before 01/04/2021 --cwd . + +# Искать по всем командам, начиная с cargo, которые успешно завершились и были запущены после трёх часо дня вчера +atuin search --exit 0 --after "yesterday 3pm" cargo +``` diff --git a/docs/ru/server_ru.md b/docs/ru/server_ru.md new file mode 100644 index 00000000..25b45abf --- /dev/null +++ b/docs/ru/server_ru.md @@ -0,0 +1,160 @@ +# `atuin server` + +Autin позволяет запустить свой собственный сервер синхронизации, если вы +не хотите использовать мой :) + +Здесь есть только одна субкоманда, `atuin server start`, которая запустит +Autin http-сервер синхронизации + +``` +USAGE: + atuin server start [OPTIONS] + +FLAGS: + --help Prints help information + -V, --version Prints version information + +OPTIONS: + -h, --host + -p, --port +``` + +## config + +Серверная конфигурация лежит отдельно от файла пользовательсокй, даже если +это один и тот же бинарный файл. Серверная конфигурация лежит в `~/.config/atuin/server.toml`. + +Этот файл выглядит как-то так: + +```toml +host = "0.0.0.0" +port = 8888 +open_registration = true +db_uri="postgres://user:password@hostname/database" +``` + +Конфигурация так же может находииться в переменных окружения. + +```sh +ATUIN_HOST="0.0.0.0" +ATUIN_PORT=8888 +ATUIN_OPEN_REGISTRATION=true +ATUIN_DB_URI="postgres://user:password@hostname/database" +``` + +### host + +Адрес хоста, который будет прослушиваться сервером Autin + +По умолчанию это `127.0.0.1`. + +### post + +POST, который будет прослушиваться сервером Autin. + +По умолчанию это `8888`. + +### open_registration + +Если `true`, autin будет разрешать регистрацию новых пользователей. +Установите флаг `false`, если после создания вашего аккаута вы не хотите, чтобы другие +могли пользоваться вашим сервером. + +По умолчанию `false`. + +### db_uri + +Действующий URI postgres, где будет сохранён аккаунт пользователя и история. + +## Docker + +Поддерживается образ Docker чтобы сделать проще развертывание сервера в контейнере. + +```sh +docker run -d -v "$USER/.config/atuin:/config" ghcr.io/ellie/atuin:latest server start +``` + +## Docker Compose + +Использование вашего собственного docker-образа с хостингом вашего собственного Autin может быть реализовано через +файл docker-compose. + +Создайте файл `.env` рядом с `docker-compode.yml` с содержанием наподобие этому: + +``` +ATUIN_DB_USERNAME=atuin +# Choose your own secure password +ATUIN_DB_PASSWORD=really-insecure +``` + +Создайте `docker-compose.yml`: + +```yaml +version: '3.5' +services: + atuin: + restart: always + image: ghcr.io/ellie/atuin:main + command: server start + volumes: + - "./config:/config" + links: + - postgresql:db + ports: + - 8888:8888 + environment: + ATUIN_HOST: "0.0.0.0" + ATUIN_OPEN_REGISTRATION: "true" + ATUIN_DB_URI: postgres://$ATUIN_DB_USERNAME:$ATUIN_DB_PASSWORD@db/atuin + postgresql: + image: postgres:14 + restart: unless-stopped + volumes: # Don't remove permanent storage for index database files! + - "./database:/var/lib/postgresql/data/" + environment: + POSTGRES_USER: $ATUIN_DB_USERNAME + POSTGRES_PASSWORD: $ATUIN_DB_PASSWORD + POSTGRES_DB: atuin +``` + +Запустите службы с помощью `docker-compose`: + +```sh +docker-compose up -d +``` + +### Использование systemd для управления сервером Autin + +`systemd` юнит чтобы управлять службами, контролируемыми `docker-compose`: + +``` +[Unit] +Description=Docker Compose Atuin Service +Requires=docker.service +After=docker.service + +[Service] +# Where the docker-compose file is located +WorkingDirectory=/srv/atuin-server +ExecStart=/usr/bin/docker-compose up +ExecStop=/usr/bin/docker-compose down +TimeoutStartSec=0 +Restart=on-failure +StartLimitBurst=3 + +[Install] +WantedBy=multi-user.target +``` + +Включите и запустите службу командой: + +```sh +systemctl enable --now atuin +``` + +Проверьте, работает ли: + +```sh +systemctl status atuin +``` + diff --git a/docs/ru/shell-completions_ru.md b/docs/ru/shell-completions_ru.md new file mode 100644 index 00000000..56fb1602 --- /dev/null +++ b/docs/ru/shell-completions_ru.md @@ -0,0 +1,20 @@ +# `atuin gen-completions` + +[Shell completions](https://en.wikipedia.org/wiki/Command-line_completion) для Atuin +могут бять сгенерированы путём указания каталога для вывода и желаемого shell через субкомманду `gen-completions`. + +``` +$ atuin gen-completions --shell bash --out-dir $HOME + +Shell completion for BASH is generated in "/home/user" +``` + +Возможные команды для аргумента `--shell`могут быть следующими: + +- `bash` +- `fish` +- `zsh` +- `powershell` +- `elvish` + +Также рекомендуем прочитать [supported shells](./../../README.md#supported-shells). diff --git a/docs/ru/stats_ru.md b/docs/ru/stats_ru.md new file mode 100644 index 00000000..842ad71b --- /dev/null +++ b/docs/ru/stats_ru.md @@ -0,0 +1,40 @@ +# `atuin stats` + +Atuin также может выводить статистику, основанную на истории. Пока что в очень простом виде, +но скоро должно появиться больше возможностей. + +Статистика выводится пока только на английском +Statistics in english only +# TODO + +``` +$ atuin stats day last friday + ++---------------------+------------+ +| Statistic | Value | ++---------------------+------------+ +| Most used command | git status | ++---------------------+------------+ +| Commands ran | 450 | ++---------------------+------------+ +| Unique commands ran | 213 | ++---------------------+------------+ + +$ atuin stats day 01/01/21 # also accepts absolute dates +``` + +Также, может быть выведена статистика всей известной Autin истории: + +``` +$ atuin stats all + ++---------------------+-------+ +| Statistic | Value | ++---------------------+-------+ +| Most used command | ls | ++---------------------+-------+ +| Commands ran | 8190 | ++---------------------+-------+ +| Unique commands ran | 2996 | ++---------------------+-------+ +``` diff --git a/docs/ru/sync_ru.md b/docs/ru/sync_ru.md new file mode 100644 index 00000000..faa661d4 --- /dev/null +++ b/docs/ru/sync_ru.md @@ -0,0 +1,60 @@ +# `atuin sync` + +Autin может сделать резервную копию вашей истории на сервер чтобы обеспечить использование +разными компьютерами одной и той же истории. Вся история будет зашифрована двусторонним шифрованием, +так что сервер _никогда_ не получит ваши данные! + +Можно сделать свой сервер (запустив `atuin server start`, об этом написано в других +файлах документациии), но у меня есть свой https://api.atuin.sh. Это серверный адрес по умолчанию, +который может быть изменён в [конфигурации](config_ru.md). Опять же, я _не_ могу получить ваши данные +и они мне не нужны. + +## Частота синхронизации + +Синхронизация будет происходить автоматически, если обратное не было указано в конфигурации. +Отконфигурировать сей параметр можно в [config](config_ru.md) + +## Синхронизация + +Синхронизироваться также можно вручную, используя команду `atuin sync` + +## Регистрация + +Можно зарегистрировать аккаунт для синхронизации: + +``` +atuin register -u -e -p +``` + +Имена пользователей должны быть уникальны, и электронная почта должна использваться +только для срочных уведомлений (изменения политик, нарушения безопасности и т.д.) + +Псоле регистрации, вы уже сразу вошли в свой аккаунт :) С этого момента синхронизация +будет проходить автоматически + +## Ключ + +Поскольку все данные шифруются, Autin при работе сгенерирует ваш ключ. Он будет сохранён в +каталоге с данными Autin (`~/.local/share/atuin` на системах с GNU/Linux) + +Также можно сделать это самим: + +``` +atuin key +``` + +Никогда не передавайте никому этот ключ! + +## Вход + +Если вы хотите войти с другого компьютера, вам потребуется ключ безопасности (`atuin key`). + +``` +atuin login -u -p -k +``` + +## Выход + +``` +atuin logout +```