0976dce8de
Both .sh and .ps1 now build an effective display path by joining CTASK_WORKSPACE with CTASK_LAUNCH_DIR when that variable is set. When launch_dir is present and differs from the slug, the project tag also carries ':<launch_dir>' so the display reflects user-overridden launches. Tasks and pre-v0.5 projects are unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
31 lines
1.3 KiB
Bash
31 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
# ctask status line helper for Claude Code
|
|
# Reads ctask environment variables and prints a formatted context string.
|
|
# Output (task): (ctask:<slug>|<mode>) <workspace_path>
|
|
# Output (project): (ctask:<slug>|<mode>|project) <effective_launch_path>
|
|
# Output (project with distinct launch dir):
|
|
# (ctask:<slug>|<mode>|project:<launch_dir>) <effective_launch_path>
|
|
# The displayed path is the effective launch path (workspace + launch_dir
|
|
# when set), so the status line reflects the directory the user is actually
|
|
# working in. Outputs nothing when not in a ctask session.
|
|
|
|
[ -z "$CTASK_TASK" ] && exit 0
|
|
|
|
# Effective path: workspace root, plus launch_dir when set.
|
|
DISPLAY_PATH="$CTASK_WORKSPACE"
|
|
if [ -n "$CTASK_LAUNCH_DIR" ]; then
|
|
DISPLAY_PATH="$CTASK_WORKSPACE/$CTASK_LAUNCH_DIR"
|
|
fi
|
|
|
|
if [ "$CTASK_TYPE" = "project" ]; then
|
|
# Include the launch dir in the tag only when it differs from the slug
|
|
# (so the default case stays terse).
|
|
if [ -n "$CTASK_LAUNCH_DIR" ] && [ "$CTASK_LAUNCH_DIR" != "$CTASK_TASK" ]; then
|
|
echo "(ctask:${CTASK_TASK}|${CTASK_MODE}|project:${CTASK_LAUNCH_DIR}) ${DISPLAY_PATH}"
|
|
else
|
|
echo "(ctask:${CTASK_TASK}|${CTASK_MODE}|project) ${DISPLAY_PATH}"
|
|
fi
|
|
else
|
|
echo "(ctask:${CTASK_TASK}|${CTASK_MODE}) ${DISPLAY_PATH}"
|
|
fi
|