Skip to content

'ddev composer', ddev exec, and shell commands like ddev drush do not support quotes, breaking lots of things #2547

@marcvangend

Description

@marcvangend

Describe the bug

The way to require a package with an alias, as the Drupal 9 upgrade documentation tells you to do, is composer require "drupal/core:9.0.0 as 8.9.0".

However with ddev composer ... this results in an error:

$ ddev composer require "drupal/core:9.0.0 as 8.9.0" --no-update

                              
  [InvalidArgumentException]  
  Could not find package as.  
                              
  Did you mean one of these?  
      ext-hash                
      ramsey/uuid             
      drupal/zen              
      drupal/cog              
      drupal/bfd              
                              

require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...

composer [require drupal/core:9.0.0 as 8.9.0 --no-update] failed, composer command failed: exit status 1. stderr= 

It seems that ddev composer is stripping out the quotes, which causes "as" to be interpreted as a package name.

To Reproduce
Steps to reproduce the behavior:

  1. Have a standard composer-based Drupal 8 ddev installation.
  2. Run ddev composer require "drupal/core:9.0.0 as 8.9.0" --no-update

Expected behavior
I expect composer to add "drupal/core:9.0.0 as 8.9.0" as a requirement in composer.json.

Version and configuration information (please complete the following information):

  • Host computer OS and Version: macOS Catalina
  • Docker Desktop version: 2.4.0.0
  • ddev version information:
    DDEV-Local version      v1.14.2                                
    commit                  v1.14.2                                
    db                      drud/ddev-dbserver-mariadb-10.2:v1.14.1
    dba                     phpmyadmin/phpmyadmin:5                
    ddev-ssh-agent          drud/ddev-ssh-agent:v1.14.0            
    docker                  19.03.13                               
    docker-compose          1.27.4                                 
    os                      darwin                                 
    router                  drud/ddev-router:v1.14.0               
    web                     drud/ddev-webserver:v1.14.2 
    
  • config.yaml contents for the misbehaving project
    type: drupal8
    docroot: htdocs
    php_version: "7.3"
    webserver_type: nginx-fpm
    router_http_port: "80"
    router_https_port: "443"
    xdebug_enabled: false
    additional_hostnames: []
    additional_fqdns: []
    mariadb_version: "10.3"
    provider: default
    project_tld: lmn.gr
    use_dns_when_possible: true
    timezone: Europe/Amsterdam
    disable_settings_management: true
    
  • Do you have any custom configuration (nginx, php, mysql) in the .ddev folder? If so, have you tried without them?
    Nothing that I'm aware of. Don't think it would matter for this issue anyway.

PS
I realize I'm not on the latest ddev version, but I read the release notes and didn't see anything that would have fixed this meanwhile.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions