chore(add missing file): add a test helper where I the human can test the agent's work

Chasesomero
Mar 7, 2026, 9:08 PM
RETBRFT2PP2B6RP4TGDA27CHZEK5K67EKQ4MQLAR5HF4LVPFIACAC

Dependencies

  • [2] F435FWSF feat(pijul-qol:move-to-zero): move to laravel zero, why not?

Change contents

  • file addition: pijul-record-with-intent-tags-test-helper (---r------)
    [2.3807]
    #!/usr/bin/env bash
    set -euo pipefail
    SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
    PROJECT_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
    ANI_BIN="${PROJECT_ROOT}/ani"
    TEMP_REPO=""
    TEMP_RCFILE=""
    usage() {
    cat <<'EOF'
    Create a disposable Pijul repo for manually testing `pijul:record-with-intent-tags`.
    Usage:
    scripts/pijul-record-with-intent-tags-test-helper
    Behavior:
    - Creates a temporary repo with a recorded baseline and pending changes.
    - Opens an interactive shell inside that repo.
    - Prints the exact command to run and the files/hunks worth selecting.
    - Deletes the temporary repo automatically when you exit the shell.
    Inside the test shell:
    - Run `record_test` to execute the record-with-tags command against the temp repo.
    - Run `end_test` or `exit` when you are done.
    EOF
    }
    cleanup() {
    local exit_code=$?
    trap - EXIT INT TERM HUP
    if [[ -n "${TEMP_RCFILE}" && -f "${TEMP_RCFILE}" ]]; then
    rm -f "${TEMP_RCFILE}"
    fi
    if [[ -n "${TEMP_REPO}" && -d "${TEMP_REPO}" ]]; then
    rm -rf "${TEMP_REPO}"
    printf '\nCleaned up temporary repo: %s\n' "${TEMP_REPO}"
    fi
    exit "${exit_code}"
    }
    require_command() {
    local command_name="$1"
    if ! command -v "${command_name}" >/dev/null 2>&1; then
    printf 'Missing required command: %s\n' "${command_name}" >&2
    exit 1
    fi
    }
    write_initial_files() {
    cat > "${TEMP_REPO}/README.md" <<'EOF'
    # Demo repo for ani
    This repo exists only for testing `pijul:record-with-intent-tags`.
    ## Quick notes
    - Start with an initial recorded change.
    - Add multiple unrecorded hunks afterward.
    - Use the helper command to try selecting only part of the work.
    ## Checklist
    1. Run the ani command.
    2. Pick a tag or skip it.
    3. Enter a message.
    4. Select only the README hunks.
    EOF
    cat > "${TEMP_REPO}/notes.txt" <<'EOF'
    notes
    - baseline entry
    EOF
    }
    write_pending_changes() {
    cat > "${TEMP_REPO}/README.md" <<'EOF'
    # Demo repo for ani
    This repo exists only for testing `pijul:record-with-intent-tags`.
    Try recording only the README hunks first.
    ## Quick notes
    - Start with an initial recorded change.
    - Add multiple unrecorded hunks afterward.
    - Use the helper command to try selecting only part of the work.
    ## Checklist
    1. Run the ani command.
    2. Pick a tag or skip it.
    3. Enter a message.
    4. Select only the README hunks.
    5. Confirm that `notes.txt` is still pending afterward.
    ## Expected result
    If you only record the README hunks, `pijul diff --short` should still show `M notes.txt`.
    EOF
    cat > "${TEMP_REPO}/notes.txt" <<'EOF'
    notes
    - baseline entry
    - leave this file unselected during the first test run
    EOF
    }
    create_temp_repo() {
    TEMP_REPO="$(mktemp -d "${TMPDIR:-/tmp}/ani-pijul-record-test.XXXXXX")"
    pijul init "${TEMP_REPO}" >/dev/null
    write_initial_files
    (
    cd "${TEMP_REPO}"
    pijul add README.md notes.txt >/dev/null
    EDITOR=true pijul record -m 'feat(test-helper): seed demo repo' >/dev/null
    )
    write_pending_changes
    }
    create_rcfile() {
    TEMP_RCFILE="$(mktemp "${TMPDIR:-/tmp}/ani-pijul-record-shell.XXXXXX")"
    cat > "${TEMP_RCFILE}" <<'EOF'
    record_test() {
    "${ANI_RECORD_TEST_ANI}" pijul:record-with-intent-tags --repository "${PWD}" "$@"
    }
    end_test() {
    exit
    }
    export PS1='(ani-record-test) \w $ '
    EOF
    }
    print_instructions() {
    cat <<EOF
    Temporary repo ready:
    ${TEMP_REPO}
    Changed files waiting to be recorded:
    - README.md (multiple hunks)
    - notes.txt (leave this unselected on your first run)
    Inside the shell, run:
    record_test
    Exact command:
    ${ANI_BIN} pijul:record-with-intent-tags --repository "${TEMP_REPO}"
    Suggested manual check:
    1. Run \`record_test\`.
    2. Enter any message you want.
    3. In the hunk picker, select only the README.md hunks.
    4. After it records, run: pijul diff --short
    5. You should still see: M notes.txt
    When you are done, type \`end_test\` or just \`exit\`.
    The helper will remove the temp repo automatically.
    EOF
    }
    open_test_shell() {
    (
    cd "${TEMP_REPO}"
    export ANI_RECORD_TEST_ANI="${ANI_BIN}"
    export ANI_RECORD_TEST_REPO="${TEMP_REPO}"
    bash --noprofile --rcfile "${TEMP_RCFILE}" -i
    )
    }
    main() {
    case "${1-}" in
    -h|--help)
    usage
    exit 0
    ;;
    "")
    ;;
    *)
    printf 'Unexpected argument: %s\n\n' "${1}" >&2
    usage >&2
    exit 1
    ;;
    esac
    require_command pijul
    require_command bash
    if [[ ! -x "${ANI_BIN}" ]]; then
    printf 'Expected ani executable at %s\n' "${ANI_BIN}" >&2
    exit 1
    fi
    trap cleanup EXIT INT TERM HUP
    create_temp_repo
    create_rcfile
    print_instructions
    open_test_shell
    }
    main "$@"