diff --git a/plugins/docker-compose/README.md b/plugins/docker-compose/README.md index 5a0290462474c..01d4df1cb5227 100644 --- a/plugins/docker-compose/README.md +++ b/plugins/docker-compose/README.md @@ -2,7 +2,7 @@ This plugin provides completion for [docker-compose](https://docs.docker.com/compose/) as well as some aliases for frequent docker-compose commands. -This plugin chooses automatically between the legacy `docker-compose` command and the modern +This plugin chooses automatically between the legacy `docker-compose` command and the modern `docker compose` subcommand, preferring `docker-compose` when both are available. To use it, add docker-compose to the plugins array of your zshrc file: @@ -17,6 +17,7 @@ plugins=(... docker-compose) |-----------|----------------------------------|----------------------------------------------------------------------------------| | dco | `docker-compose` | Docker-compose main command | | dcb | `docker-compose build` | Build containers | +| dcc | `docker-compose config` | Parse, resolve and render compose file in canonical format | | dce | `docker-compose exec` | Execute command inside a container | | dcps | `docker-compose ps` | List containers | | dcrestart | `docker-compose restart` | Restart container | diff --git a/plugins/docker-compose/docker-compose.plugin.zsh b/plugins/docker-compose/docker-compose.plugin.zsh index 7863c4f39090c..97dd864b8a107 100644 --- a/plugins/docker-compose/docker-compose.plugin.zsh +++ b/plugins/docker-compose/docker-compose.plugin.zsh @@ -6,6 +6,7 @@ alias dco="$dccmd" alias dcb="$dccmd build" +alias dcc="$dccmd config" alias dce="$dccmd exec" alias dcps="$dccmd ps" alias dcrestart="$dccmd restart" diff --git a/plugins/eza/eza.plugin.zsh b/plugins/eza/eza.plugin.zsh index 1ee86018d695f..8809d8f37a263 100644 --- a/plugins/eza/eza.plugin.zsh +++ b/plugins/eza/eza.plugin.zsh @@ -52,8 +52,13 @@ function _configure_eza() { if [[ $_val ]]; then _EZA_TAIL+=("--time-style='$_val'") fi - if zstyle -t ":omz:plugins:eza" "hyperlink"; then - _EZA_TAIL+=("--hyperlink") + if zstyle -t ':omz:plugins:eza' 'hyperlink'; then + # eza >= 0.23 needs an explicit WHEN value + if command eza --hyperlink=auto --version &>/dev/null; then + _EZA_TAIL+=("--hyperlink=auto") + else + _EZA_TAIL+=("--hyperlink") + fi fi } diff --git a/plugins/rails/README.md b/plugins/rails/README.md index f023031a6a318..5a3d0bf080b80 100644 --- a/plugins/rails/README.md +++ b/plugins/rails/README.md @@ -54,6 +54,33 @@ plugins=(... rails) | `rta` | `rails test:all` | Runs all Rails tests, including system tests | | `ru` | `rails runner` | Run Ruby code in the context of Rails | +### Multiple databases + +Rails applications can define more than one database (`primary`, `cache`, `cable`, +`queue`, ...), and each one gets its own namespaced task. These commands accept an +optional database name as the first argument: + +`rdc`, `rdd`, `rdm`, `rdmd`, `rdmr`, `rdms`, `rdmu`, `rdr`, `rdrs`, `rdsl` + +```zsh +rdm # rails db:migrate +rdm cache # rails db:migrate:cache +rdm VERSION=20231225 # rails db:migrate VERSION=20231225 +rdm cache STEP=2 # rails db:migrate:cache STEP=2 +rdm --trace # rails db:migrate --trace +``` + +The first argument is read as a database name only when it is a bare word. Flags +(`--trace`), variables (`STEP=2`) and other tasks (`db:seed`) are passed through to +`rails` unchanged, so previous usage keeps working. When a database name is given, +the resolved command is printed so it is clear which database is being used. + +`rdmrs` is not in the list above because Rails does not define a per-database +`db:migrate:reset` task. + +Note that these are implemented as shell functions rather than aliases, so they will +not appear in the output of `alias`. + ### Foreman | Alias | Command | Description | diff --git a/plugins/rails/rails.plugin.zsh b/plugins/rails/rails.plugin.zsh index 9d503768e0dfb..a01a2368b62d6 100644 --- a/plugins/rails/rails.plugin.zsh +++ b/plugins/rails/rails.plugin.zsh @@ -47,19 +47,9 @@ alias rc='rails console' alias rcs='rails console --sandbox' alias rd='rails destroy' alias rdb='rails dbconsole' -alias rdc='rails db:create' -alias rdd='rails db:drop' -alias rdm='rails db:migrate' -alias rdmd='rails db:migrate:down' -alias rdmr='rails db:migrate:redo' alias rdmrs='rails db:migrate:reset' -alias rdms='rails db:migrate:status' alias rdmtc='rails db:migrate db:test:clone' -alias rdmu='rails db:migrate:up' -alias rdr='rails db:rollback' -alias rdrs='rails db:reset' alias rds='rails db:seed' -alias rdsl='rails db:schema:load' alias rdtc='rails db:test:clone' alias rdtp='rails db:test:prepare' alias rgen='rails generate' @@ -106,6 +96,47 @@ alias rkn='rake notes' alias rksts='rake stats' alias rkt='rake test' +# Database tasks +# +# Rails applications can define more than one database (primary, cache, cable, +# queue, ...). Each one gets its own namespaced task, e.g. `db:migrate:cache`. +# The functions below take an optional database name as the first argument: +# +# rdm -> rails db:migrate +# rdm cache -> rails db:migrate:cache +# rdm VERSION=20231225 -> rails db:migrate VERSION=20231225 +# rdm cache STEP=2 -> rails db:migrate:cache STEP=2 +# rdm --trace -> rails db:migrate --trace +# +# The first argument is read as a database name only when it is a bare word. +# Flags (--trace), variables (STEP=2) and other tasks (db:seed) are passed +# through to rails untouched, so the previous alias behavior still works. +function _rails_db_command() { + local task="$1" + shift + + if [[ $# -gt 0 && "$1" != -* && "$1" != *=* && "$1" != *:* ]]; then + task="$task:$1" + shift + # Echo the resolved task so it is clear which database is being used + local -a cmd=(rails "$task" "$@") + print -u2 -r -- "Running: ${cmd[*]}" + fi + + rails "$task" "$@" +} + +function rdc() { _rails_db_command db:create "$@" } +function rdd() { _rails_db_command db:drop "$@" } +function rdm() { _rails_db_command db:migrate "$@" } +function rdmd() { _rails_db_command db:migrate:down "$@" } +function rdmr() { _rails_db_command db:migrate:redo "$@" } +function rdms() { _rails_db_command db:migrate:status "$@" } +function rdmu() { _rails_db_command db:migrate:up "$@" } +function rdr() { _rails_db_command db:rollback "$@" } +function rdrs() { _rails_db_command db:reset "$@" } +function rdsl() { _rails_db_command db:schema:load "$@" } + # legacy stuff alias sc='ruby script/console' alias sd='ruby script/destroy'