【问题标题】:Is there a way to filter out the Info from https://repo.packagist.org?有没有办法从 https://repo.packagist.org 过滤掉信息?
【发布时间】:2022-06-19 05:53:54
【问题描述】:

Composer 有时会提供或多或少有用/相关/有趣的“Info from https://repo.packagist.org: ...”。

有没有办法不显示此消息?

也许是一种通过自定义 shell 命令路由它并过滤掉某些字符串的方法?

【问题讨论】:

    标签: shell composer-php


    【解决方案1】:

    有没有办法不显示此消息?

    简短的回答是-q--quiet 命令行选项。它也抑制其他输出。退出状态被保留。

    也许是一种通过自定义 shell 命令路由它并过滤掉某些字符串的方法?

    你还没有共享哪个shell,但这当然是可能的。在您的系统上给定unbuffer(1)bash(1) 作为/bin/bash,您可以在PATH 的早期拥有一个名为composer 的可执行文件,而不是安装的composer(1) 在运行@987654329 时过滤掉该行@unbuffered.

    由于这取决于您的 shell 配置,因此最好使用名为 install.sh 的文件来回答,该文件可以在之后获取:

    # usage: . ./install.sh
    
    utility_name=composer
    utility_path_name="$(which "$utility_name")"
    wrapper_path="$PWD"
    
    if [ "$wrapper_path/$utility_name" = "$utility_path_name" ]; then
      echo "$utility_name: already installed: $utility_path_name" >&2
      return 1
    fi
    
    << STUB tee "$utility_name"
    #!/bin/bash
    COMPOSER="$utility_path_name"
    unbuffer "\$COMPOSER" "\$@" > >(sed -u '/^.*Info from https:\/\/repo\.packagist\.org:/d' )
    STUB
    
    chmod u+x -- "$utility_name"
    
    PATH="$wrapper_path:$PATH"
    
    which "$utility_name"
    
    composer --version
    

    要激活包装器,请获取此文件:

    $ . ./install.sh
    

    然后您可以使用此降噪过滤器运行每个 composer ... 命令。

    实际的包装器相对较薄(在采购install.sh 后输出您的包装器以进行比较,因为路径不同):

    $ cat composer
    #!/bin/bash
    COMPOSER="/home/user/.local/bin/composer"
    unbuffer "$COMPOSER" "$@" > >(sed -u '/^.*Info from https:\/\/repo\.packagist\.org:/d' )
    

    原则上,这与composer 本身无关,只是一个带有sed(1) 的输出过滤器并包装了一个命令行实用程序。


    在 CI 中,您可能希望以不同的方式做事,例如隐藏所有输出,直到发生错误。 chronic(1) 可以做到这一点。

    【讨论】:

      猜你喜欢
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      相关资源
      最近更新 更多