Tooling
Each Lando Pantheon recipe will also ship with the Pantheon toolchain. This means you can use drush, wp-cli and terminus via Lando and avoid mucking up your actual computer trying to manage php versions and tooling.
lando composer Runs composer commands
lando db-export [file] Exports database from a database service to a file
lando db-import <file> Imports a dump file into a database service
lando drush Runs drush commands
lando drupal Runs drupal console commands
lando mysql Drops into a MySQL shell on a database service
lando php Runs php commands
lando pull Pull code, database and/or files from Pantheon
lando push Push code, database and/or files to Pantheon
lando switch Switch to a different multidev environment
lando terminus Runs terminus commands
lando version Displays the lando versionNote that the above commands can differ by your recipes framework. The above are for framework: drupal8. We recommend you run lando in your app for a complete and up to date listing of your tooling.
# Login to terminus with a machine token
lando terminus auth:login --machine-token=MYSPECIALTOKEN
# Get a list of wp-cli commands
# Only available for framework: wordpress
lando wp
# Download a dependency with drush
lando drush dl views
# Download a dependency with composer
lando composer config repositories.drupal composer https://packages.drupal.org/8
lando composer require "drupal/search_api_pantheon ~1.0" --prefer-dist
# Download a backdrop dependency
lando drush dl webformCustomizing Pantheon tooling
If you would like to customize lando pull, lando push or lando switch you can do so using tooling or tooling overrides directly to achieve your specific use case. This should allow you to:
- Disable Pantheon tooling
- Provide additional
pull,pushorswitchuse cases - Override the default
pull,pushorswitchfunctionality - Remove interactive choices
disable all commands that interact with Pantheon
tooling:
pull: disabled
push: disabled
switch: disabledadd a custom, non-interactive command that only gets files and database from live
tooling:
pull-live-data:
service: appserver
cmd: /helpers/pull.sh --code=none --database=live --files=liveoverride the default lando pull command so it never pull code
tooling:
pull:
description: Pull things except code
options:
code:
default: noneoverride the default lando push command so it never pushes the database
This is a good idea
Putting database config into code via features or cmi and pushing that is consider a best practice so this is a good override for professionals.
tooling:
push:
description: Pro push
options:
database:
default: noneUsing Drush
Lando will look for a pantheon.yml (and/or pantheon.upstream.yml) in your app's root directory and will globally install whatever drush_version you've specified there. However, it will not go below Drush 8. This means that if you've specified Drush 5, Lando will still install Drush 8.
If this has not been specified then we will globally install the latest version of Drush 8 unless you are running on php 5.3 in which case we will install the latest version of Drush 7. For Backdrop sites, we will also install the latest version of Backdrop Drush.
This means that you should be able to use lando drush out of the box. That said, you can easily change the Drush installation behavior if you so desire.
If you decide to list drush as a dependency in your project's composer.json then Lando will use that one instead. You should be careful if you use Drush 9 as this is not currently officially supported by Pantheon.
Configuring your root directory
If you are using web_docroot in your pantheon.yml, you will need to remember to cd into that directory and run lando drush from there. This is because many site-specific drush commands will only run correctly if you run drush from a directory that also contains a Drupal site.
If you are annoyed by having to cd into that directory every time you run a drush command, you can get around it by overriding the drush tooling command in your Landofile so that Drush always runs from your webroot.
Note that hard coding the root like this may have unforeseen and bad consequences for some drush commands such as drush scr.
tooling:
drush:
service: appserver
cmd: drush --root=/app/PATH/TO/WEBROOTURL Setup
To set up your environment so that commands like lando drush uli return the proper URL, you will need to configure Drush in your relevant settings.php file.
Drupal 7
// Set the base URL for the Drupal site.
$base_url = "http://mysite.lndo.site"Drupal 8
$options['uri'] = "http://mysite.lndo.site";Using Terminus
You should be able to use terminus commands in the exact same way by prefixing them with lando (e.g. lando terminus auth:whoami).
Terminus Plugins
By default, Lando will only install terminus proper but you can add Terminus Plugins to your Landofile with a build step.
You will want to consult the relevant install instructions for each plugin but an example that installs the Terminus Build Tools plugin is shown below:
services:
appserver:
build:
- mkdir -p ~/.terminus/plugins
- composer create-project -d ~/.terminus/plugins pantheon-systems/terminus-build-tools-plugin:~1