1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2026-01-24 01:37:27 +08:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Amaan Mujawar
4d17eba92a
Merge 0c733b810a into 72acd2ca90 2025-12-08 08:35:32 -08:00
Mohaiminus Sakib
72acd2ca90
feat(uv): add more useful aliases (#13462)
Co-authored-by: Mohaiminus Sakib <roddur093@gmail.com>
Co-authored-by: Marc Cornellà <marc@mcornella.com>
2025-12-08 16:57:50 +01:00
dependabot[bot]
ddec79ad43
chore(deps): bump actions/checkout from 6.0.0 to 6.0.1 (#13468)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](1af3b93b68...8e8c483db8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-07 18:39:14 +01:00
dependabot[bot]
0ebeae78d0
chore(deps): bump actions/create-github-app-token from 2.2.0 to 2.2.1 (#13470)
Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/actions/create-github-app-token/releases)
- [Commits](7e473efe3c...29824e69f5)

---
updated-dependencies:
- dependency-name: actions/create-github-app-token
  dependency-version: 2.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-07 18:38:44 +01:00
dependabot[bot]
3b66f643e4
chore(deps): bump step-security/harden-runner from 2.13.2 to 2.13.3 (#13471)
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.2 to 2.13.3.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](95d9a5deda...df199fb7be)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.13.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-07 18:38:26 +01:00
dependabot[bot]
953f526dea
chore(deps): bump github/codeql-action from 4.31.5 to 4.31.7 (#13469)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.5 to 4.31.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](fdbfb4d275...cf1bb45a27)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-07 18:38:05 +01:00
Amaan Mujawar
0c733b810a
Update Plugin functions for newer glab versions
Changes:
- Removed unsupported flag '--state opened' from glissue-list'
- Updated glreleases-create to use --name instead of -t
- Updated glrepo-list to remove unsupported --membership flag
2025-09-19 08:24:24 +01:00
Amaan Mujawar
316882dcc1
feat(glab-plugin): enhance GitLab CLI support with additional helpers and aliases
- Added merge request helpers:
  - `glmr-checkout`: checkout MR branch locally
  - `glmr-merge`: merge MR and optionally remove source branch
  - `glmr-list`: list MRs assigned to the current user

- Added issue helpers:
  - `glissue-close`: close an issue
  - `glissue-list`: list open issues assigned to the current user

- Added CI/CD helpers:
  - `glci-retry`: retry a failed pipeline
  - `glci-latest`: view the latest pipeline
  - `glci-status`: open pipeline in browser

- Added repository helpers:
  - `glrepo-clone`: clone a repository
  - `glrepo-list`: list repositories user is a member of
  - `glrepo-open`: open repository in browser
  - `glrepo-starred`: list starred repositories

- Added release helpers:
  - `glrelease-create`: create a release with title and tag

- Added search helper:
  - `glsearch`: search for merge requests and issues by keyword

- Updated README.md:
  - Documented new aliases and helper functions
  - Added usage examples and environment variable notes

This PR improves developer productivity by providing convenient shortcuts and web integrations for managing GitLab repositories, merge requests, issues, pipelines, and releases directly from the terminal.

Closes #13054
2025-09-16 20:02:48 +01:00
9 changed files with 283 additions and 32 deletions

View File

@ -13,17 +13,17 @@ jobs:
contents: write # this is needed to push commits and branches contents: write # this is needed to push commits and branches
steps: steps:
- name: Harden the runner (Audit all outbound calls) - name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
with: with:
egress-policy: audit egress-policy: audit
- name: Checkout - name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Authenticate as @ohmyzsh - name: Authenticate as @ohmyzsh
id: generate-token id: generate-token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0 uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with: with:
app-id: ${{ secrets.OHMYZSH_APP_ID }} app-id: ${{ secrets.OHMYZSH_APP_ID }}
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }} private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}

View File

@ -26,12 +26,12 @@ jobs:
- macos-latest - macos-latest
steps: steps:
- name: Harden the runner (Audit all outbound calls) - name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
with: with:
egress-policy: audit egress-policy: audit
- name: Set up git repository - name: Set up git repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install zsh - name: Install zsh
if: runner.os == 'Linux' if: runner.os == 'Linux'
run: sudo apt-get update; sudo apt-get install zsh run: sudo apt-get update; sudo apt-get install zsh
@ -47,12 +47,12 @@ jobs:
- test - test
steps: steps:
- name: Harden the runner (Audit all outbound calls) - name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
with: with:
egress-policy: audit egress-policy: audit
- name: Checkout - name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install Vercel CLI - name: Install Vercel CLI
run: npm install -g vercel run: npm install -g vercel
- name: Setup project and deploy - name: Setup project and deploy

View File

@ -24,12 +24,12 @@ jobs:
if: github.repository == 'ohmyzsh/ohmyzsh' if: github.repository == 'ohmyzsh/ohmyzsh'
steps: steps:
- name: Harden the runner (Audit all outbound calls) - name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
with: with:
egress-policy: audit egress-policy: audit
- name: Set up git repository - name: Set up git repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install zsh - name: Install zsh
run: sudo apt-get update; sudo apt-get install zsh run: sudo apt-get update; sudo apt-get install zsh
- name: Check syntax - name: Check syntax

View File

@ -17,12 +17,12 @@ jobs:
if: github.repository == 'ohmyzsh/ohmyzsh' if: github.repository == 'ohmyzsh/ohmyzsh'
steps: steps:
- name: Harden the runner (Audit all outbound calls) - name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
with: with:
egress-policy: audit egress-policy: audit
- name: Authenticate as @ohmyzsh - name: Authenticate as @ohmyzsh
id: generate-token id: generate-token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0 uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with: with:
app-id: ${{ secrets.OHMYZSH_APP_ID }} app-id: ${{ secrets.OHMYZSH_APP_ID }}
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }} private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}

View File

@ -36,12 +36,12 @@ jobs:
steps: steps:
- name: Harden the runner (Audit all outbound calls) - name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@95d9a5deda9de15063e7595e9719c11c38c90ae2 # v2.13.2 uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
with: with:
egress-policy: audit egress-policy: audit
- name: "Checkout code" - name: "Checkout code"
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with: with:
persist-credentials: false persist-credentials: false
@ -60,6 +60,6 @@ jobs:
retention-days: 5 retention-days: 5
- name: "Upload to code-scanning" - name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5 uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7
with: with:
sarif_file: results.sarif sarif_file: results.sarif

93
plugins/glab/README.md Normal file
View File

@ -0,0 +1,93 @@
# glab plugin
This plugin adds support for the [GitLab CLI (`glab`)](https://gitlab.com/gitlab-org/cli), a tool to interact with GitLab from the terminal.
## Features
- **Shell completion**: enables `zsh` completions for `glab` automatically if it is installed.
- **Environment setup**: loads `GITLAB_HOST` and `GITLAB_TOKEN` from `~/.netrc` if they are not already set.
- **Aliases**: provides convenient shortcuts for common GitLab CLI commands.
- **Helper functions**: adds extra functions for common GitLab workflows, including merge requests, issues, CI/CD pipelines, repositories, and releases.
## Aliases
| Alias | Command | Description |
|------------ |------------------ |-------------------------------- |
| `gl` | `glab` | Shortcut for `glab` |
| `glmr` | `glab mr` | Manage merge requests |
| `glissue` | `glab issue` | Manage issues |
| `glrepo` | `glab repo` | Manage repositories |
| `glci` | `glab ci` | Manage CI pipelines |
| `glprj` | `glab project` | Manage projects |
| `glrelease` | `glab release` | Manage releases |
## Helper functions
### Merge Requests
- `glmr-open [<MR>]`
Opens a merge request in the browser. If `<MR>` is not specified, opens the current branch MR.
- `glmr-checkout <MR>`
Checks out the merge request branch locally.
- `glmr-merge <MR>`
Merges a merge request and optionally removes the source branch.
- `glmr-list [<args>]`
Lists merge requests assigned to you. Additional `glab mr list` arguments can be passed.
### Issues
- `glissue-new [<title>]`
Creates a new issue. If a title is provided, it is used; otherwise an interactive prompt is opened.
- `glissue-close <issue>`
Closes the specified issue.
- `glissue-list [<args>]`
Lists open issues assigned to you. Additional `glab issue list` arguments can be passed.
### CI/CD
- `glci-status [<args>]`
Opens the current CI pipeline status in the browser.
- `glci-retry <pipeline>`
Retries the specified pipeline.
- `glci-latest`
Shows the latest pipeline.
### Repositories
- `glrepo-clone <project>`
Clones a repository.
- `glrepo-list [<args>]`
Lists all repositories you are a member of.
- `glrepo-open <project>`
Opens a repository in the browser.
- `glrepo-starred [<args>]`
Lists your starred repositories.
### Releases
- `glrelease-create "<title>" "<tag>"`
Creates a new release with the given title and tag.
### Search
- `glsearch <keyword>`
Searches for merge requests and issues matching the keyword.
## Environment variables
The plugin attempts to set the following variables if they are not already defined:
- `GITLAB_HOST` — taken from the first `machine` entry in `~/.netrc`.
- `GITLAB_TOKEN` — the corresponding `password` from `~/.netrc`.
## Usage
1. Install [`glab`](https://gitlab.com/gitlab-org/cli#installation).
2. Enable the plugin in your `.zshrc`:
```zsh
plugins=(git glab)

View File

@ -0,0 +1,145 @@
# Oh My Zsh plugin for GitLab CLI (glab)
# --- Environment setup ---
# Load GITLAB_HOST and GITLAB_TOKEN from ~/.netrc if not already set
if [ -z "$GITLAB_HOST" ] || [ -z "$GITLAB_TOKEN" ]; then
if [ -f "$HOME/.netrc" ]; then
__glab_machine=$(awk '/^machine/{print $2; exit}' "$HOME/.netrc")
__glab_pass=$(awk -v host="$__glab_machine" '$2==host{getline; getline; if($1=="password") print $2}' "$HOME/.netrc")
if [ -n "$__glab_machine" ] && [ -n "$__glab_pass" ]; then
export GITLAB_HOST="$__glab_machine"
export GITLAB_TOKEN="$__glab_pass"
fi
fi
fi
unset __glab_machine __glab_pass
# --- Completions ---
if command -v glab >/dev/null 2>&1; then
eval "$(glab completion -s zsh 2>/dev/null || true)"
fi
# --- Aliases ---
alias gl='glab'
alias glmr='glab mr'
alias glissue='glab issue'
alias glrepo='glab repo'
alias glci='glab ci'
alias glprj='glab project'
alias glrelease='glab release'
# --- Merge Request Helper Functions ---
# Open a merge request in browser
glmr-open() {
glab mr view --web "$@"
}
# Checkout a merge request branch locally
glmr-checkout() {
glab mr checkout "$1"
}
# Merge a merge request
glmr-merge() {
glab mr merge "$1" --remove-source-branch
}
# List merge requests assigned to me
glmr-list() {
glab mr list --assignee "@me" "$@"
}
# --- Issue Helper Functions ---
# Create a new issue with optional title
glissue-new() {
if [ $# -eq 0 ]; then
glab issue create
else
glab issue create -t "$*"
fi
}
# Close an issue
glissue-close() {
glab issue close "$1"
}
# List open issues assigned to me
glissue-list() {
glab issue list --assignee "@me" "$@"
}
# --- CI/CD Helper Functions ---
# Show current CI pipeline status in browser
glci-status() {
glab ci view --web "$@"
}
# Retry a pipeline
glci-retry() {
glab ci retry "$1"
}
# View the latest pipeline
glci-latest() {
latest_id=$(glab ci list --limit 1 --json id -q '.[0].id')
glab ci view "$latest_id"
}
# --- Repository Helper Functions ---
# Clone a project
glrepo-clone() {
glab repo clone "$1"
}
# List all projects Im a member of
glrepo-list() {
glab repo list "$@"
}
# Open a repository in browser
glrepo-open() {
glab repo view --web "$@"
}
# List starred projects
glrepo-starred() {
glab repo list --starred "$@"
}
# --- Release Helper Functions ---
# Create a release: glrelease-create "Title" "Tag"
glrelease-create() {
if [ -z "$1" ]; then
echo "Usage: glrelease-create <tag> [release name]"
return 1
fi
local tag="$1"
local name="${2:-$1}" # Use tag as name if no name provided
glab release create "$tag" --name "$name"
}
# --- Search Helper Function ---
# Search merge requests and issues
glsearch() {
echo "Merge Requests:"
glab mr list --search "$1"
echo ""
echo "Issues:"
glab issue list --search "$1"
}
# --- Optional Auto-completion for Custom Commands ---
# Example: completion for glmr-open
_glmr_open_completion() {
_arguments "1:merge-request ID:_glab_mr"
}
compdef _glmr_open_completion glmr-open

View File

@ -1,6 +1,7 @@
# uv plugin # uv plugin
This plugin automatically installs [uv](https://github.com/astral-sh/uv)'s completions for you, and keeps them up to date. It also adds convenient aliases for common usage. This plugin automatically installs [uv](https://github.com/astral-sh/uv)'s completions for you,
and keeps them up to date. It also adds convenient aliases for common usage.
To use it, add `uv` to the plugins array in your zshrc file: To use it, add `uv` to the plugins array in your zshrc file:
@ -10,20 +11,26 @@ plugins=(... uv)
## Aliases ## Aliases
| Alias | Command | Description | | Alias | Command | Description |
|:----- |------------------------------------------------------------------------ |:-------------------------------------------------------------------- | | :---- | ---------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |
| uva | `uv add` | Add packages to the project | | uva | `uv add` | Add packages to the project |
| uvexp | `uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet` | Export the lock file to `requirements.txt` | | uvexp | `uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet` | Export the lock file to `requirements.txt` |
| uvl | `uv lock` | Lock the dependencies | | uvi | `uv init` | Initialize a new project in current workspace and environment. |
| uvlr | `uv lock --refresh` | Rebuild the lock file without upgrading dependencies | | uvinw | `uv init --no-workspace` | Initialize a new project in a new workspace and environment |
| uvlu | `uv lock --upgrade` | Lock the dependencies to the newest compatible versions | | uvl | `uv lock` | Lock the dependencies |
| uvp | `uv pip` | Manage pip packages | | uvlr | `uv lock --refresh` | Rebuild the lock file without upgrading dependencies |
| uvpy | `uv python` | Manage Python installs | | uvlu | `uv lock --upgrade` | Lock the dependencies to the newest compatible versions |
| uvpp | `uv python pin` | Pin the current project to use a specific Python version | | uvp | `uv pip` | Manage pip packages |
| uvr | `uv run` | Run commands within the project's environment | | uvpi | `uv python install` | Install a specific version of python |
| uvrm | `uv remove` | Remove packages from the project | | uvpl | `uv python list` | Lists all python version installed |
| uvs | `uv sync` | Sync the environment with the lock file | | uvpp | `uv python pin` | Pin the current project to use a specific Python version |
| uvsr | `uv sync --refresh` | "Force" sync the environment with the lock file (ignore cache) | | uvpu | `uv python uninstall` | Remove a specific version of python |
| uvsu | `uv sync --upgrade` | Sync the environment, allowing upgrades and ignoring the lock file | | uvpy | `uv python` | Manage Python installs |
| uvup | `uv self update` | Update the UV tool to the latest version | | uvr | `uv run` | Run commands within the project's environment |
| uvv | `uv venv` | Manage virtual environments | | uvrm | `uv remove` | Remove packages from the project |
| uvs | `uv sync` | Sync the environment with the lock file |
| uvsr | `uv sync --refresh` | "Force" sync the environment with the lock file (ignore cache) |
| uvsu | `uv sync --upgrade` | Sync the environment, allowing upgrades and ignoring the lock file |
| uvtr | `uv tree` | Displays the full dependency tree for the current project environment |
| uvup | `uv self update` | Update the UV tool to the latest version |
| uvv | `uv venv` | Manage virtual environments |

View File

@ -7,10 +7,15 @@ alias uv="noglob uv"
alias uva='uv add' alias uva='uv add'
alias uvexp='uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet' alias uvexp='uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet'
alias uvi='uv init'
alias uvinw='uv init --no-workspace'
alias uvl='uv lock' alias uvl='uv lock'
alias uvlr='uv lock --refresh' alias uvlr='uv lock --refresh'
alias uvlu='uv lock --upgrade' alias uvlu='uv lock --upgrade'
alias uvp='uv pip' alias uvp='uv pip'
alias uvpi='uv python install'
alias uvpl='uv python list'
alias uvpu='uv python uninstall'
alias uvpy='uv python' alias uvpy='uv python'
alias uvpp='uv python pin' alias uvpp='uv python pin'
alias uvr='uv run' alias uvr='uv run'
@ -18,6 +23,7 @@ alias uvrm='uv remove'
alias uvs='uv sync' alias uvs='uv sync'
alias uvsr='uv sync --refresh' alias uvsr='uv sync --refresh'
alias uvsu='uv sync --upgrade' alias uvsu='uv sync --upgrade'
alias uvtr='uv tree'
alias uvup='uv self update' alias uvup='uv self update'
alias uvv='uv venv' alias uvv='uv venv'