1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2026-01-07 21:18:01 +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
steps:
- 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:
egress-policy: audit
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0
- name: Authenticate as @ohmyzsh
id: generate-token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with:
app-id: ${{ secrets.OHMYZSH_APP_ID }}
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}

View File

@ -26,12 +26,12 @@ jobs:
- macos-latest
steps:
- 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:
egress-policy: audit
- name: Set up git repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install zsh
if: runner.os == 'Linux'
run: sudo apt-get update; sudo apt-get install zsh
@ -47,12 +47,12 @@ jobs:
- test
steps:
- 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:
egress-policy: audit
- name: Checkout
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install Vercel CLI
run: npm install -g vercel
- name: Setup project and deploy

View File

@ -24,12 +24,12 @@ jobs:
if: github.repository == 'ohmyzsh/ohmyzsh'
steps:
- 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:
egress-policy: audit
- name: Set up git repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install zsh
run: sudo apt-get update; sudo apt-get install zsh
- name: Check syntax

View File

@ -17,12 +17,12 @@ jobs:
if: github.repository == 'ohmyzsh/ohmyzsh'
steps:
- 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:
egress-policy: audit
- name: Authenticate as @ohmyzsh
id: generate-token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with:
app-id: ${{ secrets.OHMYZSH_APP_ID }}
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}

View File

@ -36,12 +36,12 @@ jobs:
steps:
- 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:
egress-policy: audit
- name: "Checkout code"
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false
@ -60,6 +60,6 @@ jobs:
retention-days: 5
- 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:
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
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:
@ -10,20 +11,26 @@ plugins=(... uv)
## Aliases
| Alias | Command | Description |
|:----- |------------------------------------------------------------------------ |:-------------------------------------------------------------------- |
| 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` |
| uvl | `uv lock` | Lock the dependencies |
| uvlr | `uv lock --refresh` | Rebuild the lock file without upgrading dependencies |
| uvlu | `uv lock --upgrade` | Lock the dependencies to the newest compatible versions |
| uvp | `uv pip` | Manage pip packages |
| uvpy | `uv python` | Manage Python installs |
| uvpp | `uv python pin` | Pin the current project to use a specific Python version |
| uvr | `uv run` | Run commands within the project's environment |
| 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 |
| uvup | `uv self update` | Update the UV tool to the latest version |
| uvv | `uv venv` | Manage virtual environments |
| Alias | Command | Description |
| :---- | ---------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |
| 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` |
| uvi | `uv init` | Initialize a new project in current workspace and environment. |
| uvinw | `uv init --no-workspace` | Initialize a new project in a new workspace and environment |
| uvl | `uv lock` | Lock the dependencies |
| uvlr | `uv lock --refresh` | Rebuild the lock file without upgrading dependencies |
| uvlu | `uv lock --upgrade` | Lock the dependencies to the newest compatible versions |
| uvp | `uv pip` | Manage pip packages |
| uvpi | `uv python install` | Install a specific version of python |
| uvpl | `uv python list` | Lists all python version installed |
| uvpp | `uv python pin` | Pin the current project to use a specific Python version |
| uvpu | `uv python uninstall` | Remove a specific version of python |
| uvpy | `uv python` | Manage Python installs |
| uvr | `uv run` | Run commands within the project's environment |
| 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 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 uvlr='uv lock --refresh'
alias uvlu='uv lock --upgrade'
alias uvp='uv pip'
alias uvpi='uv python install'
alias uvpl='uv python list'
alias uvpu='uv python uninstall'
alias uvpy='uv python'
alias uvpp='uv python pin'
alias uvr='uv run'
@ -18,6 +23,7 @@ alias uvrm='uv remove'
alias uvs='uv sync'
alias uvsr='uv sync --refresh'
alias uvsu='uv sync --upgrade'
alias uvtr='uv tree'
alias uvup='uv self update'
alias uvv='uv venv'