Shell¶
The shell feature manages OS/Shell specific behaviors (Windows, Linux/Unix).
For instance, generated binary shims are bash executables on Linux, but .bat files on Windows.
Feature configuration (prefixed with symlinks.
)
Property | Type | Description |
---|---|---|
disabled |
booleanfalse |
Should this feature be disabled ? |
aliases |
dict[string, string] | Allow the creation of aliases. |
global_aliases |
string[] | Aliases matching those names are available globally instead of inside project only. |
Property | Type | Description |
---|---|---|
envignore |
string[]["PYENV_*", "_", "PS1", "PS2", "PS3", "PS4", "PWD"] |
When activating ddb for a project via $(ddb activate) , environment variables are saved before being updated. This list is those who will not be saved and updated by the command. |
path.directories |
string[][".bin", "bin"] |
List of directories to add to PATH environment variable when running $(ddb activate) . The first one from this list is also used as root folder for binaries and aliases shims generation. |
path.prepend |
bolleantrue |
Should paths declared in path.directories be placed at the begging of PATH environment variable. If set to false , it will be added to the end. |
Property | Type | Description |
---|---|---|
shell |
stringbash (linux)bash (macos)cmd (windows) |
Type of shell to work with. Currently, only bash and cmd (windows) are supported. |
Environment activation¶
ddb is generating configurations for your project and brings docker container binaries right in your development environment.
If you have registered binary inside docker-compose.yml.jsonnet
, you can found binary shims inside .bin
directory.
It means that you need to be in the root folder of your project, or to add the full path to the executable file if you
are not.
The best solution is to update your PATH
. ddb provides you a way to do it by running the $(ddb activate)
command in your shell.
This command will generate environment variables updates commands and execute them, including PATH
update for easy
to access stored in the .bin
folder of your project from anywhere.
Changes to environment are local and not persistent
The modification of the shell environment is local to your current shell session.
It means that if you open a new one, the environment will be the same as before run the $(ddb activate)
command.
But what happen when switching to another project ?
The environment variables will still be configured for the project you ran the command for. So before leaving his directory,
you will need to run $(ddb deactivate)
command.
It will unload the project specific environment variable configuration and restore it to the initial state.
Now you can move to the new project directory and run $(ddb activate)
once again, and so on.
If you are as lazy as we are ...
In order to automate this process, check SmartCD Feature. It will run those commands when entering
and leaving the project directory containing the ddb.yml
file.
Docker binary shims¶
If you are using Jsonnet templates with ddb.Binary()
function, this means that you want to have
simple access to command execution inside docker containers.
As the generation of the shims depends on your specific shell (cmd.exe, bash, ...), it is handled by the shell feature.
Each declared binary inside .jsonnet
file generates a shim inside the .bin
project directory
(directory configured in shell.path.directories[0]
), and available in your shell after running $(ddb activate)
.
Access to PostgreSQL commands the native way
If you have a PostgreSQL container, you may need to run commands like ...
- psql
- PostgreSQL client binary.
- pg_dump
- PostgreSQL command line tool to export data to a file.
Instead of writing a long and impossible to remember docker commmand, you should declare them using ddb.Binary()
function in docker-compose.yml.jsonnet
file.
local ddb = import 'ddb.docker.libjsonnet';
ddb.Compose({
services: {
db: ddb.Image("postgres") +
ddb.Binary("psql", "/project", "psql --dbname=postgresql://postgres:ddb@db/postgres") +
ddb.Binary("pg_dump", "/project", "pg_dump --dbname=postgresql://postgres:ddb@db/postgres") +
{
environment+: {POSTGRES_PASSWORD: "ddb"},
volumes+: [
'db-data:/var/lib/postgresql/data',
ddb.path.project + ':/project'
]
}
}
})
Then, run ddb configure
, which will generate executable shim file in the .bin
folder.
Finaly, run $(ddb activate)
to update your PATH
and bring those commands to your local environment.
Now, psql
and pg_dump
are available as if they were native commands.
Aliases Management¶
On your environment, aliases can be manually created in order to save time on repetitive commands execution or on long instructions. Some of those aliases are really useful only in a specific project context.
The shell feature allows you to create your own aliases which will be generated the same way as jsonnet ddb.Binary().
In order to declare them, you need to update the ddb configuration with the list of aliases :
shell:
aliases:
myAlias: theLongCommandToExecute
Make a composer dependency available globally
When you are working on PHP/Composer project, some commands are available inside vendor
path.
For drupal developers, Drush commands is available through vendor/drush/drush/drush
binary.
Instead of writing the full path of this binary each time, you can declare an alias in ddb configuration.
shell:
aliases:
drush: vendor/drush/drush/drush
A binary shim will be created and added to the PATH
thanks to ddb so you will able to use it from you project
root folder:
drush cr