Skip to content

[Dev-workflow] Pre-commit hook fails to install on some computers. #5480

@Lewiscowles1986

Description

@Lewiscowles1986

Bug Report

Describe the current, buggy behavior

Pre-commit hooks fail for me using OSx and Windows

Describe how other contributors can replicate this bug

on a clean machine, try composer install. Everything succeeds apart from the "post-install-cmd"

Describe what you expect as the correct outcome

Pre-commit-hooks succeed.

Let us know what environment you are running this on

Windows

OS:     Windows NT 10.0 build 19041 (Windows 10) AMD64
Shell:  C:\WINDOWS\system32\cmd.exe
PHP binary:     C:\php\7.3\php.exe
PHP version:    7.3.10
php.ini used:   C:\php\7.3\php.ini
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       C:\Users\lewis\projects\wp-cli
WP-CLI packages dir:    C:\Users\lewis/.wp-cli/packages/
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.4.0

OSx won't complete the wp-cli setup using wp core install, so wp info command isn't working...

Provide a possible solution

I believe this particular can be solved with a few characters edited.

        "post-install-cmd": [
            "sh utils/git-setup-pre-commit-hook"
        ],

instead of

        "post-install-cmd": [
            "./utils/git-setup-pre-commit-hook"
        ],

Provide additional context/screenshots

Assuming git bash or an equivalent *nix shell is available, the script can be launched by composer. I Believe the OSx behaviour is a regression only new Catallina and later users will experience, due to bash being replaced by zsh. Rather than try to be too smart, I've altered to read sh, which seems to work in linux ubuntu 20.04 (fresh VM), windows 10 with git bash, and OSx.

Perhaps a JS or PHP hook might be a better fit to avoid this altogether in future?

I've confirmed this works with composer 1 (1.10.17 tested) and composer 2 (2.0.7), other than composer 2 being significantly faster there seems to be no difference.

Next-steps could be testing across PHP versions and OS's. I can add a github matrix to test the vendor dependencies if more PHP versions and combinations are desired, but it might be a few weeks before I can get round to that.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions