From accffbae81460ad8643ee76ec5b452dc12b0b88e Mon Sep 17 00:00:00 2001 From: Juan Barbat Date: Tue, 14 Jul 2026 21:02:26 -0300 Subject: [PATCH] feat(zsh): load optional Cortex shell integration --- .github/workflows/ci.yml | 3 +++ README.md | 1 + local/env.zsh.example | 1 + scripts/check-cortex-shell-integration.sh | 28 +++++++++++++++++++++++ zsh/zshrc | 6 +++++ 5 files changed, 39 insertions(+) create mode 100755 scripts/check-cortex-shell-integration.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3056c5d..d807bee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,6 +58,9 @@ jobs: jq empty "$file" done < <(git ls-files '*.json') + - name: Check Cortex shell integration + run: ./scripts/check-cortex-shell-integration.sh + - name: Validate TOML configs shell: bash run: | diff --git a/README.md b/README.md index 5f3b887..e51416d 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ Editá `local/env.zsh` (gitignored) para configurar: - `CORTEX_HOME` — raíz canónica de cortex, por defecto `~/.cortex` - `CORTEX_ROOT` — repo principal cortex, por defecto `~/.cortex/cortex` - `CORTEX_DOTFILES_DIR` — repo dotfiles, por defecto `~/.cortex/cortex-dotfiles` +- `CORTEX_SHELL_INTEGRATION` — fragmento zsh opcional administrado por Cortex, por defecto `$CORTEX_HOME/shell/cortex.zsh` - `OPENCODE_DEFAULT_FLAGS` — flags por defecto para `oc` - `INNIT_DIR` y overrides `INNIT_*_DIR` — navegación rápida de subdirectorios - Aliases y paths personales diff --git a/local/env.zsh.example b/local/env.zsh.example index 8ff6406..5f0fd81 100644 --- a/local/env.zsh.example +++ b/local/env.zsh.example @@ -11,6 +11,7 @@ # export CORTEX_HOME="$HOME/.cortex" # export CORTEX_ROOT="$BARBATDEV_DIR/cortex/cortex" # export CORTEX_DOTFILES_DIR="$BARBATDEV_DIR/cortex/cortex-dotfiles" +# export CORTEX_SHELL_INTEGRATION="$CORTEX_HOME/shell/cortex.zsh" # Proyectos personales # export PERSONAL_PROJECTS_DIR="$BARBATDEV_DIR/products" diff --git a/scripts/check-cortex-shell-integration.sh b/scripts/check-cortex-shell-integration.sh new file mode 100755 index 0000000..175a7f3 --- /dev/null +++ b/scripts/check-cortex-shell-integration.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -euo pipefail + +repo_root="$(cd "$(dirname "$0")/.." && pwd)" +tmp_dir="$(mktemp -d)" +trap 'rm -rf "$tmp_dir"' EXIT + +integration="$tmp_dir/cortex.zsh" +printf '%s\n' '_CORTEX_INTEGRATION_PROBE=loaded' > "$integration" + +env CORTEX_SHELL_INTEGRATION="$integration" zsh -f -c ' + source "$1" >/dev/null + [[ "$_CORTEX_INTEGRATION_PROBE" == loaded ]] + (( ! ${+_CORTEX_SHELL_INTEGRATION_PATH} )) +' _ "$repo_root/zsh/zshrc" + +env CORTEX_SHELL_INTEGRATION="$tmp_dir/missing.zsh" zsh -f -c ' + source "$1" >/dev/null + (( ! ${+_CORTEX_INTEGRATION_PROBE} )) +' _ "$repo_root/zsh/zshrc" + +mkdir -p "$tmp_dir/cortex-home/shell" +printf '%s\n' '_CORTEX_DEFAULT_INTEGRATION_PROBE=loaded' > "$tmp_dir/cortex-home/shell/cortex.zsh" + +env -u CORTEX_SHELL_INTEGRATION CORTEX_HOME="$tmp_dir/cortex-home" zsh -f -c ' + source "$1" >/dev/null + [[ "$_CORTEX_DEFAULT_INTEGRATION_PROBE" == loaded ]] +' _ "$repo_root/zsh/zshrc" diff --git a/zsh/zshrc b/zsh/zshrc index 2afc4fa..be6ab0d 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -255,6 +255,12 @@ _LOCAL_ENV="$_DOTFILES_DIR/local/env.zsh" [[ -f "$_LOCAL_ENV" ]] && source "$_LOCAL_ENV" #endregion +#region Cortex Shell Integration +_CORTEX_SHELL_INTEGRATION_PATH="${CORTEX_SHELL_INTEGRATION:-$CORTEX_HOME/shell/cortex.zsh}" +[[ -r "$_CORTEX_SHELL_INTEGRATION_PATH" ]] && source "$_CORTEX_SHELL_INTEGRATION_PATH" +unset _CORTEX_SHELL_INTEGRATION_PATH +#endregion + #region Atuin # Historial de shell con búsqueda avanzada (reemplaza Ctrl+R) if command -v atuin &>/dev/null; then