Files
MyAiConfiguration/scripts/commands/add-instruction.sh
T

43 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
client=
instruction=
home_path=${HOME:?HOME is required}
while [ $# -gt 0 ]; do
case "$1" in
--client) client=${2:?--client requires a value}; shift 2 ;;
--instruction) instruction=${2:?--instruction requires a value}; shift 2 ;;
--home) home_path=${2:?--home requires a value}; shift 2 ;;
*) printf 'Unknown argument: %s\n' "$1" >&2; exit 1 ;;
esac
done
case "$client" in
codex|Codex) targets=(codex) ;;
claude|Claude) targets=(claude) ;;
both|Both) targets=(codex claude) ;;
'')
read -r -p 'Select client (codex, claude, or both) ' client
case "$client" in
codex|Codex) targets=(codex) ;;
claude|Claude) targets=(claude) ;;
both|Both) targets=(codex claude) ;;
*) printf 'Unknown --client value: %s\n' "$client" >&2; exit 1 ;;
esac
;;
*) printf 'Unknown --client value: %s\n' "$client" >&2; exit 1 ;;
esac
if [ -z "$instruction" ]; then read -r -p 'Instruction ' instruction; fi
if [ -z "${instruction//[[:space:]]/}" ] || [ ${#instruction} -gt 65536 ]; then printf 'Instruction must contain between 1 and 65536 characters.\n' >&2; exit 1; fi
case "$home_path" in /*|[A-Za-z]:[\\/]*) ;; *) printf 'Home path must be absolute.\n' >&2; exit 1 ;; esac
directory="$home_path/.my-ai-configuration/instructions"
mkdir -p -- "$directory"
for target in "${targets[@]}"; do
path="$directory/$target.md"
[ ! -s "$path" ] || [ "$(tail -c 1 -- "$path" | wc -l)" -eq 1 ] || printf '\n' >> "$path"
printf '%s\n' "$instruction" >> "$path"
printf 'Instruction added for %s.\n' "$target"
done