Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .devbox/virtenv/bin/initHook.sh
1 change: 1 addition & 0 deletions .devbox/virtenv/bin/venvShellHook.sh
3 changes: 3 additions & 0 deletions .devbox/virtenv/poetry/bin/initHook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh

poetry env use $(command -v python) --directory="${DEVBOX_PYPROJECT_DIR:-$DEVBOX_DEFAULT_PYPROJECT_DIR}" --no-interaction --quiet >&2
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

--directory=... is a Poetry global option and typically must appear before the subcommand (e.g., poetry --directory ... env use ...). As written, poetry env use ... --directory=... may be ignored or error depending on Poetry version. Reorder the command to ensure it consistently targets the intended pyproject directory.

Suggested change
poetry env use $(command -v python) --directory="${DEVBOX_PYPROJECT_DIR:-$DEVBOX_DEFAULT_PYPROJECT_DIR}" --no-interaction --quiet >&2
poetry --directory="${DEVBOX_PYPROJECT_DIR:-$DEVBOX_DEFAULT_PYPROJECT_DIR}" env use $(command -v python) --no-interaction --quiet >&2

Copilot uses AI. Check for mistakes.
55 changes: 55 additions & 0 deletions .devbox/virtenv/python312/bin/venvShellHook.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/sh
set -eu
STATE_FILE="$DEVBOX_PROJECT_ROOT/.devbox/venv_check_completed"
Comment on lines +1 to +3
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description focuses on path filters/triggers, but this PR also introduces Devbox virtualenv/Poetry hook scripts and modifies other workflow examples. Consider updating the PR description to reflect the broader scope or splitting these unrelated changes into separate PRs to keep review/rollback safer.

Copilot uses AI. Check for mistakes.

is_valid_venv() {
[ -f "$1/bin/activate" ] && [ -f "$1/bin/python" ]
}

is_devbox_venv() {
[ "$1/bin/python" -ef "$DEVBOX_PACKAGES_DIR/bin/python" ]
}

create_venv() {
python -m venv "$VENV_DIR" --clear
echo "*\n.*" >> "$VENV_DIR/.gitignore"
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

echo "*\n.*" >> "$VENV_DIR/.gitignore" won’t reliably create a two-line .gitignore in POSIX sh (many echo implementations don’t interpret \n), and >> will append duplicates across runs. Use a portable approach (e.g., printf with real newlines) and overwrite the file rather than appending.

Suggested change
echo "*\n.*" >> "$VENV_DIR/.gitignore"
printf '%s\n' '*' '.*' > "$VENV_DIR/.gitignore"

Copilot uses AI. Check for mistakes.
}

# Check that Python version supports venv
if ! python -c 'import venv' 1> /dev/null 2> /dev/null; then
echo "WARNING: Python version must be > 3.3 to create a virtual environment."
touch "$STATE_FILE"
exit 1
fi

# Check if the directory exists
if [ -d "$VENV_DIR" ]; then
if is_valid_venv "$VENV_DIR"; then
# Check if we've already run this script
if [ -f "$STATE_FILE" ]; then
# "We've already run this script. Exiting..."
exit 0
fi
if ! is_devbox_venv "$VENV_DIR"; then
echo "WARNING: Virtual environment at $VENV_DIR doesn't use Devbox Python."
echo "Do you want to overwrite it? (y/n)"
read reply
echo
Comment on lines +35 to +37
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hook prompts with read reply when the venv isn’t a Devbox venv. If this hook runs in a non-interactive context (e.g., devbox run / CI), it will block indefinitely. Consider detecting non-interactive stdin (or honoring an env var default) and failing fast or choosing a safe default behavior.

Suggested change
echo "Do you want to overwrite it? (y/n)"
read reply
echo
if [ "${DEVBOX_VENV_OVERWRITE:-}" != "" ]; then
reply="$DEVBOX_VENV_OVERWRITE"
elif [ -t 0 ]; then
echo "Do you want to overwrite it? (y/n)"
read reply
echo
else
echo "ERROR: Non-interactive shell cannot prompt to overwrite $VENV_DIR."
echo "Set DEVBOX_VENV_OVERWRITE=y to overwrite it, or DEVBOX_VENV_OVERWRITE=n to keep it."
exit 1
fi

Copilot uses AI. Check for mistakes.
case "$reply" in
[Yy]) echo "Overwriting existing virtual environment..."
create_venv ;;
[Nn]) echo "Using your existing virtual environment. We recommend changing \$VENV_DIR to a different location"
touch "$STATE_FILE"
exit 0 ;;
*) echo "Invalid input. Exiting..."
exit 1 ;;
esac
fi
else
echo "Directory exists but is not a valid virtual environment. Creating a new one..."
create_venv
fi
else
echo "Virtual environment directory doesn't exist. Creating new one..."
create_venv
fi
6 changes: 3 additions & 3 deletions .github/workflows/03-core-features--02-step-types.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ jobs:
say-hello-inline-bash:
runs-on: ubuntu-24.04
steps:
- run: echo "Hello from an inline bash script in a GitHub Action Workflow!"
- run: echo "Hello from an inline bash script in a GitHub Action Workflow! By Deepak"

say-hello-inline-python:
runs-on: ubuntu-24.04
steps:
- run: print("Hello from an inline python script in a GitHub Action Workflow!")
- run: print("Hello from an inline python script in a GitHub Action Workflow! By Deepak")
shell: python

say-hello-action:
Expand All @@ -21,4 +21,4 @@ jobs:
- uses: actions/hello-world-javascript-action@081a6d193d1dcb38460df1e6927486d748730f9d # v1.1
# - uses: actions/hello-world-javascript-action@v1 # This would work, but it would be less stable and less secure:
with:
who-to-greet: "from an action in the GitHub Action marketplace! 👋"
who-to-greet: "from an action in the GitHub Action marketplace! 👋 By Marian"
17 changes: 17 additions & 0 deletions .github/workflows/03-core-features--03-workflows-jobs-steps.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ on:
jobs:
job-1:
runs-on: ubuntu-24.04
needs:
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There’s trailing whitespace after the needs: key (needs: ). This can trip YAML linters and makes diffs noisy; remove the extra space so it’s just needs:.

Suggested change
needs:
needs:

Copilot uses AI. Check for mistakes.
- job-5 # a new job to explore the realtion and working of the jobs in a workflow
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in the inline comment: realtion should be relation.

Copilot uses AI. Check for mistakes.
steps:
Comment on lines +8 to 10
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

job-5 is described as “independent”/able to run in parallel, but job-1 and job-3 now both need job-5, which makes it a prerequisite and changes the DAG/parallelism. Either drop the needs: [job-5] dependencies (if the goal is parallelism) or update the job description/comments to match the intended dependency behavior.

Copilot uses AI. Check for mistakes.
- run: echo "A job consists of"
- run: echo "one or more steps"
- run: echo "which run sequentially"
- run: echo "within the same compute environment"
- run: echo "And now I am adding a few lines of my own here to know and get familiarized with the operations"
job-2:
runs-on: ubuntu-24.04
steps:
Expand All @@ -19,6 +22,7 @@ jobs:
needs:
- job-1
- job-2
- job-5 # a new job to explore the realtion and working of the jobs in a workflow
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in the inline comment: realtion should be relation.

Copilot uses AI. Check for mistakes.
steps:
- run: echo "They can also depend on one another..."
job-4:
Expand All @@ -28,3 +32,16 @@ jobs:
- job-3
steps:
- run: echo "...to form a directed acyclic graph (DAG)"

# By Deepak
job-5:
runs-on: ubuntu-24.04
steps:
- run: echo "This is a new job that I have added to this workflow which is independent of the other jobs and can run in parallel with them."
- run: echo "This is a second step in the new job of this workflow"

# By Deepak
job-6:
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There’s trailing whitespace after the job id key (job-6: ). Removing it avoids whitespace-only diffs and potential YAML lint failures.

Suggested change
job-6:
job-6:

Copilot uses AI. Check for mistakes.
runs-on: ubuntu-24.04
steps:
- run: echo "This job is independent of all and runs in parallel with all the other jobs in this workflow"
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ on:

### https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#schedule
# schedule:
# - cron: "0 0 * * *" # Midnight UTC
# - cron: "0 0 * * *" # Midnight UTC
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commented schedule example is mis-indented: # - cron: ... is shown under # schedule: with extra indentation, so if someone uncomments it they’ll end up with invalid YAML. Adjust the comment indentation to match the actual structure (e.g., keep the - cron aligned under schedule:).

Suggested change
# - cron: "0 0 * * *" # Midnight UTC
# - cron: "0 0 * * *" # Midnight UTC

Copilot uses AI. Check for mistakes.

## Manual Trigger
workflow_dispatch:
Expand Down