Composter가 관리하는 라이브러리 이름에서 프로젝트 내의 종속 파일 보기

5884 단어 PHPComposertech

개요


PHP 프로젝트에서는 Compooser가 관리하는 라이브러리를 업데이트할 때 파일에 영향을 미치는지 확인하는 스크립트가 제작되었습니다.
프로그램 라이브러리 업데이트 시 동작 확인 등 어디를 확인하는 것이 좋은지 한꺼번에 파악할 수 있어 편리하다.

Script

  • 프로젝트 바로 아래에 다음 스크립트를 만듭니다.composer.json가 같은 디렉터리에 존재하는 것을 전제로 구성에 따라 미세하게 조정해야 한다.
  • 다음 항목에 의존
  • git
  • jq
  • search_dependenty.sh
    #!/bin/sh
    
    if [ "$1" = "" ] ; then
      MESSAGE="No package name."
      echo "\033[31m$MESSAGE\033[m" && exit 1
    fi
    
    # ライブラリのnamespaceを取得。composer.jsonが同じディレクトリにない場合は--working-dirで指定する
    KEY=`composer show -f json $1 | jq -r '.autoload[]|keys[0]'`
    
    MESSAGE="List of files that depend on '$1'.\n"
    # カラー表示
    echo "\033[32m$MESSAGE\033[m"
    
    # ファイル名のみ。特殊な文字列をエスケープしないで検索。
    FILES=`git grep -lF $KEY -- ':!*Test.php'`
    echo "$FILES\n"
    
    COUNT=`echo "$FILES" | wc -l`
    echo "Total Dependent Files:\033[32m${COUNT#      }\033[m"
    
    exit 0
    

    사용법


    샘플 항목의 구성


    다음 구성을 사용하여 이전 스크립트를 실행합니다.
    $ tree
    .
    ├── composer.json
    ├── composer.lock
    ├── search_dependenty.sh
    ├── src
    │   └── SampleService
    │       └── SampleService.php  // guzzlehttp/guzzleに依存するクラス
    └── vendor
    
    composer.json
    {
        "type": "project",
        "autoload": {
            "psr-4": {
                "Sample\\": "src/"
            }
        },
        "require": {
            "guzzlehttp/guzzle": "^7.4"
        }
    }
    

    실행 결과


    $ ./search_dependenty.sh guzzlehttp/guzzle
    List of files that depend on 'guzzlehttp/guzzle'.
    
    src/SampleService/SampleService.php
    
    Total Dependent Files: 1
    

    좋은 웹페이지 즐겨찾기