Composter가 관리하는 라이브러리 이름에서 프로젝트 내의 종속 파일 보기
개요
PHP 프로젝트에서는 Compooser가 관리하는 라이브러리를 업데이트할 때 파일에 영향을 미치는지 확인하는 스크립트가 제작되었습니다.
프로그램 라이브러리 업데이트 시 동작 확인 등 어디를 확인하는 것이 좋은지 한꺼번에 파악할 수 있어 편리하다.
Script
composer.json
가 같은 디렉터리에 존재하는 것을 전제로 구성에 따라 미세하게 조정해야 한다.git
jq
#!/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
Reference
이 문제에 관하여(Composter가 관리하는 라이브러리 이름에서 프로젝트 내의 종속 파일 보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tasteck/articles/3a982bb484121c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)