#!/usr/bin/env bash # # Устанавливает агента-пресет «Юрист по ПО» в пользовательский корень # пресетов DeepSeek Harness ($DSH_HOME/.agent-presets/software-lawyer). # # Использование: # ./agents/software-lawyer/install.sh # установка (идемпотентно) # ./agents/software-lawyer/install.sh --force # перезаписать существующий пресет # # После установки пресет «Юрист по ПО» появляется в списке агентов при # создании новой сессии (обнаружение пресетов читает каталог при каждом # вызове, перезапуск не требуется). set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SOURCE_DIR="$SCRIPT_DIR" DSH_HOME="${DSH_HOME:-$HOME/.dsh}" TARGET_DIR="$DSH_HOME/.agent-presets/software-lawyer" FORCE=0 for arg in "$@"; do case "$arg" in --force|-f) FORCE=1 ;; -h|--help) sed -n '2,14p' "$0" | sed 's/^# \{0,1\}//' exit 0 ;; *) echo "Неизвестный аргумент: $arg" >&2; exit 2 ;; esac done if [[ -d "$TARGET_DIR" && "$FORCE" -ne 1 ]]; then echo "Пресет уже установлен: $TARGET_DIR" echo "Для перезаписи запустите с --force." exit 0 fi mkdir -p "$DSH_HOME/.agent-presets" if [[ -d "$TARGET_DIR" ]]; then rm -rf "$TARGET_DIR" fi mkdir -p "$TARGET_DIR" # Копируем содержимое пресета, исключая сам скрипт установки. shopt -s dotglob for entry in "$SOURCE_DIR"/*; do [[ "$(basename "$entry")" == "install.sh" ]] && continue cp -R "$entry" "$TARGET_DIR"/ done shopt -u dotglob # Пресет-каталоги в DSH создаются с правами владельца (0o700/0o600); копия # наследует umask — приведём к аналогичному виду. chmod -R u+rwX,go-rwx "$TARGET_DIR" echo "Установлено: $TARGET_DIR" echo "Пресет «Юрист по ПО» доступен при создании новой сессии."