Aliases are defined in the configuration file under the `aliases` key. The configuration is a map of alias name to command. When we run the command the we just do a literal replacement of the alias with the string. So if we have: ```yaml aliases: console: app exec -r console -i --reuse "rails console" ``` Then running `kamal console -r workers` will run the command ```sh $ kamal app exec -r console -i --reuse "rails console" -r workers ``` Because of the order Thor parses the arguments, this allows us to override the role from the alias command. There might be cases where we need to munge the command a bit more but that would involve getting into Thor command parsing internals, which are complicated and possibly subject to change. There's a chance that your aliases could conflict with future built-in commands, but there's not likely to be many of those and if it happens you'll get a validation error when you upgrade. Thanks to @dhnaranjo for the idea!
27 lines
588 B
YAML
27 lines
588 B
YAML
# Aliases
|
|
#
|
|
# Aliases are shortcuts for Kamal commands.
|
|
#
|
|
# For example, for a Rails app, you might open a console with:
|
|
#
|
|
# ```shell
|
|
# kamal app exec -i -r console "rails console"
|
|
# ```
|
|
#
|
|
# By defining an alias, like this:
|
|
aliases:
|
|
console: app exec -r console -i "rails console"
|
|
# You can now open the console with:
|
|
# ```shell
|
|
# kamal console
|
|
# ```
|
|
|
|
# Configuring aliases
|
|
#
|
|
# Aliases are defined in the root config under the alias key
|
|
#
|
|
# Each alias is named and can only contain lowercase letters, numbers, dashes and underscores.
|
|
|
|
aliases:
|
|
uname: app exec -p -q -r web "uname -a"
|