Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

windows composer array scripts as cghooks, only first gets executed when testing by invoking cghooks ${hook} #118

Open
vardrop opened this issue Jun 7, 2021 · 2 comments

Comments

@vardrop
Copy link

vardrop commented Jun 7, 2021

You can reconstruct this bug by using vardrop/cghooks-test

Description

When defining an array as a composer git hook on windows, only the first in the array gets executed. This bug may be related to running in windows as running the same project in wsl will result in the expected output.

composer.json

{
    "require-dev": {
        "brainmaestro/composer-git-hooks": "^2.8"
    },
    "scripts": {
        "post-install-cmd": "cghooks add --ignore-lock",
        "post-update-cmd": "cghooks update",
        "cghooks": "vendor/bin/cghooks"
    },
    "extra": {
        "hooks": {
            "pre-commit": [
                "echo 1 lorem ipsum",
                "echo 2 dolor eset"
            ]
        }
    },
    "require": {
        "php": "^8.0"
    }
}

I have confirmed that the second script above never actually gets called by replacing echo 2 dolor eset with touch test.txt.

Versions

  • Windows 10 Version 20H2 Build 19042.985
$ php -v
PHP 8.0.7 (cli) (built: Jun  2 2021 00:41:03) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.7, Copyright (c) Zend Technologies

$ composer -V
Composer version 2.1.2 2021-06-07 16:03:06

$ composer show brainmaestro/composer-git-hooks | rg versions
versions : * v2.8.5

$ git --version
git version 2.31.1.windows.1

Expected

When running composer cghooks pre-commit, Id expect the output to be

$ composer cghooks pre-commit
> vendor/bin/cghooks 'pre-commit'
1 lorem ipsum
2 dolor eset

Actual

but given the above configuration it will result in

$ composer cghooks pre-commit
> vendor/bin/cghooks "pre-commit"
1 lorem ipsum

Exceptions

Nevertheless, running git commit works as expected

$ git commit -m "feat: init"
1 lorem ipsum
2 dolor eset
[master (root-commit) 2c129d4] feat: init
(abbreviated)
@BrainMaestro
Copy link
Owner

Hi @vardrop this seems a bit strange especially because when the hook is executed by git itself, it works as expected. Unfortunately, I do not have a Windows machine to reproduce and investigate. Are you willing to do some more investigation? I can assist if needed

@BrainMaestro
Copy link
Owner

Also, thanks a lot for the very detailed report and even a test repo to reproduce it. That's amazing! I wish I could be of more help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants