Add Copilot instructions and setup steps

This will allow us to play around with Copilot agents.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Mike McQuaid 2025-07-24 09:18:36 +01:00
parent 50fa89e96b
commit 985a91952a
No known key found for this signature in database
2 changed files with 72 additions and 0 deletions

40
.github/copilot-instructions.md vendored Normal file
View File

@ -0,0 +1,40 @@
# Copilot Instructions for Homebrew/brew
This is a Ruby based repository with Bash scripts for faster execution.
It is primarily responsible for providing the `brew` command for the Homebrew package manager.
Please follow these guidelines when contributing:
## Code Standards
### Required Before Each Commit
- Run `brew typecheck` to verify types are declared correctly using Sorbet.
- Run `brew style --fix` to lint code formatting using RuboCop.
Individual files can be checked/fixed by passing them as arguments.
- Run `brew tests --online` to ensure that RSpec unit tests are passing (although some online tests may be flaky so can be ignored if they pass on a rerun).
Individual test files can be passed with `--only` e.g. to test `Library/Homebrew/cmd/reinstall.rb` with `Library/Homebrew/test/cmd/reinstall_spec.rb` run `brew tests --only=cmd/reinstall`.
### Development Flow
- Write new code (using Sorbet `sig` type signatures and `typed: strict` files whenever possible)
- Write new tests (avoid more than one `:integration_test` per file for speed)
## Repository Structure
- `bin/brew`: Homebrew's `brew` command main Bash entry point script
- `completions/`: Generated shell (`bash`/`fish`/`zsh`) completion files. Don't edit directly, regenerate with `brew generate-man-completions`
- `Library/Homebrew/`: Homebrew's core Ruby (with a little bash) logic.
- `Library/Homebrew/bundle/`: Homebrew's `brew bundle` command.
- `Library/Homebrew/cask/`: Homebrew's Cask classes and DSL.
- `Library/Homebrew/extend/os/`: Homebrew's OS-specific (i.e. macOS or Linux) class extension logic.
- `Library/Homebrew/formula.rb`: Homebrew's Formula class and DSL.
- `docs/`: Documentation for Homebrew users, contributors and maintainers. Consult these for best practices and help.
- `manpages/`: Generated `man` documentation files. Don't edit directly, regenerate with `brew generate-man-completions`
- `package/`: Files to generate the macOS `.pkg` file.
## Key Guidelines
1. Follow Ruby best practices and idiomatic patterns
2. Maintain existing code structure and organisation
3. Write unit tests for new functionality. Use one assertion per test where possible.
4. Document public APIs and complex logic. Suggest changes to the `docs/` folder when appropriate

View File

@ -0,0 +1,32 @@
name: Copilot Setup Steps
on:
workflow_dispatch:
pull_request:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@main
with:
core: true
cask: true
test-bot: true
- run: brew install-bundler-gems --groups=all
# install Homebrew formulae we might need
- run: brew install shellcheck shfmt gh gnu-tar subversion curl
# brew tests doesn't like world writable directories
- run: sudo chmod -R g-w,o-w /home/linuxbrew/.linuxbrew/Homebrew