1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2026-04-10 16:32:00 +00:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Evgenii Orlov
f92a185ed5 Merge a2b5bfd435 into 9e2c1548c3 2026-04-01 17:24:28 +02:00
dependabot[bot]
9e2c1548c3 chore(deps): bump github/codeql-action from 4.34.1 to 4.35.1 (#13654)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 09:53:36 +02:00
Adam Alston
cb13cc539f docs(vscode): align README with current CLI behavior (#13653) 2026-03-29 08:02:29 +02:00
Evgenii Orlov
a2b5bfd435 Fixes #13112 Consolidate symfony, symfony2, and symfony6 plugins into a single Symfony plugin 2025-06-19 16:55:23 +02:00
8 changed files with 261 additions and 49 deletions

View File

@@ -60,6 +60,6 @@ jobs:
retention-days: 5
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
with:
sarif_file: results.sarif

View File

@@ -1,9 +1,49 @@
# Symfony
This plugin provides completion for [Symfony](https://symfony.com/).
This plugin provides unified completion and aliases for [Symfony](https://symfony.com/) across all versions (Symfony 1.x, 2.x, 3.x, 4.x, 5.x, and 6+).
To use it add symfony to the plugins array in your zshrc file.
The plugin automatically detects your Symfony version and console location, using:
- Native completion for Symfony 6.2+ when available
- Legacy completion for older Symfony versions
- Automatic console detection (`bin/console`, `app/console`, `console`, or `symfony`)
To use it add `symfony` to the plugins array in your zshrc file.
```bash
plugins=(... symfony)
```
## Aliases
| Alias | Command | Description |
|---------------|------------------------------|-------------------------------|
| `sf` | Auto-detected console path | Start the symfony console |
| `sfcl` | sf cache:clear | Clear the cache |
| `sfsr` | sf server:run -vvv | Run the dev server |
| `sfcw` | sf cache:warmup | Use the Bundles warmer |
| `sfroute` | sf debug:router | Show the different routes |
| `sfcontainer` | sf debug:container | List the different services |
| `sfgb` | sf generate:bundle | Generate a bundle |
| `sfgc` | sf generate:controller | Generate a controller |
| `sfgcom` | sf generate:command | Generate a command |
| `sfge` | sf doctrine:generate:entity | Generate an entity |
| `sfsu` | sf doctrine:schema:update | Update the schema in Database |
| `sfdc` | sf doctrine:database:create | Create the Database |
| `sfdev` | sf --env=dev | Update environment to `dev` |
| `sfprod` | sf --env=prod | Update environment to `prod` |
## Supported Commands
The plugin provides completion for all of the following console commands:
- `sf` (alias)
- `bin/console`
- `app/console`
- `console`
- `php bin/console`
- `php app/console`
- `php console`
- `php symfony`
## Migration from other Symfony plugins
This unified plugin replaces the need for separate `symfony2` and `symfony6` plugins. If you were previously using either of those plugins, you can simply replace them with this `symfony` plugin in your `.zshrc` file.

View File

@@ -1,13 +1,141 @@
# symfony basic command completion
# Unified Symfony plugin for all versions
# Supports Symfony 2, 3, 4, 5, and 6+ with automatic version detection
_symfony_get_command_list () {
php symfony | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^ :[a-z]+/ { print cat $1; }'
_symfony_console_path() {
if [[ -f "bin/console" ]]; then
echo "bin/console"
elif [[ -f "app/console" ]]; then
echo "app/console"
elif [[ -f "console" ]]; then
echo "console"
elif [[ -f "symfony" ]]; then
echo "symfony"
else
return 1
fi
}
_symfony () {
if [ -f symfony ]; then
compadd `_symfony_get_command_list`
fi
_symfony_console_command() {
local console_path
console_path=$(_symfony_console_path)
if [[ -n "$console_path" ]]; then
if [[ "$console_path" == "symfony" ]]; then
echo "php symfony"
else
echo "php $console_path"
fi
else
return 1
fi
}
compdef _symfony symfony
_symfony_supports_native_completion() {
local console_cmd
console_cmd=$(_symfony_console_command)
if [[ -n "$console_cmd" ]]; then
$console_cmd _complete --no-interaction -szsh -a1 -c1 >/dev/null 2>&1
return $?
fi
return 1
}
_symfony_legacy_completion() {
local console_cmd commands
console_cmd=$(_symfony_console_command)
if [[ -n "$console_cmd" ]]; then
if [[ "$console_cmd" == *"symfony"* ]]; then
commands=$(php symfony 2>/dev/null | sed "1,/Available tasks/d" | awk 'BEGIN { cat=null; } /^[A-Za-z]+$/ { cat = $1; } /^ :[a-z]+/ { print cat $1; }')
else
commands=$($console_cmd --no-ansi 2>/dev/null | sed "1,/Available commands/d" | awk '/^ ?[^ ]+ / { print $1 }')
fi
compadd ${(f)commands}
fi
}
_symfony_native_completion() {
local lastParam flagPrefix requestComp out comp
local -a completions
words=("${=words[1,CURRENT]}") lastParam=${words[-1]}
setopt local_options BASH_REMATCH
if [[ "${lastParam}" =~ '-.*=' ]]; then
flagPrefix="-P ${BASH_REMATCH}"
fi
local console_cmd
console_cmd=$(_symfony_console_command)
if [[ -z "$console_cmd" ]]; then
return 1
fi
requestComp="$console_cmd _complete --no-interaction -szsh -a1 -c$((CURRENT-1))" i=""
for w in ${words[@]}; do
w=$(printf -- '%b' "$w")
quote="${w:0:1}"
if [ "$quote" = \' ]; then
w="${w%\'}"
w="${w#\'}"
elif [ "$quote" = \" ]; then
w="${w%\"}"
w="${w#\"}"
fi
if [ ! -z "$w" ]; then
i="${i}-i${w} "
fi
done
if [ "${i}" = "" ]; then
requestComp="${requestComp} -i\" \""
else
requestComp="${requestComp} ${i}"
fi
out=$(eval ${requestComp} 2>/dev/null)
while IFS='\n' read -r comp; do
if [ -n "$comp" ]; then
comp=${comp//:/\\:}
local tab=$(printf '\t')
comp=${comp//$tab/:}
completions+=${comp}
fi
done < <(printf "%s\n" "${out[@]}")
eval _describe "completions" completions $flagPrefix
return $?
}
_symfony() {
if _symfony_supports_native_completion; then
_symfony_native_completion
else
_symfony_legacy_completion
fi
}
# Aliases
alias sf='$(_symfony_console_command)'
alias sfcl='sf cache:clear'
alias sfsr='sf server:run -vvv'
alias sfcw='sf cache:warmup'
alias sfroute='sf debug:router'
alias sfcontainer='sf debug:container'
alias sfgb='sf generate:bundle'
alias sfgc='sf generate:controller'
alias sfgcom='sf generate:command'
alias sfge='sf doctrine:generate:entity'
alias sfsu='sf doctrine:schema:update'
alias sfdc='sf doctrine:database:create'
alias sfdev='sf --env=dev'
alias sfprod='sf --env=prod'
# Completions for all supported console commands
compdef _symfony sf
compdef _symfony 'php app/console'
compdef _symfony 'php bin/console'
compdef _symfony 'php console'
compdef _symfony 'php symfony'
compdef _symfony 'app/console'
compdef _symfony 'bin/console'
compdef _symfony console

View File

@@ -1,5 +1,10 @@
# Symfony2
> **⚠️ DEPRECATION WARNING**
> This plugin is deprecated and will be removed in a future release.
> **Please migrate to the unified [`symfony`](../symfony/) plugin** which supports all Symfony versions (2.x through 6+).
> Simply change `symfony2` to `symfony` in your `.zshrc` plugins list.
This plugin provides completion for [Symfony 2](https://symfony.com/), as well as aliases for frequent Symfony commands.
To use it add symfony2 to the plugins array in your zshrc file.
@@ -8,6 +13,16 @@ To use it add symfony2 to the plugins array in your zshrc file.
plugins=(... symfony2)
```
## Migration
**Recommended:** Use the unified [`symfony`](../symfony/) plugin instead:
```bash
plugins=(... symfony) # Replace symfony2 with symfony
```
The unified plugin provides the same functionality plus automatic version detection and support for all Symfony versions.
## Aliases
| Alias | Command | Description |

View File

@@ -1,4 +1,11 @@
# Symfony2 basic command completion
#
# DEPRECATION WARNING: This plugin is deprecated and will be removed in a future release.
# Please migrate to the unified 'symfony' plugin which supports all Symfony versions.
# Simply change 'symfony2' to 'symfony' in your .zshrc plugins list.
#
echo "⚠️ WARNING: The 'symfony2' plugin is deprecated. Please use the unified 'symfony' plugin instead." >&2
echo " Change 'symfony2' to 'symfony' in your .zshrc plugins list." >&2
_symfony_console () {
echo "php $(find . -maxdepth 2 -mindepth 1 -name 'console' -type f | head -n 1)"

View File

@@ -1,5 +1,10 @@
# Symfony
> **⚠️ DEPRECATION WARNING**
> This plugin is deprecated and will be removed in a future release.
> **Please migrate to the unified [`symfony`](../symfony/) plugin** which supports all Symfony versions (2.x through 6+).
> Simply change `symfony6` to `symfony` in your `.zshrc` plugins list.
This plugin provides native completion for [Symfony](https://symfony.com/), but requires at least Symfony 6.2.
To use it add `symfony6` to the plugins array in your zshrc file.
@@ -7,3 +12,13 @@ To use it add `symfony6` to the plugins array in your zshrc file.
```bash
plugins=(... symfony6)
```
## Migration
**Recommended:** Use the unified [`symfony`](../symfony/) plugin instead:
```bash
plugins=(... symfony) # Replace symfony6 with symfony
```
The unified plugin provides the same native completion functionality plus automatic version detection and support for all Symfony versions.

View File

@@ -7,6 +7,14 @@
# For the full copyright and license information, please view
# https://symfony.com/doc/current/contributing/code/license.html
#
# DEPRECATION WARNING: This plugin is deprecated and will be removed in a future release.
# Please migrate to the unified 'symfony' plugin which supports all Symfony versions.
# Simply change 'symfony6' to 'symfony' in your .zshrc plugins list.
#
echo "⚠️ WARNING: The 'symfony6' plugin is deprecated. Please use the unified 'symfony' plugin instead." >&2
echo " Change 'symfony6' to 'symfony' in your .zshrc plugins list." >&2
#
# zsh completions for console
#

View File

@@ -1,6 +1,6 @@
# VS Code
This plugin provides useful aliases to simplify the interaction between the command line and VS Code, VSCodium, or Cursor editor.
This plugin provides useful aliases to simplify interaction between the command line and VS Code, VSCodium, or Cursor.
To start using it, add the `vscode` plugin to your `plugins` array in `~/.zshrc`:
@@ -10,46 +10,45 @@ plugins=(... vscode)
## Requirements
This plugin requires to have a flavour of VS Code installed and its executable available in PATH.
This plugin requires one of the supported editors to be installed and its executable to be available in `PATH`.
You can install either:
You can install one of the following:
- VS Code (code)
- VS Code Insiders (code-insiders)
- VSCodium (codium)
- Cursor (cursor)
- VS Code (`code`)
- VS Code Insiders (`code-insiders`)
- VSCodium (`codium`)
- Cursor (`cursor`)
### MacOS
### macOS
While Linux installations will add the executable to PATH, MacOS users might still have to do this manually:
While Linux installations usually add the executable to `PATH`, macOS users might still have to do this manually:
[For VS Code and VS Code Insiders](https://code.visualstudio.com/docs/setup/mac#_launching-from-the-command-line),
open the Command Palette via (F1 or ⇧⌘P) and type shell command to find the Shell Command:
open the Command Palette with `F1` or `Shift+Cmd+P`, then search for the following command:
> Shell Command: Install 'code' command in PATH
[For VSCodium](https://github.com/VSCodium/vscodium/blob/master/DOCS.md#how-do-i-open-vscodium-from-the-terminal),
open the Command Palette via (F1 or ⇧⌘P) and type shell command to find the Shell Command:
open the Command Palette with `F1` or `Shift+Cmd+P`, then search for the following command:
> Shell Command: Install 'codium' command in PATH
For Cursor, open the Command Palette via (F1 or ⌘⇧P) and type shell command to find the Shell Command:
For Cursor, open the Command Palette with `F1` or `Cmd+Shift+P`, then search for the following command:
> Shell Command: Install 'cursor' command in PATH
## Using multiple flavours
## Choosing an editor
If for any reason, you ever require to use multiple flavours of VS Code i.e. VS Code (stable) and VS Code
Insiders, you can manually specify the flavour's executable. Add the following line to the .zshrc file
(between the `ZSH_THEME` and the `plugins=()` lines). This will make the plugin use your manually defined
executable.
If you have multiple supported editors installed, e.g., VS Code (stable) and VS Code Insiders, you can manually
specify which executable the plugin should use. Add the following line to `~/.zshrc` between the `ZSH_THEME`
and `plugins=()` lines. This makes the plugin use your manually defined executable.
```zsh
ZSH_THEME=...
# Choose between one [code, code-insiders, codium, or cursor]
# The following line will make the plugin to open VS Code Insiders
# Invalid entries will be ignored, no aliases will be added
# Choose one of `code`, `code-insiders`, `codium`, or `cursor`.
# The following line makes the plugin open VS Code Insiders.
# Invalid entries are ignored and no aliases are added.
VSCODE=code-insiders
plugins=(... vscode)
@@ -61,29 +60,29 @@ source $ZSH/oh-my-zsh.sh
| Alias | Command | Description |
| ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------- |
| vsc | code . | Open the current folder in VS code |
| vsc `dir` | code `dir` | Open passed folder in VS code |
| vsca `dir` | code --add `dir` | Add folder(s) to the last active window |
| vsc | code . | Open the current folder in VS Code |
| vsc `[args ...]` | code `[args ...]` | Pass arguments through to VS Code, e.g., a file, folder, or CLI flags. |
| vsca `dir` | code --add `dir` | Add one or more folders to the last active window. |
| vscd `file` `file` | code --diff `file` `file` | Compare two files with each other. |
| vscg `file:line[:char]` | code --goto `file:line[:char]` | Open a file at the path on the specified line and character position. |
| vscn | code --new-window | Force to open a new window. |
| vscr | code --reuse-window | Force to open a file or folder in the last active window. |
| vscn | code --new-window | Force opening in a new window. |
| vscr | code --reuse-window | Force opening a file or folder in the last active window. |
| vscw | code --wait | Wait for the files to be closed before returning. |
| vscu `dir` | code --user-data-dir `dir` | Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code. |
| vscu `dir` | code --user-data-dir `dir` | Specifies the directory where user data is stored. Can be used to open multiple distinct instances of Code. |
| vscp `profile` | code --profile `profile` | Specifies the profile to open Code with. |
## Extensions aliases
## Extension aliases
| Alias | Command | Description |
| ----------------------- | ---------------------------------------------------------------- | --------------------------------- |
| vsced `dir` | code --extensions-dir `dir` | Set the root path for extensions. |
| vscie `id or vsix-path` | code --install-extension `extension-id> or <extension-vsix-path` | Installs an extension. |
| vscue `id or vsix-path` | code --uninstall-extension `id or vsix-path` | Uninstalls an extension. |
| Alias | Command | Description |
| --------------------------- | ---------------------------------------------- | -------------------------------------- |
| vsced `dir` | code --extensions-dir `dir` | Set the root directory for extensions. |
| vscie `ext-id or vsix-path` | code --install-extension `ext-id or vsix-path` | Installs or updates an extension. |
| vscue `ext-id` | code --uninstall-extension `ext-id` | Uninstalls an extension. |
## Other options:
## Other options
| Alias | Command | Description |
| ------------ | ------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| vscv | code --verbose | Print verbose output (implies --wait). |
| vscl `level` | code --log `level` | Log level to use. Default is 'info'. Allowed values are 'critical', 'error', 'warn', 'info', 'debug', 'trace', 'off'. |
| vscde | code --disable-extensions | Disable all installed extensions. |
| Alias | Command | Description |
| ------------ | ------------------------- | ---------------------------------------- |
| vscv | code --verbose | Print verbose output (implies `--wait`). |
| vscl `level` | code --log `level` | Log level to use. Default is `info`. |
| vscde | code --disable-extensions | Disable all installed extensions. |