ddev / ddev-drupal-contrib

DDEV integration for developing Drupal contrib projects
Apache License 2.0
76 stars 16 forks source link

`ddev eslint` breaks due to hyphens in project name #56

Open jameswilson opened 2 months ago

jameswilson commented 2 months ago

Problem Statement

I see the following error:

$ ddev eslint
/mnt/ddev_config/commands/web/eslint: line 16: cd: web/modules/custom/my-module: No such file or directory
Failed to run eslint : exit status 1

The problematic line is this one:

cd "$DDEV_DOCROOT/modules/custom/$DDEV_SITENAME"

Ddev doesn't allow you to create a project name with underscores in it, because it creates an invalid domain name. Therefore, module names that contain underscores (eg "my_module") must be converted to hyphens for the Ddev project name.

When this happens the module name (my_module) is not the same as the Ddev project name (my-module, and so cd web/modules/custom/my-module will fail.

Proposed resolution

If possible refactor the eslint command file to execute eslint from the project root folder ( like all of the other commands currently do). Pass in the path to the project folder as a flag or option to the eslint command, ideally using wildcard syntax $DDEV_DOCROOT/modules/custom/* so that we don't have to decypher the actual project folder name. (I don't think we have an environment variable for this).

xpersonas commented 1 month ago

I'm hitting same issue. All my modules have underscores. I don't know if there's a workaround at this time. If so, please let me know. Just got up and running with this project today so it's all pretty new to me.

rfay commented 1 month ago

Related: will be automatically replaced with hyphen in next DDEV release, but of course you can do the same manually right now in the .ddev/config.yaml.

weitzman commented 1 week ago

So can this issue be closed?

rfay commented 1 week ago

In DDEV v1.23.4, projects automatically are named with underscores replaced with hyphens. Maybe a PR can add ddev_version_constraint: '>=v1.23.4' as a solution to this and not have to do anything else.